异步FIFO结构及FPGA设计
[11-20 16:13:09] 来源:http://www.88dzw.com FPGA 阅读:8804次
文章摘要:2.2 空/满标志的产生空/满标志的产生FIFO的核心部分。如何正确设计此部分的逻辑,直接影响到FIFO的性能。空/满标志产生的原则是:写满不溢出,读空不多读。即无论在什么进修,都不应出现读写地址同时对一个存储器地址操作的情况。在读写地址相等或相差一个或多个地址的时候,满标志应该有效,表示此时FIFO已满,外部电路应对FIFO发数据。在满信号有效时写数据,应根据设计的要求,或保持、或抛弃重发。同理,空标志的产生也是如此,即:空标志<=(|写地址-读地址|<=预定值)AND(写地址超前读地址)满标志<=(|写地址-读地址|<=预定值)AND(读地址超前写地址)最直接的做法
异步FIFO结构及FPGA设计,标签:fpga是什么,fpga教程,http://www.88dzw.com2.2 空/满标志的产生
空/满标志的产生FIFO的核心部分。如何正确设计此部分的逻辑,直接影响到FIFO的性能。
空/满标志产生的原则是:写满不溢出,读空不多读。即无论在什么进修,都不应出现读写地址同时对一个存储器地址操作的情况。在读写地址相等或相差一个或多个地址的时候,满标志应该有效,表示此时FIFO已满,外部电路应对FIFO发数据。在满信号有效时写数据,应根据设计的要求,或保持、或抛弃重发。同理,空标志的产生也是如此,即:
空标志<=(|写地址-读地址|<=预定值)AND(写地址超前读地址)
满标志<=(|写地址-读地址|<=预定值)AND(读地址超前写地址)
最直接的做法是,采用读写地址相比较来产生空满标志。如图4所示,当读写地址的差值等于一个预设值的时候,空/满信号被置位。这种实现方法逻辑简单,但它是减法器形成的一个比较大的组合逻辑,因而限制了FIFO的速度。所以,一般只采用相等不相等的比较逻辑,避免使用减法器。
图5是另外一种常用的设计,比较器只对读写地址比较是否相等。在读写地址相等的时候有两种情况:满或者空。所以,附加了一个并行的区间判断逻辑来指示是空还是满。这个区间判断逻辑将整个地址空间分为几个部分,以指示读写地址的相对位置。这种做法提高了整个电路的速度,但是也有其缺点。主要是直接采用读写地址等于不等于的比较逻辑来进行空/满标志的判断,可以带来误判。
3 新颖的FIF0空/满标志控制逻辑
3.1 对读写地址的分析
由以上对FIFO的分析可以看出,由地址直接相减和将地址相互比较产生空/满标志都不可取。如何简单地进行直接比较,又不提高逻辑的复杂程度呢?对地址加延时可以做到这一点。设读地址为Rd_bin_addr,用读地址Rd_addr产生读地址的格雷码Rd_next_gray_addr,将Rd_next_gray_addr延一拍得到Rd_gray_addr,再将Rd_gray_addr延一拍得到Rd_last_gray_addr。在绝对时间上,Rd_next_gray_addr、Rd_gray_addr、Rd_last_gray_addr这些地址先后关系,从大到小排列,并且相差一个地址,如图6所示。
写地址的格雷码的产生也与此类似,即:Wt_next_gray_addr、Wt_gray_addr、Wt_last_gray_addr。利用这6个格雷码进行比较,同时加上读写使能,就能方便而灵活地产生空/满标志。
以空标志Empty的产生为例,当读写格雷码地址相等或者FIFO内还剩下一个深度的字,并且正在不空的情况下执行读操作,这时Emptr标志应该置为有效(高电平有效)。
即EMPTY<=(Rd_gray_addr=Wt_gray_addr)and(Read_enable=1)或EMPTY<=(Rd_next_gray_addr=Wt_gray_addr)and(Read_enable=1)
同理可类推满标志的产生逻辑。
3.2 基于延时格雷码的FIFO标志产生逻辑
《异步FIFO结构及FPGA设计》相关文章
- › 一种异步FIFO的设计方法
- › 异步FIFO结构及FPGA设计
- 在百度中搜索相关文章:异步FIFO结构及FPGA设计
- 在谷歌中搜索相关文章:异步FIFO结构及FPGA设计
- 在soso中搜索相关文章:异步FIFO结构及FPGA设计
- 在搜狗中搜索相关文章:异步FIFO结构及FPGA设计