我已经成功编写了一个vhdl代码来读写文件。基本上我读了一个文件,处理文件中的数据并将结果写入另一个文件。 现在我想扩展我的程序来阅读多个测试用例。例如,数据将在名为1.txt,2.txt的不同文件中提供,直到100.txt为止。 我想使用循环逐个读取文件中的数据,并将输出写入不同的文件。任何人都可以帮忙吗?
type i1 is file of character;
file f1 : i1 open READ_MODE is "1.txt";
这是我用于读取文件的代码类型。如何为文件数组扩展它?
答案 0 :(得分:1)
我的博客http://parallelpoints.com/node/66/显示了如何从函数中打开文件并读取数据。
您可以将文件名作为string
类型传递给函数并使用text
个文件:
file file_variable : text;
和...
file_open(file_variable, filename, read_mode);
打开它。
请注意,如果您正在阅读二进制文件,则不同的模拟器会以不同的方式运行。 Modelsim会做你(可能)期望的事情。当读取EOF字符时,我已经使GHDL崩溃了。 Xilinx的模拟器需要在文件上有一个特殊的标题!
即使你必须预先处理纯文本,它也是最便携的。
答案 1 :(得分:0)
我无法在家中尝试此操作,因此这可能无效 - 您是否尝试将代码移动到procedure
,并将文件名作为参数?然后你就可以将它包装在一个简单的for
循环中,并且不会像在generate
循环中将文件名作为泛型一样并行尝试。
答案 2 :(得分:0)
程序read_sample_file ( file_name:in string; ... )是 文件msgFile:text; ... 开始 file_open(msgFile,file_name,READ_MODE);