FIFO 同步、异步以及Verilog代码实现.doc

FIFO 同步、异步以及Verilog代码实现.doc

ID:27489852

大小:30.50 KB

页数:7页

时间:2018-12-04

FIFO 同步、异步以及Verilog代码实现.doc_第1页
FIFO 同步、异步以及Verilog代码实现.doc_第2页
FIFO 同步、异步以及Verilog代码实现.doc_第3页
FIFO 同步、异步以及Verilog代码实现.doc_第4页
FIFO 同步、异步以及Verilog代码实现.doc_第5页
资源描述:

《FIFO 同步、异步以及Verilog代码实现.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、FIFO同步、异步以及Verilog代码实现  FIFO很重要,之前参加的各类电子公司的逻辑设计的笔试几乎都会考到。FIFO是英文FirstInFirstOut的缩写,是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。FIFO一般用于不同时钟域之间的数据传输,比如FIFO的一端是AD数据采集,另一端是计算机的PCI总线,假设其AD采集的速率为16位100KSPS,那么每秒

2、的数据量为100K&TImes;16bit=1.6Mbps,而PCI总线的速度为33MHz,总线宽度32bit,其最大传输速率为1056Mbps,在两个不同的时钟域间就可以采用FIFO来作为数据缓冲。另外对于不同宽度的数据接口也可以用FIFO,例如单片机位8位数据输出,而DSP可能是16位数据输入,在单片机与DSP连接时就可以使用FIFO来达到数据匹配的目的。FIFO的分类根均FIFO工作的时钟域,可以将FIFO分为同步FIFO和异步FIFO。同步FIFO是指读时钟和写时钟为同一个时钟。在时钟沿来临时同时发生读写操作。异步FIFO是指读写时钟不一致,读写

3、时钟是互相独立的。FIFO设计的难点FIFO设计的难点在于怎样判断FIFO的空/满状态。为了保证数据正确的写入或读出,而不发生益处或读空的状态出现,必须保证FIFO在满的情况下,不能进行写操作。在空的状态下不能进行读操作。怎样判断FIFO的满/空就成了FIFO设计的核心问题。.........................................................................................................................................同步FIF

4、O的Verilog代码之一  在modlesim中验证过。/******************************************************AfifocontrollerverilogdescripTIon.******************************************************/modulefifo(datain,rd,wr,rst,clk,dataout,full,empty);input[7:0]datain;inputrd,wr,rst,clk;output[7:0]dataout;

5、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;//memoryreadoutassigndataout=mem[rp];//memorywriteinalways@(posedgeclk)beginif(wr&&~full_in)mem[wp]<=datain;end//memorywritepointerincrementalways@(posedg

6、eclkornegedgerst)beginif(!rst)wp<=0;elsebeginif(wr&&~full_in)wp<=wp+1’b1;endend//memoryreadpointerincrementalways@(posedgeclkornegedgerst)beginif(!rst)rp<=0;elsebeginif(rd&&~empty_in)rp<=rp+1’b1;endend//Fullsignalgeneratealways@(posedgeclkornegedgerst)beginif(!rst)full_in<=1’b0;e

7、lsebeginif((~rd&&wr)&&((wp==rp-1)

8、

9、(rp==4’h0&&wp==4’hf)))full_in<=1’b1;elseif(full_in&&rd)full_in<=1’b0;endend//Emptysignalgeneratealways@(posedgeclkornegedgerst)beginif(!rst)empty_in<=1’b1;elsebeginif((rd&&~wr)&&(rp==wp-1

10、

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

12、)empty_in<=1’b0;endendendmodule.........

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

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

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