使用std textio在vhdl中是否可以多次读取文件?

使用std textio在vhdl中是否可以多次读取文件?,vhdl,Vhdl,我试图理解在vhdl中读取文件是如何工作的如果我打开一个文件,读取它,测试文件的结尾,关闭文件,然后重新打开该文件,然后重新开始读取它会从文件的开头开始吗 非常感谢请向VHDL语言权威咨询您的答案 IEEE标准1076-2008 5.5文件类型 5.5.1概述 文件类型定义定义文件类型。文件类型用于定义表示主机系统环境中文件的对象。文件对象的值是主机系统文件中包含的值序列 5.5.2文件操作 FILE_OPEN过程打开由external_Name参数指定的外部文件,并将其与文件对象F关联。如果调

我试图理解在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,则文件对象的访问模式为只读。此外,文件对象被初始化,以便后续读取将返回外部文件中的第一个值。值是按照它们在外部文件中出现的顺序从文件对象中读取的


如果文件对象F与外部文件关联,则过程文件\u CLOSE将终止对与F关联的外部文件的访问并关闭外部文件。如果F未与外部文件关联,则文件_CLOSE无效。在这两种情况下,调用file_CLOSE将文件对象与形式参数F关联后,文件对象不再打开。

过程读取从文件中检索下一个值;如果文件对象的访问模式为“仅写”或文件对象未打开,则为错误。写入过程向文件追加一个值。过程刷新请求实现完成以前对文件的写入过程的所有调用的效果。对于写入和刷新过程,如果文件对象的访问模式为只读或文件未打开,则为错误。如果访问模式为只读的打开文件对象上的后续读取操作可以从文件中检索另一个值,则函数ENDFILE返回FALSE;否则,它将返回TRUE。对于访问模式为“仅写”的打开文件对象,函数ENDFILE始终返回TRUE。如果对未打开的文件对象调用ENDFILE,则为错误

进一步阅读会发现文件访问是独占的,如果没有文件关闭,您无法执行另一个打开的文件。您可以通过找到一个后续文件来证明这一点,该文件在打开时没有前面的文件,关闭时将返回一个状态错误


因此,打开的文件从一开始就开始访问。重置到文件开头的唯一方法是先关闭文件,然后再打开文件。

只是为了完整性-这取决于您使用的是VHDL-87(现在不太可能),还是93+。没有
查找
/
倒带
/etc操作,但打开文件时会重置文件指针。如果要
查找
,或多次读取文件,每次都需要关闭/打开。对于VHDL-87,在详细说明文件声明时打开文件(如果在体系结构或进程中声明文件,则在正常详细说明期间打开文件,或者在过程中声明时执行过程)。因此,在1987年,通过多次调用您的过程来多次读取文件

'93引入了
文件打开
/
文件关闭
。如果你想做大量的文件处理,你可能应该通过你的模拟器的VHPI在C/C++中完成。

你能发布一篇文章,列出你遇到的错误,如果有,解释你尝试的代码失败的地方以及你希望它做什么吗?