如何使用verilog输出bmp文件?

时间:2018-08-20 03:22:38

标签: verilog binaryfiles

有人要求我将bmp文件中的数据用作verilog模块的模拟输入,并将模拟输出写入新的bmp文件,以便他们可以比较两个不同的bmp文件以检查verilog模块的更正。 我阅读成功,但是在写作时遇到了一些问题。 class="animated" 输出应该是8'h42。但是真正的输出是 enter image description here

不需要零。我猜是因为verilog一次至少将行二进制写入16n位,n> = 1。所以我将第六行更改为 module testsub1; integer fout; initial begin fout=$fopen("C:/Users/gyz/Pictures/testout1.bmp","wb"); $fwrite(fout,"%u",8'h42); $fclose(fout); end endmodule ,结果变为 enter image description here 仍然有一个多余的零。如何使程序每次仅输出8位。

1 个答案:

答案 0 :(得分:0)

verilog fwrite output bytes

在这个问题下,dave_59的解决方案效果很好。

  

您可以使用%c写出一个字节。您可以使用位流转换将数据转换为字节数组,然后执行foreach(array_of_bytes [i])$fwrite(fd,"%c",array_of_bytes[i]);

     

如果您有大量数据,则可能需要通过%u写出4字节的倍数,再用%c写出其余字节来优化此数据。