jjzjj

readmemh

全部标签

Verilog的系统任务----$readmemh和$readmemb

概述        这两个系统任务是用来从指定文件中读取数据到寄存器数组或者RAM、ROM中。除了可以在仿真的任何时刻被执行使用外,根据综合工具的不同,也可以用来对RAM或者ROM进行初始化(Vivado支持)。        使用格式共6种:$readmemb("",)$readmemb("",,)$readmemb("",,,)$readmemh("",)$readmemh("",,)$readmemh("",,,)        $readmemh(h,hexadecimal,十六进制)用来读取16进制的数据,而$readmemb(b,binary,二进制)则用来读取2进制的数据。   

Testbench关于$readmemh读取数据异常问题

1、前言    笔者最近在进行DDR3方面的仿真验证工作,为了验证DDR是否读写正常,激励中产生八个通道的视频源数据,通过DDR初始信号、视频源场信号控制输入。    仿真时看起来输入的数据及相关波形都是正常的,但是这种验证只看输入是没有用处的,还是得看具体读数据的内容和时序。    由于采用了3片DDR,所以读取数据的位宽是384位,在modelsim对应的波形一个一个去比对,实在是过于费眼,也不好对比数据是否正常,效率过低。    所以采用  $fopen $fwrite $readmemh 这些系统函数,进行激励中的数据写入以及读出到文本中,再执行数据比对。2、问题描述    笔者最初的