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
D2 rom的波形
.coe后缀格式文件的产生,可以用excel表。注意rom的读延迟是2个cycle。
注意!发现仿真波形不对,有跳变。仔细检查发现,这里的.coe文件radix不对,不能是16,应该设置为10.
D3 fifo的波形
从波形看,fifo最先写入的是1286,1300,1304,... 注意fifo的写入是没有延时的。fifo写入后count值变化,相对写入pulse延迟了1拍。
从波形看,fifo读出的分别是1286,1300,1304,... fifo的读出有1个cycle的延时。fifo读出后count值变化,相对读出pulse延迟了1拍。 既读又写的时候,count值不变,合理。
当count=0时产生empty。这个时候如果发生既写又读,可以看到读出不成功,但写入成功,因此count变成1.