我是靠谱客的博主 认真小伙,最近开发中收集的这篇文章主要介绍Verilog读写文件以及验证数据准确性,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

       在完成Verilog代码后往往需要先进行功能仿真,而最直观观察对错的方案便是将FPGA生成的数据与MATLAB生成的数据进行对比,若定点合理且代码正确,误差往往会在预期范围内,譬如,数据定点为(1,16,10),那么转换后的小数后三位应该是与MATLAB一致的(1/(2^10)=0.0009)。关于定点化后续会谈,下文会写一些FPGA读取,写入数据的方式。

  • FPGA生成数据的写入与读取

此处的写入或者读取往往是在tb文件中的,主程序中不推荐使用。

读取:其中readmemb表示读取的是二进制文件,可以将b修改成h,读取十六进制文件。

data_num是数据个数(深度),[15:0]表示读取的数据的位宽。

reg [15:0] Data_in [data_num-1:0];
initial begin
   $readmemb ("PATH",Data_in);    
end   

写入:

handle_i为文件的句柄,在每次时钟上升沿且使能有效的情况下,写入数据

integer handle_i;

initial begin

   handle_i  =  $fopen("PATH");

end       

 

always@(posedge clk)begin

    if(Dout_Hard_Valid)begin

        $fdisplay(handle_i,"%d" _Dout);

    end

end
  • MATLAB仿真数据的写入与读取

MATLAB中读取数据可以使用importdata()和load()函数,具体参数可以使用help查询官方文档。

比较可以使用biterr()或者isequal()函数。

  • 排错
  1. 如果是大面积错误的话,往往是算法和FPGA硬件实现有一定的偏差,需要查看各模块输入输出数据,方可定位。
  2. 如果是概率性错误,即偶尔出现,可以逐个分析找出规律,重点排查截位、各帧开始和结束的符号以及时序问题。

最后

以上就是认真小伙为你收集整理的Verilog读写文件以及验证数据准确性的全部内容,希望文章能够帮你解决Verilog读写文件以及验证数据准确性所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部