Vivado ROM与FIFO的仿真研究 - minichao9901/TangNano-20k-Zynq-7020 GitHub Wiki

D1 testbench

  • 使用自定义的clk_rst_gen模块(以后可以经常使用)
  • 用binary counter模块产生rom地址,以及fifo的rd_en/wr_en信号
  • block memory配置为single-port-rom的形式
  • 将rom读出的数据发送给fifo
  • 每个周期rom会读出1个数据,每8个周期fifo会写入1个数据,每4个周期fifo会读出一个数据
  • 用几个不同时刻的是能来启动binary counter

image image

D2 rom的波形

image

image

image

.coe后缀格式文件的产生,可以用excel表。注意rom的读延迟是2个cycle。
注意!发现仿真波形不对,有跳变。仔细检查发现,这里的.coe文件radix不对,不能是16,应该设置为10.

D3 fifo的波形

image

从波形看,fifo最先写入的是1286,1300,1304,... 注意fifo的写入是没有延时的。fifo写入后count值变化,相对写入pulse延迟了1拍。

image

从波形看,fifo读出的分别是1286,1300,1304,... fifo的读出有1个cycle的延时。fifo读出后count值变化,相对读出pulse延迟了1拍。 既读又写的时候,count值不变,合理。

image

当count=0时产生empty。这个时候如果发生既写又读,可以看到读出不成功,但写入成功,因此count变成1.