使用Xilinx FIFO IP核的总结(一)

FIFO IP核的总结(一)
第一次使用Vivado中的FIFO generator,同步FIFO的常用端口也就10个左右:
CLK;
srst:复位端口
读相关:
dout:FIFO数据输出(output);
empty:读空(output),empty为1,表明FIFO内无数据;
Vaild:读有效(output):等到rd_en拉高后的下一个上升沿置1
rd_en:读使能(input)
写相关:
din:FIFO数据输入(input)
wr_en:写使能(input)
Full:写满(output)full为1,数据写入将丢失
wr_ack:写成功/握手信号(output),等到wr_en拉高后的下一个上升沿置1。

//下面是顶层code,里面例化了一个FIFO generator IP核:
`timescale 1ns / 1ps
 module FIFO_test(clk, srst, din, wr_en, rd_en, dout, full, wr_ack, empty, 
  valid);
  input clk;
  input srst;
  input [3:0]din;
  input wr_en;
  input rd_en;
  output [3:0]dout;
  output full;
  output wr_ack;
  output empty;
  output valid;

fifo_generator_0 fifo_use (.clk(clk),.srst(srst),.din(din),.wr_en(wr_en),.wr_ack(wr_ack),.full(full),.dout(dout),.empty(empty),.valid(valid),.rd_en(rd_en));

endmodule

//相应的test_bench code:

module tb_FIFO_test();
reg clk,srst;
reg [3:0] din;
reg wr_en;
reg rd_en;
wire [3:0]dout;
wire full;
wire wr_ack;
wire empty;
wire valid;

initial
begin
    clk=0;
    srst=0;
    din=4'd0;
    wr_en=0;
    rd_en=0;
    #10;
    srst=1;
    #10;
    
    repeat(16)
    begin
    wr_en=1;
    #20;
    wr_en=0;
    #20;
    din=din+1'b1;
    end
    
    repeat(16)
    begin
    rd_en=1;
    #20;
    rd_en=0;
    #20;
    end
    
end

always #5 clk=~clk;

FIFO_test fifo_tb (.clk(clk),.srst(srst),.din(din),.wr_en(wr_en),.wr_ack(wr_ack),.full(full),.dout(dout),.empty(empty),.valid(valid),.rd_en(rd_en));

 

Xilinx FIFO 仿真总结 https://blog.csdn.net/RuningBigCat/article/details/80581311

 

基于FPGA高速FIFO电路设计(各个信号说明) https://max.book118.com/html/2018/0828/6234124211001213.shtm

 

异步FIFO设计(非常详细,图文并茂,值得一看!) https://blog.csdn.net/wyj_2016/article/details/78469272

 

有不少的好帖子:https://www.cnblogs.com/chengqi521/p/7909422.html

转载于:https://my.oschina.net/u/2963604/blog/3102435

你可能感兴趣的:(使用Xilinx FIFO IP核的总结(一))