首页 > 编程知识 正文

同步异步fifo区别,异步fifo verilog

时间:2023-05-05 21:30:21 阅读:60331 作者:3972

FIFO FIFO是英语First In First Out的缩写,是先进的先进先出的数据缓冲区。 与普通存储器的区别在于没有外部读写地址线。 这样使用非常简单,但缺点在于只能依次写入数据。 顺序的读取数据,其数据地址由内部读写指针自动加1而进行,不能够像通常的存储器那样通过地址线进行读取和写入。

FIFO是一种非常重要的数字设备,用于时钟域间的处理、多位异步信号的处理等非常多的用途。

FIFO的IP核心具有同步和异步,具体取决于用于写入数据和读取数据的时钟。

让我们简单地模拟一下异步FIFO的功能。

异步FIFO是指用各自的时钟控制数据的写入和读取。

这次的模拟内容是,以50MHZ的写入时钟向FIFO写入8位的数据0~255,以25MHZ的读出时钟以16位读取8位的数据。

以下是顶级模块。 modulesy_FIFO(inputwirewr_clk,inputwirerd_clk,inputwiresys_rst_n,input wire [ 73:0 ] wr _ datator outour outputwire[6:0]rd_usedw,outputwirerd_full,outpull my_FIFOmy_FIFO_inst ).data(wr_data ), rd . rdfull(rd_full )、 rdusedw ) _usedw )、 wrempty )、 wrfull )、 wr_full )、 wrusedw ) _wr_empty )。 endmodule下面有模拟代码。 ` time scale1ns/1 nsmoduletb _ sy _ FIFO (; regwr_clk; regrd_clk; regsys_rst_n; reg [7:0]wr_data; reg wr_req; regrd_req; wire [15:0]rd_data; wirerd_empty; wire [6:0]rd_usedw; wirerd_full; wirewr_full; wirewr_empty; wire [7:0]wr_usedw; reg[1:0] cnt; reg wr_full_reg0; reg wr_full_reg1; initial beginwr_clk=1; rd_clk=1; sys_rst_n=0; #100sys_rst_n=1'b1; #100000$stop; endalways # 10 wr_clk=~ wr_clk; always # 20 rd_clk=~ rd_clk; always @ (posedge wr _ clkornegedgesys _ rst _ n ) if ) sys_rst_n==1'B0 ) cnt=2'd0; /*elseif(CNT==1'B1 ) cnt=2'd0; */elsecnt=cnt 1'b1; always @ (posedge wr _ clkornegedgesys _ rst _ n ) if ) sys_rst_n==1'B0 ) wr_req=1'b0; ELSEif () CNT==2'D0 ) ) rd_req==1'b0 ) ) wr_req=1'b1; else wr_req=1'b0; always @ (posedge wr _ clkornegedgesys _ rst _ n ) if ) sys_rst_n==1'B0 ) wr_data=8'd0; elseif(wr_req==1'B1 ) wr_data==8'd255 ) ) wr_data=8'd0; ELSEif(wr_req==1'B1 ) wr_data=wr_data 1'b1; elsewr_data=wr_data; always @ (posedge rd _ clkornegedgesys _ rst _ n ) if ) sys_rst_n==1'B0 ) beginwr_full_reg0=1'b0; wr_full_reg1=1'b0; endelsebeginwr _ full _ reg0=wr _ full; wr_full_reg1=wr_full_reg0; end always @ (posedge rd _ clkornegedgesys _ rst _ n ) if ) sys_rst_n==1'B0 ) rd_req=1'b0; elseif(rd_empty==1'B1 ) rd_req=1'b0; ELSEif(wr_full_reg1==1'B1 ) rd_req=1'b1; elserd_req=rd_req; sy_FIFOsy_FIFO_inst(.wr_clk )、 rd_clk )、 sys_rst_n )、 rd_empty(rd_empty )和. rd_clk

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。