FIFO一般指的是对数据的存储具有先进先出特性的一个存储器,常被用于数据的缓存或者高速异步数据的交互
下图为分别为单时钟FIFO和双时钟FIFO的结构图:
单时钟FIFO:
单时钟FIFO常用于片内数据交互
双时钟FIFO:
双时钟FIFO的一个典型应用就是异步数据的收发。
因为直接调用的fifo核,所以直接对其仿真就能查看波形
仿真文件:
`timescale 1ns/1ps `define clk_period 20 module FIFO_tb; //source define reg [7:0] data; reg rdclk; reg rdreq; reg wrclk; reg wrreq; //probe define wire [7:0] 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使用后续别的主题的笔记会有记录
谢谢
文章评论(0条评论)
登录后参与讨论