热度 23
2016-4-22 16:11
2375 次阅读|
0 个评论
FIFO一般指的是对数据的存储具有先进先出特性的一个存储器,常被用于数据的缓存或者高速异步数据的交互 下图为分别为单时钟FIFO和双时钟FIFO的结构图: 单时钟FIFO: 单时钟FIFO常用于片内数据交互 双时钟FIFO: 双时钟FIFO的一个典型应用就是异步数据的收发。 因为直接调用的fifo核,所以直接对其仿真就能查看波形 仿真文件: `timescale 1ns/1ps `define clk_period 20 module FIFO_tb; //source define reg data; reg rdclk; reg rdreq; reg wrclk; reg wrreq; //probe define wire q; wire rdempty; wire rdfull; wire wrempty; wire wrfull; //instant user module fifo fifo( .data(data), .rdclk(rdclk), .rdreq(rdreq), .wrclk(wrclk), .wrreq(wrreq), .q(q), .rdempty(rdempty), .rdfull(rdfull), .wrempty(wrempty), .wrfull(wrfull) ); //generater clock initial wrclk = 1; always #(`clk_period/2)wrclk = ~wrclk; initial rdclk = 1; always #(`clk_period)rdclk = ~rdclk; integer i; initial begin wrreq = 0; data = 0; rdreq = 0; #(`clk_period*20 + 1); //写入 for (i=0;i = 511 ;i = i + 1)begin wrreq = 1; data = i; #`clk_period; end wrreq = 0; #(`clk_period*20); //读取 for (i=0;i = 511 ;i = i + 1)begin rdreq = 1; #`clk_period; end rdreq = 0; $stop; end endmodule 仿真效果: 更多方便的fifo使用后续别的主题的笔记会有记录 谢谢