同步fifo和异步fifo的verilog实现

同步fifo和异步fifo的verilog实现

ID:3156864

大小:56.00 KB

页数:0页

时间:2017-11-20

同步fifo和异步fifo的verilog实现_第页
预览图正在加载中,预计需要20秒,请耐心等待
资源描述:

《同步fifo和异步fifo的verilog实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、FIFO是英文FirstInFirstOut的缩写,是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。 FIFO一般用于不同时钟域之间的数据传输,比如FIFO的一端是AD数据采集,另一端是计算机的PCI总线,假设其AD采集的速率为16位100KSPS,那么每秒的数据量为100K×16bit=1.6Mbps,而PCI总线的速度为33MHz,总线宽度32bit,其最大传输速率为1056Mbps,在两个不同的时钟域间

2、就可以采用FIFO来作为数据缓冲。另外对于不同宽度的数据接口也可以用FIFO,例如单片机位8位数据输出,而DSP可能是16位数据输入,在单片机与DSP连接时就可以使用FIFO来达到数据匹配的目的。 FIFO的分类根据FIFO工作的时钟域,可以将FIFO分为同步FIFO和异步FIFO。同步FIFO是指读时钟和写时钟为同一个时钟。在时钟沿来临时同时发生读写操作。异步FIFO是指读写时钟不一致,读写时钟是互相独立的。 FIFO设计的难点在于怎样判断FIFO的空/满状态。为了保证数据正确的写入或读出,而不发生益处或读空的状态出现,必须保证FIFO在满的情况下,不能进行写操作。在空的状态下不能进行读操作

3、。怎样判断FIFO的满/空就成了FIFO设计的核心问题。.........................................................................................................................................同步FIFO的Verilog代码之一在modlesim中验证过。/******************************************************Afifocontrollerverilogdescription.**************

4、****************************************/modulefifo(datain,rd,wr,rst,clk,dataout,full,empty);input[7:0]datain;inputrd,wr,rst,clk;output[7:0]dataout;outputfull,empty;wire[7:0]dataout;regfull_in,empty_in;reg[7:0]mem[15:0];reg[3:0]rp,wp;assignfull=full_in;assignempty=empty_in;//memoryreadoutassigndatao

5、ut=mem[rp];//memorywriteinalways@(posedgeclk)begin   if(wr&&~full_in)mem[wp]<=datain;end//memorywritepointerincrementalways@(posedgeclkornegedgerst)begin   if(!rst)wp<=0;   elsebegin     if(wr&&~full_in)wp<=wp+1'b1;   endend//memoryreadpointerincrementalways@(posedgeclkornegedgerst)begin   if(!rst)r

6、p<=0;   elsebegin     if(rd&&~empty_in)rp<=rp+1'b1;   endend//Fullsignalgeneratealways@(posedgeclkornegedgerst)begin   if(!rst)full_in<=1'b0;   elsebegin     if((~rd&&wr)&&((wp==rp-1)

7、

8、(rp==4'h0&&wp==4'hf)))         full_in<=1'b1;     elseif(full_in&&rd)full_in<=1'b0;   endend//Emptysignalgenerateal

9、ways@(posedgeclkornegedgerst)begin   if(!rst)empty_in<=1'b1;   elsebegin     if((rd&&~wr)&&(rp==wp-1

10、

11、(rp==4'hf&&wp==4'h0)))       empty_in<=1'b1;     elseif(empty_in&&wr)empty_in<=1'b0;   endendendmo

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。