在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 41764|回复: 66

异步时钟亚稳态及FIFO 标志位的产生(附件有图片)

[复制链接]
发表于 2007-1-21 13:47:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
这片文章对理解亚稳态和fifo标志位的产生很有好处,本来想贴在技术文章版,不知为何图片显示不出来,所以我将附件贴在这里给需要的友们。另外顺便求救一下,怎样将从pdf上copy下来图片在网页上显示出来,还有这个“”怎么消除,请高手支招。
异步时钟亚稳态及FIFO 标志位的产生
徐世伟, 刘严严, 刘红侠
( 西安电子科技大学微电子学院, 陕西西安710071)
摘要: 在实际工作中常常遇到由异步时钟产生亚稳态的问题。针对这个问题阐述了几种解决方案, 其中异步FIFO 应用更广泛。在FIFO 中关键的问题是标志位的产生, 提出了一种新的异步比较产生空满标志位, 然后再利用锁存器实现标志位与时钟的同步, 同时在Cadence EDA 平台上实现了逻辑仿真和时序仿真。
关键词: 异步FIFO 亚稳态格雷码绳解法
随着信息技术的飞速发展, 特别是在二十世纪90年代以后, 美国在南斯拉夫战争和两次海湾战争中成功地运用了电子战、信息战, 以及近年来我国在航天航空事业方面的高速发展, 使我国开始重视和发展信息技术。与此同时对高速、大容量、高可靠性的静态存储器的需求越来越多, 对军用的数据存储器的设计也提出了更高的要求。目前军用计算机传输数据的最快方式———
DMA 方式的传输速率最大也只是在5Mbps 以下。对于几十Mbps 的超高速采样速率, 往往是上一次数据还没有被计算机读取, 下一次的采集过程就结束了。因此采用传统的计算机传输处理数据的方法, 显然会造成数据的丢失与混乱。所以对于快速采集, 慢速处理的系统必然要用到缓存。本文就是针对数据存储器FIFO 解决亚稳态问题的设计, 经过对不同方法的比较, 设计了一种新型的逻辑标志的同步电路。
1 亚稳态问题的解决方案
1 .1 问题的产生
在数字集成电路中, 触发器要满足setup/hold 的时间要求。当一个信号被寄存器锁存时, 如果信号和时钟之间不满足这个要求, Q 端的值是不确定的, 并且在未知的时刻会固定到高电平或低电平, 这个过程称为亚稳态, 如图1 所示。图中clka 和clkb 即为异步时钟, 亚稳态必定会发生在异步时钟电路中。在图1 的异步电路中,电路外部的输入和内部的时钟之间是毫无时间关系的,因此setup/hold 冲突是必然的; 同在电路内部的两个没有关系的时钟域之间的信号传递, 也必然会导致setup/hold
冲突。亚稳态虽然是不可避免的, 但采用下面几种设计方法可以将其发生的概率降低到一个可以接受的程度。
1 .2 常见的解决方法
1 .2 .1格雷码编码法
写地址/ 读地址采用格雷码。由实践可知, 同步多个异步输入信号出现亚稳态的概率远远大于同步一个异步信号的概率。对于多个触发器的输出所组成的写址/ 读地址可以采用格雷码。由于格雷码每次只变化一位, 因此采用格雷码可以很好地节约功耗, 有效地减少亚稳态的产生, 特别是在地址位比较多的情况下可以更好地解决亚稳态的问题。格雷码是对二进制地址输出进行转换, 下面是四位代码之间转换的逻辑表达式:
B 码转G 码的逻辑表达式: G 码转B 码的逻辑表达式:
B4=G4      G4=B4
B3=B4!G3   G3=B4!B3
B2=B3!G2   G2=B3!B2
B1=B2!G1   G1=B2!B1
但采用格雷码编码法需要在地址位的每一位增加一级的异或门, 这样在计数比较前增大了延时和版图面积。同时在地址分配到其他逻辑单元前要把格雷码转换成二进制代码, 这同样也会增大版图设计面积和延时。
1 .2 .2双触发器法
采用触发器来同步异步输入信号, 如图2 中的两级触发器可以将出现亚稳态的概率降低到一个很小的程度。由于增加了一级触发器, 这样在最后的输出就延迟了一个时钟, 使前一个时钟产生的数据被b_clk 连续锁存两次。虽然第一次锁存产生亚稳态, 但经过一段时间的延时可以有效地解决这个问题。这种方法同时带来了对输入信号的一级延时, 需要在设计时钟的时候加以注意。虽然两级触发器能有效地抑制亚稳态, 但增加了一级的D 触发器, 这和格雷码编码法一样会增加版图面积。这种方法在clka 与clkb 的采样周期相差不大的情况下比较适合。
1 .2 .3结绳法
如图3 所示, 如果aclk 的频率比bclk 频率高, 将可能会出现因为adat 变化太快而使bclk 无法采到的问题,即在信号从快时钟域向慢时钟域过渡时, 如果信号变化太快, 慢时钟将可能无法对该信号进行正确采样, 即采样失败。所以在使用双锁存器法时, 应该使原始信号保持足够长的时间, 以便另一个时钟域的锁存器对其进行正确的采样。
对上述问题, 一般采用“ 结绳法”的设计方法, 将慢时钟周期信号通过分频的方式将其周期增长, 经过双锁存采样以后再使其恢复原来的时钟周期。即用“ 结绳”将信号延长, 用“ 同步”实现双latch 采样, 用“ 解绳”还原为原来的时钟, 保证另一个时钟域也可以正确采样, 而接收方用相反的流程送回响应信号。“ 结绳法” 可以解决快时钟域向慢时钟域过渡的问题, 适用的范围也很广。但是“ 结绳法”实现较为复杂, 特别是其频率不高, 所以在对设计性能要求较高的场合应该慎用。
2 基于异步比较FIFO 逻辑标志的产生
2 .1 设计思想
异步FIFO 可以很好地解决时钟速度相差悬殊的时钟间的数据传输问题。异步FIFO 存储器在结构上可划分为存储阵列和外围电路两大部分, 它由几个主要模块组成: 存储单元RAM、写控制逻辑、读控制逻辑、标志逻辑、扩展逻辑、复位逻辑以及并/ 串转换逻辑。这里主要考虑产生空、满标志的同步。标志逻辑是用以产生反映器件内部RAM 阵列占用情况的状态标志信号, 使系统可以及时采取措施以免数据溢出。在FIFO 中标志位的产生是关键的一步, 如果能够及时判断出每一个时钟下写入和读出的位置, 就可以防止产生误操作, 做到写满不再写、读空则停止读。在异步FIFO 中的标志位主要包括空标志、满标志、半满标志和将近满、将近空标志。异步FIFO 逻辑框图如图4 所示。
2 .2 标志位的产生
2 .2 .1空、满标志位的产生标志逻辑
满标志是为了防止FIFO 在满状态时被写, 空标志是为了防止FIFO 在空状态时被读。对于异步FIFO 而言, 数据是由某一个时钟域的控制信号写入FIFO, 而由另一个时钟域的控制信号将数据读出FIFO。也就是说,读写指针的变化动作是由不同的时钟产生的。因此, 对FIFO 空或满的判断是跨时钟域的。如何根据异步的指针信号对FIFO 的满状态或空状态进行正确的判断是研究的重点之一。当读指针和写指针相等也就是指向同一个内存位置时, FIFO 可能处于满或空两种状态。可以通过不同的方法判断或区分FIFO 究竟是处于满状态还是空状态,也就是说究竟是写指针从后赶上了读指针, 还是读指针从后赶上了写指针。本文采用设置一个额外的状态位的方法, 即指针由它的地址位以及状态位组成。地址位随着相应的操作递增, 指针由内存的最后位置返回到初始位置时, 状态位取反。因此, 当读写指针的地址位和状态位全部吻合的时候, 读写指针经历了相同次数的循环移
动, 也就是说, FIFO 处于空状态; 如果读写指针的地址位相同而状态位相反, 写指针比读指针多循环一次, 标
志FIFO 处于满状态。
2 .2 .2异步比较FIFO 逻辑标志与时钟的同步
一般的异步FIFO 是先将读地址与写地址同步以后( 以上提到的方法) 再进行比较, 这种方法一般效率不高, 不能很好地节省制版面积。本文采用一种异步比较法, 能够有效地解决这一问题。目前IDT 公司的系列产品一般都采用这种异步比较法。在异步FIFO 中, 由FIFO 读时钟产生读地址rptr , 写时钟产生写地址wptr。当rptr 与wptr 进行异步比较时,由于rptr 的变(assert) 产生aempty_n (FIFO 空标志), 即aempty_n 的下降沿是与rptr 同属于一个时钟域的; 同理, 由于wptr 的变化(assert)使aempty_n 无效(de - assert),即aempty_n 的上升沿是与wptr 同属于一个时钟域的。
异步比较的时钟域如图5 所示。因此可以利用上述的理论基础来实现从aempty_n到empty 的过渡。其中, empty 是属于rclk 时钟域的。由于aempty_n 的下降沿是属于rclk 时钟域的, 所以可以用它来作为empty 的复位信号; 而aempty_n 的上升沿是属于wclk 时钟域的, 因此可以用双锁存器法将其过渡到rclk 时钟域, 最后得到的empty 信号就属于rclk 时钟域。同理可以得到full 信号。控制信号同步如图6 所示。
如图6 所示, 异步比较法的关键是用异步比较的结果——— 信号的下降沿作为最终比较结果的复位信号, 而其上升沿则用传统的双锁存器法进行同步, 最终得到的信号的上升沿与下降沿都是属于同一个时钟域。同时增加的两级锁存器也增加了一个时钟周期的延时输出, 这样在满有效状态下, 同时来自读写时钟的读写指令存在潜在的亚稳态问题就可以避免。在与传统的先将地址信号同步然后进行同步比较的方法相比, 异步比较法简单、高效、节省版图面积, 而且实现起来更简单。
2 .2 .3半满、将近满、将近空的产生
半满、将近满和将近空是对FIFO 芯片容量的一种提前判断。半满标志是一个双用输出端口, 在单片模式下, 当扩展输入端接地时, 这个端口就作为半满标志。在字扩展模式下, 该端口为扩展输出端。以2K 字容量的FIFO 为例来说明异步FIFO 的半满
与将近满。如图7 所示: 半满是指当写指针的位置与读指针的位置相比较, 如果w_point 和r_point 距离超过总容量的一半, 那么输出半满为有效输出。当2K 字的FIFO 半满有效时, 标志w_point 地址减去r_point 地址的范围在1K~2K 字之间。在具体电路实现上, 2K 字的FIFO 计数器的输出共有12 个地址线, 其中第12 根是为了判断满和空标志用的。所以判断半满主要是对第11根地址的读和写计数输出相同情况和不同情况下进行判断。将近空和将近满一般是读和写总容量相差在0~1/8和7/8 ~1 之间, 也有的设计是相差在几个比特范围之内。这个电路一般用的是比较器判断。在2K 字的FIFO中一般把后高4 位放在一起, 先判断正在读的高4 位和写的高4 位的大小关系, 再对应判断其他低位的大小关系, 看是否符合设计要求。当高4 位写地址减去读地址小于1、其低位读地址大于写地址时, 产生将近空。同样, 将近满也是先判断: 若高4 位写地址减去读地址大于15、低位读地址大于写地址时, 将近满输出有效。
图7 为设计2K 字的FIFO 将近空和半满标志位在Candence 软件下的仿真结果图。
对于标志信号都是采用异步比较输出下降沿作为最终比较结果的复位信号, 而其上升沿则采用传统的双锁存器法进行同步方法。此外, 在FIFO 的设计中还要考虑写入和读出的位宽是否相等, 在不相等的情况下要设计输入输出的自动匹配, 使输出位宽等于输入位宽。同时为FIFO 的深度扩展和宽度扩展设计扩展逻辑, 以适应多位宽和大容量的要求。一般的异步FIFO 通常所采用的是先将读、写地址同步后比较的方法, 而本文提出的异步比较以后利用触发器同步的方法相对前者可以减少延时, 从而使系统有更充裕的时间去进行读、写操作, 有利于提高时钟频率, 减少逻辑器件个数, 从根本上节约了版图面积。因此在以面积决定成本的今天, 对FIFO 标志位的产生采用异步比较法具有极其重要的现实意义。
参考文献
1 Goor V D, Schanstra A J, Zorian I Y. Fault models andtests for ring address type FIFOs. proc. 12th IEEE VLSITesSymposium, 1994:300~305
2 Feldman A R, Duzer T V. Hybrid josephson -CMOS FIFO.IEEE Transactions on Aplied Superconductivity,1995:2648~2651
3 Shibata N, Watanabe M. A currentsensed hightspeed and low- power first in first out memoryusing a wordline/bitline- swapped dual- portsram cell. IEEE Journal of Solid State Circuits,2002;37(6):735~750
4 Uyemura J P, Introduction to VLSI circuits andsystems.Biejingublishing House of ElectronicsIndusty, 2004:360~372

