有没有办法使用 std textio 在 vhdl 中多次读取文件?

2024-01-11

我试图了解如何在 vhdl 中读取文件,如果我打开一个文件,通读它,测试文件结尾,关闭文件,然后重新打开该文件,然后再次开始读取,它会从开头开始吗?文件?

非常感谢


向 VHDL 语言的权威寻求答案。

IEEE 标准 1076-2008

5.5 文件类型
5.5.1 概述

文件类型定义定义文件类型。文件类型用于定义表示主机系统环境中的文件的对象。文件对象的值是主机系统文件中包含的值的序列。

5.5.2 文件操作

FILE_OPEN 过程打开由External_Name 参数指定的外部文件,并将其与文件对象F 关联。如果对FILE_OPEN 的调用成功(见下文),则称该文件对象已打开并且该文件对象具有访问模式取决于提供给 Open_Kind 参数的值(参见 16.3)。

— 如果提供给 Open_Kind 参数的值为 READ_MODE,则文件对象的访问模式为只读。此外,文件对象被初始化,以便后续的 READ 将返回外部文件中的第一个值。值按照它们在外部文件中出现的顺序从文件对象中读取。

...
如果文件对象 F 与外部文件关联,则过程 FILE_CLOSE 终止对与 F 关联的外部文件的访问并关闭该外部文件。如果 F 不与外部文件关联,则 FILE_CLOSE 无效。无论哪种情况,在调用 FILE_CLOSE 将文件对象与形式参数 F 关联起来之后,文件对象都不再打开。
...
程序 READ 从文件中检索下一个值;如果文件对象的访问模式是只写或者文件对象未打开,则会发生错误。过程 WRITE 将一个值附加到文件中。过程 FLUSH 请求实现完成之前对文件的 WRITE 过程的所有调用的效果。对于 WRITE 和 FLUSH 过程,如果文件对象的访问模式是只读或文件未打开,则会出错。如果对访问模式为只读的打开文件对象进行后续 READ 操作可以从文件中检索另一个值,则函数 ENDFILE 返回 FALSE;否则,返回 TRUE。对于访问模式为只写的打开文件对象,函数 ENDFILE 始终返回 TRUE。如果对未打开的文件对象调用 ENDFILE,则会发生错误。

进一步阅读将揭示文件访问是独占的,您无法在没有 FILE_CLOSE 的情况下执行另一个 FILE_OPEN。您可以通过查找后续 FILE_OPEN 而没有前面的 FILE_CLOSE 将返回 STATUS_ERROR 来证明这一点。

