微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > 跨越鸿沟:同步世界中的异步信号

跨越鸿沟:同步世界中的异步信号

时间:08-21 来源:Mike Stein,Paradigm Works 点击:

表 3

  格雷码计数器是一个二进制累加器,在累加器前、后各带有一个转换器,分别用于格雷码转换为二进制码,和二进制码转换为格雷码(图 8)。格雷码与二进制码的转换是一个异或运算,所以只需比一个二进制计数器多几个逻辑电平。在格雷码转换成二进制码时,使用:BN=GN;BN-1=BN+GN-1;BN-2=BN-1+GN-2 . B1=B2+G1;B0=B1+G0。而将二进制码转换成格雷码时,使用:GN=BN;GN-1=BN+BN-1;GN-2=BN-1+BN-2 . G1=B2+B1;G0=B1+B0。在设计中可以采用同样的技术来比较格雷码指针的值,即在各个指针与二进制比较逻辑之间增加转换器。

图8,格雷码计数器是一个二进制累加器,在累加器前、后各带有一个转换器。

  用这种指针逻辑的 FIFO 很快,每个时钟周期中电路都可以读写 FIFO。但是,在每个周期都访问 FIFO 意味着 FIFO 状态要包括"将满"和"将空"两种指示,这样读写 FIFO 的电路才能有停止时间。"将满"表示只能再写入一项,"将空"则表示只有一项可读。这种情况描述了一个要求最少的可能状态信号的设计,以及一个需要更多指示的设计,如果在固定的最小尺寸情况下用猝发方式访问 FIFO 的电路的话。

  这种 FIFO 状态技术会给读、写带来不良状态。当 FIFO 满时,写端口的状态指示已满,而在电路从 FIFO 中读出一项后,该状态仍为满,因为同步机制使读指针相对写入一侧的比较逻辑有个延迟。同样,在读出一侧的空状态指示也有这个问题,因为同步机制使写指针相对读出一侧的比较逻辑有延迟。

  如果你在设计跨不同时钟域电路时,使用一些技术来降低通信失败的风险,则处理跨时钟域的信号就不再是艰巨的任务。同步机制可以防止接收跨时钟域信号的触发器出现亚稳态,从而避免导致不可预知的电路行为。对于在多个时钟周期内一直保持有效的信号来说,电平同步器的效果很好。对于要转换成新时钟域脉冲的较慢时钟域电平信号,要采用边沿检测同步器。最后,对跨时钟域的脉冲信号应使用脉冲同步器。还要记住,当一个信号总线跨越时钟域时,整个总线要在同一个时钟周期内到达新的时钟域。不要分别同步每一个信号,而要采用一个保持寄存器和握手方式。握手用来表示寄存器中的信号何时有效,何时可以采样。对数据总线来说,握手和一个保持寄存器很有用,但每次向新时钟域传送的数据字不超过一个。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top