5 Hodges D A, Jackson H G, Saleh R A. Analysisand design of digital integrated circuits indeep submicrontechnology.BiejingublishingHouse of Electronics Industy,2005:280~286

6 Martin K. Digital Integrated Circuit Design.biejing:Publishing House of Electronics Industy,2002:437~447

7 Sharma A K. Advanced semiconductor memories: architectures,designs,and applications. Biejing: Publishing House of

Electronics Industy, 2005:13~83
8 Rabaey J M. Anantha chandrakason borivoje nikolic. digitalintegrated circuits: a design perspective. Biejing: Publishing
House of Electronics Industy,2004:461~467
( 收稿日期: 2006- 04- 25)
__

[ 本帖最后由 wice3 于 2007-1-21 13:54 编辑 ]

异步时钟亚稳态及FIFO标志位的产生.pdf

328.4 KB, 下载次数: 588 , 下载积分: 资产 -2 信元, 下载支出 2 信元

发表于 2007-1-21 22:56:40 | 显示全部楼层
a good article ,thanks alot
发表于 2007-1-23 21:18:20 | 显示全部楼层
谢谢LZ的分享~
发表于 2007-1-23 23:03:06 | 显示全部楼层
谢谢LZ的分享~
发表于 2007-1-24 18:54:27 | 显示全部楼层
好文章 学习
发表于 2007-1-25 22:29:30 | 显示全部楼层
好,谢谢分享!
发表于 2007-1-26 08:16:14 | 显示全部楼层
bucuo
 楼主| 发表于 2007-1-30 19:44:27 | 显示全部楼层
重新顶起来
发表于 2007-2-3 13:29:10 | 显示全部楼层
《集成电路应用》上的一篇文章
发表于 2007-2-7 18:22:26 | 显示全部楼层

xx

hao ahaha
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-29 14:22 , Processed in 0.046616 second(s), 11 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表