因此 FILE_OPEN 从头开始​​访问。重置到文件开头的唯一方法是先 FILE_CLOSE,然后 FILE_OPEN。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法使用 std textio 在 vhdl 中多次读取文件? 的相关文章

  • Altera Quartus 错误 (12007):顶层设计实体“alt_ex_1”未定义

    我看了之前所有的问题 似乎没有人有问题 和我的一样简单 我也在网上搜索过 但找不到解决方案 我是 VHDL 新手 正在尝试编译提供的简单示例 由Altera设计 如下 library ieee use ieee std logic 1164
  • 子状态机

    我有一个有 5 个州的 FSM 其中3个是通过子FSM UML模式 设计的 对于 VHDL 中的实现 恕我直言 有两种方法可以做到这一点 将它们总结为一个 这样我就有了一份包含子 FSM 的文档和一个包含一个大 FSM 的产品 与所有州建立
  • 整数到字符串在综合中出错(宽度不匹配)

    我正在尝试将整数转换为字符串 使用integer image val 并将其填充或限制为特定长度 我已经制作了这个函数 当我使用时它可以很好地完成工作report陈述并模拟 function integer2string pad val i
  • VHDL:按钮去抖动(或不去抖动,视情况而定)

    我已阅读其他帖子 但似乎无法修复我的 我是 VHDL 新手 所以我确信这是一个简单的修复 简而言之 按钮没有防抖 代码编译和比特流程序 在测试台中 按下按钮可以工作 但输出 LED 不会改变 在板上 按下按钮会使随机 LED 亮起 我猜是因
  • VHDL:IEEE std_logic 库中的真值表

    我研究了 IEEE 如何定义其库 当我打开的时候标准逻辑库 我看到了一些被定义为常数的真值表 我不知道真值表是如何运作的 请解释如何使用真值表返回结果 这是我找到的 AND 门 TYPE stdlogic table IS ARRAY st
  • VHDL 中信号何时分配?

    考虑这段代码 architecture synth of my entity is signal a std logic begin a lt c and d b lt a and c end synth 第二行会尊重这一点吗a在其他进程中
  • 我需要多少个进程来监视两个信号?

    我是一名 vhdl 初学者 需要帮助解决我的问题 我有两个需要监控的信号 一个是 CHECK 另一个是 OK 每次我要求检查时 我都应该得到好的结果 高或低 我需要连续监测6个连续的CHECK脉冲 并计数OK 如果我有 6 OK 低 那么我
  • 使用“downto”进行 VHDL std_logic_vector 索引

    我想单独设置 std logic vector 的位 以便轻松设置单个位或位组的注释 这是我所拥有的 signal DataOut std logic vector 7 downto 0 DataOut lt 5 gt 1 Instruct
  • VHDL-读取HEX文件

    In VHDL 从 HEX 文件初始化 std logic vector 数组 https stackoverflow com questions 20164216 vhdl init std logic vector array from
  • 在VHDL中初始化记录数组

    我有一条记录定义如下 type ifx t is record data std logic vector 127 downto 0 address std logic vector 19 downto 0 WrReq std logic
  • Doxygen:使用 C++ 和 VHDL 进行项目的无缝文档

    我正在建立一个关于某种库的文档 该库由 C C 部分和 VHDL 部分以及一些仅包含 doxygen 的指导性页面组成 他们必须被放入一个独立的组中 到目前为止一切正常 漂亮又蓬松 但是如果我想通过使用优化 vhdl 子目录中的输出怎么办O
  • 如何将数组类型作为泛型类型参数传递给 VHDL 包?

    我正在 VHDL 2008 中开发通用包 列表 该包具有元素类型的泛型类型 如果我在包中声明此元素类型的数组类型 那么它就是一个新类型 所以对于例如整数 我的新整数数组将与 ieee 库中的整数向量不兼容 所以我还需要传入数组类型 例如in
  • VHDL - 分配默认值

    我有以下架构 architecture datapath of DE2 TOP is begin U1 entity work lab1 port map error on this line clock gt clock 50 key g
  • ACTIV HDL - VHDL -“信号无法合成,同步描述错误”

    我在 Xilinx 中综合此代码时遇到错误 这个错误是 信号 Z 1 无法合成 同步描述错误 entity uk3 is port rst in BIT C in INTEGER clk in BIT S out INTEGER end u
  • 将 n 位的 std_logic_vector 向右或向左移位

    我有一个向量signal tmp std logic vector 15 downto 0 我必须将它向左或向右移动 n 位 我怎样才能实现这个操作 我想到了串联操作 但我不知道如何使用它 Use the ieee numeric std库
  • VHDL - FSM 未启动(仅在时序仿真中)

    我正在写我的硕士论文 而且我对 VHDL 还很陌生 但我仍然必须实现一些复杂的东西 这是我必须编写的最简单的结构之一 但我仍然遇到了一些问题 它是一个 FSM 采用低电平有效同步信号 用于对 DAC 进行编程 实现 24 位移位寄存器 这只
  • VHDL 计数器错误 (vcom-1576)

    伙计们 我试图用 VHDL 编写一个简单的计数器 但我总是收到此错误 Error C Users usrname dir1 dir2 dir3 counter vhd 22 near rising edge vcom 1576 expect
  • FPGA 系统中的同步与异步复位

    我刚开始使用各种不同的模块创建 FPGA 系统来驱动 I2C 总线 尽管我认为这个问题适用于任何 FPGA 系统 并且所有模块都使用同步复位 这些模块使用时钟分频器模块进行计时 该模块获取系统时钟并向系统的其余部分输出较低的频率 我遇到的问
  • VHDL:如何声明可变宽度通用[重复]

    这个问题在这里已经有答案了 我想创建一个 VHDL 实体 其中一个泛型可以更改另一个泛型的宽度 entity lfsr n is generic WIDTH integer 32 counter width POLYNOMIAL std l
  • 无符号和 std_logic_vector 之间的区别

    谁能告诉我以下书面陈述之间的区别 signal A unsigned 3 downto 0 signal B std logic vector 3 downto 0 Both std logic vector and unsigned ar

随机推荐