




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、异步 FIFO 设计文档一、概述在大规模 ASIC 或 FPGA 设计中,多时钟系统往往是不可避免的,这样就产生了不同时钟域数据传输的问题,其中一个比较好的解决方案就是使用异步FIFO 来作不同时钟域数据传输的缓冲区,这们既可以使相异时钟域数据传输的时序要求变得宽松,也提高了它们之间的传输效率。 此文内容就是阐述异步FIFO的设计。二、设计原理2.1 结构框图Fig. 2.1.1如上图所示的同步模块 synchronize to write clk ,其作用是把读时钟域的读指针 rd_ptr 采集到写时钟( wr_clk )域,然后和写指针 wr_ptr 进行比较从而产生或撤消写满标志位 wr
2、_full ;类似地,同步模块 synchronize to read clk 的作用是把写时钟域的写指针 wr_ptr 采集到读时钟域,然后和读指针 rd_ptr 进行比较从而产生或撤消读空标志位 rd_empty。另外还有写指针 wr_ptr 和写满标志位 wr_full 产生模块,读指针 rd_ptr 和读空标志位 rd_empty 产生模块,以及双端口存储 RAM 模块。2.2 二进制计数器存在的问题异步 FIFO 读写指针需要在数学上的操作和比较才能产生准确的空满标志位,但由于读写指针属于不同的时钟域及读写时钟相位关系的不确定性,同步模块采集另一时钟域的指针时,此指针有可能正处在跳变
3、的过程中,如图 Fig.2.2.1 所示,那么采集到的值很有可能是不期望的值, 当然,不期望的错误结果也会随之发生。Fig. 2.2.1上图中,rd_ptr2sync 3 和 4 以及 4 和 5 之间的中间态是由于到各寄存器的时钟 rd_clk 存在偏差而引起的。 二进制的递增操作, 在大多数情况下都会有两位或者两以上的 bit 位在同一个递增操作内发生变化,但由于实际电路中会存在时钟偏差和不同的路径延时, 二进制计数器在自增时会不可避免地产生错误的中间结果,如图 Fig.2.2.2。Fig.2.2.2上图是 Fig.2.2.1 的电路原型以及局部波形的放大。由于rd_clk 上升沿到达三寄
4、存器的时间各不相同, 这就导致了 rd_ptr2sync 的值从 3b011 跳变 3b100 的过程中经历了 3b111和 3b101,直到最后一个时钟(rd_clk0)沿的到来 rd_ptr2sync才跳变到正确结果3b100。中间结果的持续的时间虽然相对短暂,但是这些不正确的结果完全有可能被其它时钟域的同步模块采集到而产生错误的动作,见上图。由此可见,要避免中间结果的产生,其中一个可行的方案就是使被同步模块采集的数据递变时,每次只有一个bit 位发生改变。格雷码计数器就是一个不错的选择。2.3 格雷码计数器的实现2.3.1 格雷码的表现形式格雷码一个最大的特点就是在递增或递减的过程中,每
5、次只变化一位, 这是它最大的优点。同时它也有自己的局限性,那就是循环计数深度必须是2 的 n次幂,否则就失去了每次只变化一位的特性。深度为16 的二进制及格雷码递变表如下:BinaryGray0000000001000100012001000113001100104010001105010101116011001017011101008100011009100111011010101111111011111012110010101311011011141110100115111110000000000002.3.2 二进制和格雷码的相互转换1、二进制到格雷码:grayn1binn1;grayn
6、2bin n2binn 1;gray2bin2bin3;gray1bin1bin2;gray0bin0bin1;总结上述转换规律,又知a0a ? 0a ?0a,所以它们之间有如下简化关系:grayn1: 0(bin n1: 01)bin n1: 0;2、格雷码到二进制:bin0gray n1gray n2.gray1gray0;bin1grayn1grayn2.gray1;.bin n2gray n1 gray n2;bin n1gray n1;总结上述转换规律,又知 a0a ? 0a ?0a ,所以它们之间有如下简化关系: bini ( gray n1: 0i);.(0 i n 1)2.3.
7、3 格雷码计数器的实现如下图 fig.2.3.1 所示,指向存储器的地址指针由二进制计数器产生,而用于跨时钟域传播的格雷码指针是对二进制指针的实时转换并用寄存器采集获得的。这里要注意的是, 计数器的位宽比实际所需的位宽要多出一位,这样做的目的是方便判断 FIFO 的空或满,这一点下文中将会介绍。Fig.2.3.1 格雷码计数器结构图2.4 空满标志位的产生异步 FIFO 最核心的部分就是精确产生空满标志位,这直接关系到设计的成败。本文采用比较读写指针来判断FIFO 的空满,如果FIFO 的深度是 n-1 位线所能访问到的地址空间, 那么此设计所要用的指针位宽就比实际多出一位,也就是 n 位,这
8、样做有助于判断FIFO 是空还是满。2.4.1 读空标志位的产生当读地址 rd_ptr 赶上写地址 wr_ptr,也就是 rd_ptr 完全等于 wr_ptr 时,可以断定, FIFO 里的数据已被读空,而且只有在两种情况下, FIFO 才会为空:第一种是系统复位,读写指针全部清零;另一种情况是在 FIFO 不为空时,数据读出的速率快于数据写入的速率,读地址赶上写地址时 FIFO 为空。空标志位的产生需要在读时钟域里完成,这样不至于发生 FIFO 已经为空了而空标志位还没有产生的情况,但是可能会发生 FIFO 里已经有数据了而空标志位还没有撤消的情况,不过就算是在最坏情况下, 空标志位撤消的滞
9、后也只有三个时钟周期, 这个问题不会引起传输错误; 还有一种情况就是空标志比较逻辑检测到读地址和写地址相同后紧接着系统产生了写操作,写地址增加, FIFO 内有了新数据,由于同步模块的滞后性, 用于比较的写地址不能及时更新,这样,一个本不应该有的空标志信号就产生了,不过这种情况也不会导致错误的发生,像这种 FIFO 非空而产生空标志信号的情况称为“虚空” 。Fig. 2.4.1.1 空标志产生逻辑如图 Fig. 2.4.1.1 空标志产生逻辑,写时钟域的写指针通过两级寄存被同步到读时钟域之后与读指针进行比较,如果完全相等, 则会产生空标志信号; 同步模块用两级寄存器来实现是为了消除可能的亚稳态
10、,正如前面所述,因为wr_ptr_gray 是用格雷码实现的,即使同步模块是在wr_ptr_gray 跳变的时刻进行采集,其采集到的所有可能值也只有两个,一个是跳变之前的值, 一个是跳变之后的值,它们只相差1,最坏情况也只是产生了“虚空”信号,而这不会引起错误传输。Fig. 2.4.1.2 空标志产生时序2.4.2 写满标志位的产生和读空标志位产生机制一样, 写满标志位也是通过比较读写地址产生的。读写指针的关系就好比 A,B 两个田径运动员在一环形跑道上进行比赛一样,当 B 运动员领先 A 并整整超前一圈时, A,B 两人的地点相同,此种情况对应于读写指针指向了同一地址,但写指针超前整整一圈,
11、 FIFO 被写满。如此看来,和读空标志产生一样,写满标志也是读写指针相同时产生。但是如果地址的宽度和 FIFO 实际深度所需的宽度相等, 某一时刻读写地址相同了, 那 FIFO 是空还是满就难以判断了。 所以读写指针需要增加一位来标记写地址是否超前读地址 (在系统正确工作的前提下,读地址不可能超前于写地址) ,比如 FIFO 的深度为 8,我们需要用宽度为 4 的指针。Fig. 2.4.2.1如果读指针的最高位为格雷码指针和存储空间的映射关系0,而写指针的最高位为1,说明写指针超前于读指针,这时如果读写指针指向同一存储空间,参照Fig. 2.4.2.1 ,则 FIFO被写满。写满标志位产生逻辑只需关心格雷码指针最高位不同(写超前于读) 且
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 美容师实践能力考核内容分析及试题及答案
- 公务员省考管理学知识试题及答案
- 食品检测标准化的试题及答案
- 2024统计学核心知识点测验试题及答案
- 汽车维修工考试题集及答案分析
- 一年级语文考核的全面回顾与考题实例分析试题及答案
- 汽车节能减排的技术分析与应用试题及答案
- 校园自助厨房创业计划书
- 在线调查的方法与应用试题及答案
- 宠物食品营养成分对比解析考题及答案
- 1+X数控车铣加工职业技能等级考试题及答案
- 2024-2025学年人教版八年级物理上学期课后习题答案
- 2024年高考数学北京卷试卷评析及备考策略
- 信息技术(基础模块)模块六 信息素养与社会责任
- 《企业知识产权国际合规管理规范》
- 湖北省武汉市武昌区2023-2024学年四年级下学期期末检测数学试题
- 智慧医联体建设项目可行性研究报告
- 中国主要水域资源分布及开发利用
- 《中电联团体标准-220kV变电站并联直流电源系统技术规范》
- 非机动车交通管理及规划研究
- 劳务派遣及医院护工实施预案
评论
0/150
提交评论