使用verilog读取文本中存储的二进制值

使用verilog读取文本中存储的二进制值,verilog,Verilog,我正在进行一个项目,在这个项目中,我必须从文本文件中读取5位二进制值。我必须读取每个5位二进制数,然后将它们逐个分配给5个不同的1位寄存器。此外,我不能使用“memreadb”,因为我的文本文件太大,几乎有2mb,我认为“memreadb”不能处理这么大的文件,因为它在我的情况下不起作用。所以,谁能告诉我如何使用“fopen”和“fread”函数来解决我的问题,因为我到目前为止还没有在Verilog中处理文件。有人能给我举个类似我的问题的例子吗 谢谢 Sami您可以使用$fscanf一次读取一行

我正在进行一个项目,在这个项目中,我必须从文本文件中读取5位二进制值。我必须读取每个5位二进制数,然后将它们逐个分配给5个不同的1位寄存器。此外,我不能使用“memreadb”,因为我的文本文件太大,几乎有2mb,我认为“memreadb”不能处理这么大的文件,因为它在我的情况下不起作用。所以,谁能告诉我如何使用“fopen”和“fread”函数来解决我的问题,因为我到目前为止还没有在Verilog中处理文件。有人能给我举个类似我的问题的例子吗

谢谢


Sami

您可以使用
$fscanf
一次读取一行文件

integer status, fd;
reg [4:0] value;

initial begin
   fd = $fopen("data_file.dat", "r");
   if (!fd) $error("could not read file");
   while (!$feof(fd)) begin
         status = $fscanf(fd,"%b",value);
         // check status, then do what you need to do with value
   end
end

谢谢你抽出时间。我试图使用以下语句显示状态中的值:“$display”(%b),status);”但它没有显示我存储在文件中的原始数据…请在1800-2017 LRM中查找$fscanf。对不起,我没有找到您。。。什么是1800-2017 LRM?