同步fifo与异步fifo

同步fifo与异步fifo

ID:14211367

大小:104.00 KB

页数:7页

时间:2018-07-26

同步fifo与异步fifo_第1页
同步fifo与异步fifo_第2页
同步fifo与异步fifo_第3页
同步fifo与异步fifo_第4页
同步fifo与异步fifo_第5页
资源描述:

《同步fifo与异步fifo》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、l同步FIFO之VHDL描述同步FIFO的意思是说FIFO的读写时钟是同一个时钟,不同于异步FIFO,异步FIFO的读写时钟是完全异步的。同步FIFO的对外接口包括时钟,清零,读请求,写请求,数据输入总线,数据输出总线,空以及满信号。下面分别对同步FIFO的对外接口信号作一描述:1. 时钟,输入,用于同步FIFO的读和写,上升沿有效;2. 清零,输入,异步清零信号,低电平有效,该信号有效时,FIFO被清空;3. 写请求,输入,低电平有效,该信号有效时,表明外部电路请求向FIFO写入数据;4. 读请求,输入,低电平有效,该信号有效时,表明外部电路请求从FIFO中读取数据;5. 数据输入总线,输

2、入,当写信号有效时,数据输入总线上的数据被写入到FIFO中;6. 数据输出总线,输出,当读信号有效时,数据从FIFO中被读出并放到数据输出总线上;7. 空,输出,高电平有效,当该信号有效时,表明FIFO中没有任何数据,全部为空;8. 满,输出,高电平有效,当该信号有效时,表明FIFO已经满了,没有空间可用来存贮数据。使用VHDL描述的FIFO将以上面的接口为基础,并且可以参数化配置FIFO的宽度和深度。先把对外接口描述出来吧。------------------------------------------------------------------------------------

3、-----------------------Designer:skycanny--Date:2007-1-29--Description:SynchronousFIFOcreatedbyVHDLlibraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entitysfifoisgeneric(width:positivedepth:positive);port(clk:instd_logic;rst:instd_logic;wq:instd_logic;

4、rq:instd_logic;data       :instd_logic_vector(width-1downto0);q:instd_logic_vector(width-1downto0);empty:outstd_logic;full:outstd_logic);endentitysfifo;下面的框图主要描述同步FIFO的内部结构,画出框图有助于对电路结构的理解,同样也有助于RTL代码的编写:l异步FIFOFIFO(先进先出队列)是一种在电子系统得到广泛应用的器件,通常用于数据的缓存和用于容纳异步信号的频率或相位的差异。FIFO的实现通常是利用双口RAM和读写地址产生模块来实现的

5、。FIFO的接口信号包括异步的写时钟(wr_clk)和读时钟(rd_clk)、与写时钟同步的写有效(wren)和写数据(wr_data)、与读时钟同步的读有效(rden)和读数据(rd_data)。为了实现正确的读写和避免FIFO的上溢或下溢,通常还应该给出与读时钟和写时钟同步的FIFO的空标志(empty)和满标志(full)以禁止读写操作。1异步FIFO功能描述图1给出了FIFO的接口信号和内部模块图。由图1可以看出,写地址产生模块根据写时钟和写有效信号产生递增的写地睛,读地址产生模块根据读时钟和读有效信号产生递增的读地址。FIFO的操作如下:在写时钟wr_clk的升沿,当wren有效时

6、,将wr_data写入双口RAM中写地址对应的位置中;始终将读地址对应的双口RAM中的数据输出到读数据总线上。这样就实现了先进先出的功能。   写地址产生模块还根据读地址和写地址关系产生FIFO的满标志。当wren有效时,若写地址+2=读地址时,full为1;当wren无效时,若写地址+1=读地址时,full为1。读地址产生模块还根据读地址和写地址的差产生FIFO的空标志。当rden有效时,若写地址-1=读地址时,empty为1;当rden无效时,若写地址=读地址时,empty为1。按照以上方式产生标志信号是为了提前一个时钟周期产生对应的标志信号。由于空标志和满标志控制了FIFO的操作,因此

7、标志错误会引起操作的错误。如上所述,标志的产生是通过对读写地址的比较产生的,当读写时钟完全异步时,对读写地址进行比较时,可能得出错误的结果。例如,在读地址变化过程中,由于读地址的各位变化并不同步,计算读写地址的差值,可能产生错误的差值,导致产生错误的满标志信号。若将未满标志置为满标志时,可能降低了应用的性能,降低写数据速率;而将满置标志置为未满时,执行一次写操作,则可能产生溢出错误,这对于实际应用来说是绝对应

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

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

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