)”LPM_FIFO_DC!

G

Guest

Guest
嗨!
我需要的操作理论的双时钟FIFO的。
请救救我!
在副词感谢!

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="微笑" border="0" />
 
要设计一个异步FIFO的?
有一次
, 我设计了一个转换器的参数异步FIFO的宽度,对Virtex - II FPGA中。的设计原则并没有改变ASIC或FPGA设计。
FIFO的包含三个部分:控制器读,写控制器和双端口存储器。双端口存储器的核心均可通过了FPGA和ASIC制造商供应商。读取和写入控制器控制模块是几乎相同。例如
, 一个良好的阅读控制器应该有空洞readCounter输出信号。写控制器具有充分和writeCounter输出。有读使能和写使数据写入和读取FIFO数据控制信号。有两个模块
, 生成双端口的读写地址。在每次读或写这些计数器将指向下一个内存位置。现在的主要问题是产生空和满信号。应时钟同步器传输FIFO的状态之间的数据读写时钟域。
在谷歌,请搜索“克利福德卡明斯”他写的异步设计,您可以从他的网站上下载了一些非常好的文章。

 
拉莫要求我更形容它,所以这里是:
首先,注意
, 我们是两个不同的时钟时,其积极的边缘可以放在任何地方和任何possbile延误。因此
, 同步器是必须的。现在,的ASIC / FPGA制造商应该设计它的拖鞋
, 使他们能够恢复到稳定的状态,如果他们得到稳。你知道导致亚稳态时输入信号在该触发器设置时间间隔触发器的变化。
现在
, 这两个读取和写入控制器控制应该有一个状态寄存器。假设我们的FIFO有4个地方来存储数据。(假设我们不宽的FIFO现在转换器),那么应该有4位为读写控制器的状态寄存器。现在
, 当一个数据包在内存首先写的,我们会在写控制器为1,那么当一个新的数据包来
, 并填补了第二位的状态寄存器的第一位,我们会设置第二位的地位注册。当一个数据包是从内存读取我们会在读取控制器的状态寄存器的第一位。现在只要我们会把写控制状态寄存器读取控制器(我们会转移到写时钟域时钟域读取数据),然后由此产生的读取计数器是这两个状态寄存器异或。同样,在读取控制器状态寄存器将被转移到写时钟域
, 然后将被写入状态寄存器和控制的结果进行异或运算就是我们所说的写计数器。当所有的异或位是1,我们说的FIFO已满。在读时钟域,当了XOR运算状态寄存器的所有位是零
, 我们说的FIFO是空的。要小心,FIFO的全信号是在写时钟域和FIFO读的是在读时钟域产生的生成。
潜伏期:
FIFO在设置全部或空或读latancy /写计数器是重要的。上述结构,全高信号应该结束后,先进先出已满,没有任何延迟。但它会降低一些延迟
, 因为当你开始从FIFO的读,你读操作的影响应通过同步拖鞋
, 然后再达到写控制器。同样,如果你是从FIFO的读,成为空,空的输出信号应无延迟高。但是当你写入新的数据的FIFO,空不会马上回落。
readCounter和writeCounter潜伏期取决于FIFO的宽度。他们有2个或3个周期典型的延迟。考虑到延迟意义的关怀,在这里我们野兔两个时钟。

 

Welcome to EDABoard.com

Sponsor

Back
Top