异步fifo读写同步的设计

异步fifo读写同步的设计

ID:23122194

大小:475.89 KB

页数:16页

时间:2018-11-04

异步fifo读写同步的设计_第1页
异步fifo读写同步的设计_第2页
异步fifo读写同步的设计_第3页
异步fifo读写同步的设计_第4页
异步fifo读写同步的设计_第5页
资源描述:

《异步fifo读写同步的设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、题目异步缓冲fifo的设计院系电子与信息工程学院专业电子与通信工程学生姓名卢兴森学号20132281370指导教师刘建成二0—四年元月三日一异步FIFO的介绍11.1指针以及满空信号的产生11.2二进制指针和格雷码指针的同步21.3保守的满空判断31.4二进制指针和格雷码指针的比较4二程序及其介绍4三仿真结果图13E总结14一异步FIFO的介绍使用FIFO同步源自不同时钟域的数据是在数字1C设计中经常使用的方法,设计功能正确的FIFO会遇到很多问题,探讨了两种不同的异步FIFO的设计思路。两种思路都能够实现功能正确的FIFO。本文所研究的FTFO,从硬件的观点来看,就是一块数据内存。它

2、有两个端口,一个用来写数据,就是将数据存入FIFO;另一个用来读数据,也就是将数据从HF0当中取出。与FIFO操作相关的有两个指针,写指针指向要写的内存部分,读指针指向要读的内存部分。HF0控制器通过外部的读写信号控制这两个指针移动,并由此产生HF0空信号或满信号。对于异步FTFO而言,数据是由某一个时钟域的控制信号写入FTFO,而由另一个时钟域的控制信号将数据读出FIFO。也就是说,读写指针的变化动作是由不同的时钟产生的。因此,对FIFO空或满的判断是跨时钟域的。如何根据异步的指针信号对FIFO的满状态或空状态进行正确的判断是本文研究的重点。此外,设计过程中的一些细节问题也将在文中涉

3、及到。1.1指针以及满空信号的产生为了更好地说明问题,先探讨一下同步FIFO指针移动以及满空信号的产生过程。对于同步FIFO,读写指针都指向一个内存的初始位置,每进行一次读写操作,相应的指针就递增一次,指向下一个内存位置。当指针移动到了内存的最后一个位置时,它又重新跳回初始位置。在FIH)非满或非空的情况下,这个过程将随着读写控制信号的变化一直进行下去。如果FTFO处于空的状态,下一个读动作将会导致向下溢出(underflow),一个无效的数据被读人;同样,对于一个满了的FIFO,进行写动作将会导致向上溢出(overflow),一个有用的数据被新写入的数据覆盖。这两种情况都属于误动作,

4、因此需要设置满和空两个信号,对满信号置位表示FIH)处于满状态,对满信号复位表示HF0非满,还有空间可以写入数据;对空信号置位表示FIFO处于空状态,对空信号复位表示FTFO非空,还有有效的数据可以读出。当读指针和写指针相等也就是指向同一个内存位置的时候,FIFO可能处于满或空两种状态。可以通过不同的方法判断或区分HF0究竟是处于满状态还是空状态,也就是究竟是写指针从后赶上了读指针,还是读指针从后赶上了写指针。本文所应用的方法是设置一个额外的状态位,指针由它的地址位以及状态位组成。地址位随着相应的操作递增,指针由内存的最后位置返回到初始位置的时候状态位取反。因此,当读写指针的地址位和状

5、态位全部吻合的时候,读写指针经历了相同次数的循环移动,也就是说,FIFO处于空状态;如果读写指针的地址位相同而状态位相反,写指针比读指针多循环一次,标志FIFO处于满状态。(2)二进制指针可以用于任意大小的FIFO;格雷码指针只能用于大小为2的幂的FIFO。1.2二进制指针和格雷码指针的同步二进制指针(如图1)是由一位状态位和若干位二进制编码的地址位组成的(例如由三位地址和一位状态位构成的指针的变化:0000—000卜0010—001卜0100—010卜0110—011卜1000—100卜1010—1011->1100->1101->1110->1111)o如果在不同的时钟域内直接同步

6、二进制指针,有可能产生问题。例如,当读指针从0111向1000变化的时侯,指针所有的位都要变化,如果写时钟恰好在读指针的变化时刻采样,写者得到的读指针值有可能是从0000到1111中的任何一个。所以二进制指针不宜被直接同步,但可以通过一对握手信号同步二进制指针。图1例如,读指针被读者存人一个寄存器时,读者就发出一个就绪信号。当写者看到就绪信号时,读取读指针,发出一个收到数据的确认信号。当读者看到确认信号时,就收回就绪信号,然后用当前的读指针值刷新寄存器。在收到确认信号前,存放读指针的寄存器内容保持不变,确保了被读取的指针的正确性。为了能够在不同的时钟域内直接同步指针,可以对指针使用格雷

7、码的编码方式,也就是指针每次移动只变化一位,这样就避免了由于指针多位同时变化而无法直接同步的问题。图3表示了一个三位地址的内存用于格雷码编码的FIFO。n位地址的内存需要n+1位的格雷码。使用最高位(也就是第n-1位)作为状态位,从第n-2到第0位作为地址的第n-2位到第0位;对状态位(也就是第n-1位)和第n-2位进行位异或运算产生地址的第n-2位(也就是地址的最高位)。通过对图3的观察可以得知,四位格雷码编码的指针和三位二进制加状态位编码的

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

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

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