异步多时钟系统的同步设计
异步时钟数据同步方法

异步时钟数据同步方法异步时钟数据同步是指在不同状态、速率或时钟域的两个电子设备之间传输数据时,确保数据的正确性和同步性。
因为不同的状态、速率或时钟域可能导致数据传输的不同步,容易引发数据错误或丢失。
为了解决这个问题,可以采用以下几种方法进行异步时钟数据同步。
1. 同步异步转换器(Synchronizer):同步异步转换器是常用的一种方法,它可以将两个不同时钟域的信号之间建立同步关系。
通常,一个同步异步转换器由两级触发器(Flip-flop)构成。
第一级触发器根据初始时钟域的时钟信号进行触发,而第二级触发器根据目标时钟域的时钟信号进行触发。
这样,可以确保在目标时钟域接收到正确同步的数据。
2. 异步FIFO(First-In-First-Out):异步FIFO是一种具有先进先出功能的存储器,可以在不同时钟域之间传输和同步数据。
异步FIFO通常包括读指针和写指针,用于控制数据的读写和同步。
读指针和写指针的控制逻辑可以根据不同时钟域的时钟信号进行同步,保证数据的正确传输。
3.异步协议:异步协议是一种用于处理异步时钟数据传输的特殊协议。
异步协议通常包括一些额外的控制信号和状态机,用于保证数据的正确传输和同步。
异步协议可以根据不同时钟域的时钟信号进行同步,并且可以在传输数据之前进行握手、校验和错误处理。
4.异步握手协议:异步握手协议是一种用于在异步时钟数据传输中进行数据同步的协议。
异步握手协议通常包括一些额外的控制信号和状态机,用于确保数据的正确传输和同步。
异步握手协议可以根据不同时钟域的时钟信号进行同步,并且可以在传输数据之前进行握手、确认和错误处理。
5.异步串行通信接口:异步串行通信接口是一种用于在不同时钟域之间进行数据传输的接口。
异步串行通信接口通常包括一些特殊的编码和解码技术,用于确保在不同时钟域之间传输的数据的正确性和同步性。
异步串行通信接口可以根据不同时钟域的时钟信号进行同步,并且可以在传输数据之前进行握手、校验和错误处理。
FPGA异步时钟设计中的同步策略

经 验 交流
Te hnc l mmu ia in c ia Co nc t s o
‘ 自动化技 术与应 用'06 20 年第 2 卷第 1 5 期
FG P A异 步 时钟 设 计 中 的 同 步 策 略
廖 艳 。王 广君 。高 杨
武汉 40 7 ) 304 ( 中国地质大学 信息工程学 院 ,湖北
—
维普资讯 http:பைடு நூலகம்/
‘ 动 技 应 ) o年 5 第1 自 化 术与 用 2 6 第2卷 期 o
经 验 交 流
T c nc l m mu i in e h ia Co nc o s at
间 内发 生 变 化 , 时 b dt 既 不 是 逻 辑 … ’也 不 是 逻 辑 … ’ 此 a就 1, 0,
2 异 步设 计 中的亚 稳态
触发器是 F G P A设计 中最 常用 的基本器 件 。触发 器工作 过 程 中存在 数据 的建立(e p和保 持 (o ) st ) u hl 时间 。对 于使 用上 升 d 沿触发 的触发器来 说 , 建立时 间就是在 时钟上 升沿到来之前 , 触 发器数据端数 据保 持稳 定的最小时间 。而保持时 间是 时钟上 升
个 时间参 数内 , 入 信号 在时 钟 的上 升沿 是 不允 许发 生 变化 输
信号 dt a 经过一个锁存器 的输 出数据 为 a a —dt 时钟 b— 。用
收稿 日期 :05 8 9 20 —0 —2
c【 l 进行采样 的时候 , I 如果 a 吐正好在 b e —d l 8t 一hl k的 e 叩 o d时
摘
要 :P A异步 时钟设计 中如何 避免亚稳态的产生是一个必须考虑 的问题 。本文介 绍了 F G FG P A异步时钟设 计 中容易产生 的亚稳 态现象及其可能造成 的危 害, 同时根据实践经验 给出了解决 这些 问题 的几种同步策略 。
异步FIFO设计

异步FIFO设计同晓荣【摘要】为了解决数字系统中多个时钟不协调的问题,采用可编程逻辑器件为平台设计了一款异步先进先出的数据缓存器,通过使用格雷码编码方式使得亚稳态发生的概率降到最低,最后使用Verilog HDL硬件描述语言在QuartusⅡ软件中仿真验证.%In the digital system there is a plurality of clocks which are not harmonious. An asynchronous FIFO isdesigned in the programmable logic devices. Because the gray code is used, the probability of occurrence of metastabilityis the minimum. Finally the Verilog HDL hardware description language is used and simulated in the Quartus IIsoftware.【期刊名称】《河南科学》【年(卷),期】2012(030)001【总页数】3页(P97-99)【关键词】异步;先进先出;亚稳态;格雷码【作者】同晓荣【作者单位】渭南师范学院数学与信息科学学院,陕西渭南714000【正文语种】中文【中图分类】TP391.8随着微电子工艺的飞速发展,数字系统设计规模也在不断扩大,为了设计的需要,一个系统中往往含有多个时钟.由于不同的时钟之间,时钟频率不相关,使得数据从一个时钟域传递到另一个域时,系统重复地进入亚稳定状态.特别是在高速数据采集系统中,模数转换时钟频率和微型计算机不是同一个时钟频率时,很容易造成采样的过程中采样出错.因此如何设计异步时钟之间的接口电路,是实现异步时钟之间的数据传输的一个关键问题.而解决这个问题的方案是采用异步先进先出的数据缓存器(FIFO).因此异步FIFO在高速数据采集方面具有广泛应用.FIFO是一种先进先出的数据缓冲器,与普通的数据存储器的区别是没有外部读写地址线.这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序地读出数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址.FIFO分为同步FIFO和异步FIFO.同步FIFO是指读时钟和写时钟为同一个时钟.在时钟沿来临时同时发生读写操作.异步FIFO是指读写时钟不一致,读写时钟是互相独立的.这里主要介绍一种异步FIFO的设计.异步FIFO系统分为读时钟域和写时钟域两个完全独立的时钟域;异步FIFO的存储器是一块双端口RAM,允许同时进行读写操作.在写时钟域部分,由写地址产生逻辑产生写控制信号和写地址;读时钟域部分由读地址产生逻辑产生读控制信号和读地址[1-10].设计异步FIFO系统有两个难点,一是怎样降低亚稳态的发生概率,二是怎样产生空/满标志.亚稳态是指,如果触发器的建立时间/保持时间不满足要求时,可能产生亚稳态,在这个亚稳定期间,触发器可能输出未知电平,经过决断时间之后输出端Q端将稳定到0或1上,但是究竟是0还是1,是随机的,与输入没有必然的关系.即触发器输出端Q在有效时钟边沿到来之后比较长的一段时间处于不确定的状态,在这段时间里输出端Q端可能输出毛刺、振荡、固定的某一电压值,而不是等于数据输入端D的值.在异步的FIFO的实现中,采用可编程逻辑器件FPGA作为开发平台,使用Verilog HDL硬件描述语言,它具有设计灵活、可操作性强等特点.异步FIFO系统具有四个模块,分别为双向端口RAM模块、写控制模块、读控制模块、空/满标志位产生逻辑模块.生成的顶层设计图如图1所示.双端口RAM在普通的随机数据存储器的基础上改进而来,双端口RAM模块有六个端口,分别为读出数据端、写入数据端、读数据端地址、写入数据端地址、读出时钟和写入使能端.双端口RAM在FPGA中的顶层设计图如图2所示.为了降低亚稳态发生概率,对地址采用格雷码编码方式,由于格雷码在相邻的两个码元之间只由一位变换,这就避免计数器与时钟同步的时候发生亚稳态现象.为了保证数据正确的写入或读出,而不发生溢出或读空的状态出现,必须保证FIFO在满的情况下,不能进行写操作,在空的状态下不能进行读操作.而判断FIFO的空/满状态的具体做法是将FIFO地址分成4部分,每部分分别用高两位的最高有效位(MSB),用 00、01、11、10 决定 FIFO 是否为将满或空.如果写指针的高两位MSB小于读指针的高两位MSB则FIFO为“几乎满”,若写指针的高两位MSB大于读指针的高两位MSB则FIFO为“几乎空”.空/满标志位产生逻辑模块在FPGA中的顶层设计图如图3所示.2.2.1 满标志实现满标志是表示FIFO已满或将要满时由FIFO的状态电路送出的一个信号,以阻止FIFO的写操作继续向FIFO中写数据而造成溢出.生成的顶层设计图如图4所示.2.2.2 空标志实现空标志是表示FIFO已空或将要空时由FIFO的状态电路送出的一个信号,以阻止FIFO的读操作继续从FIFO中读出数据而造成无效数据的读出.生成的顶层设计图如图5所示.在Altera公司的FPGA仿真平台QuartusⅡ软件中进行相关仿真,得到的时序图如图6所示,得到的RTL如图7所示.文章在介绍了FIFO的基本概念和工作原理的基础上,分析了亚稳态的产生原因,结合异步FIFO实现的设计难点.设计了一款异步FIFO,并在FPGA开发平台实现,仿真结果表明,格雷码降低了亚稳态出现的概率.【相关文献】[1]谢文华,高文华.FPGA异步FIFO设计中的问题与解决办法[J].单片机与嵌入式系统应用,2009(8):33-35.[2]雷海卫,刘俊.FPGA 中软 FIFO 设计和实现[J].微计算机信息,2008,24(2):207-209.[3]周敏.高速异步 FIFO 的设计和实现[J].计算机工程与科学,2009,31(2):85-87.[4]徐海铭,程月东,刘荣林,等.高速异步 FIFO 设计[J].电子与封装,2009,9(6):14-16.[5]栗永强.基于 FPGA 的高速 FIFO 电路设计[J].电子产品世界,2010,17(4):46-48.[6]于祥凤,刘学斌,胡炳樑,等.基于FPGA的高速数据存储系统中FIFO控制的设计[J].核电子学与探测技术,2010,30(1):59-62.[7]罗先哲,张仁喆,付大鹏.基于FPGA的高速异步FIFO存储器的设计与实现[J].中国科技信息,2009(2):90-94.[8]肖静娴,戴亚文.基于 FPGA 的异步 FIFO 缓存设计[J].电子测量技术,2009,32(11):92-94.[9]庾志衡,叶俊明,邓迪文.基于FPGA与DDR2、SDRAM的大容量异步FIFO缓存设计[J].微型机与应用,2011,30(4):34-36.[10]彭莉,秦建业,付宇卓.异步FIFO 的设计与验证[J].计算机工程与应用,2005,41(3):98-101.。
异步信号同步方法

异步信号同步器设计(2)时间:2011-09-19 14:59 作者:赵信来源:网站投稿三、异步电路中同步的三种方法如果使用GALS设计电路,那么就需要将异步信号进行同步处理,那么同步处理最大的问题就是如何消除亚稳态,本章将主要介绍四种同步方法。
3.1 电平同步器只要在采到异步信号等待足够长的时间,处在亚稳态的触发器就会恢复到一个有效地电平上,这个延时通常通过在采到异步信号的触发器后面再加入一级触发器来实现,也就是说异步信号只有在经过目的时钟域的两级触发器采样后才会对目的时钟域的后续电路起作用。
这样的双触发器构成的异步信号采样逻辑被称为电平同步器。
这些策略不能够消除亚稳态,只是减小亚稳态。
同步使用的两个触发器,这两个触发器之间只要满足hold的要求即可。
注意,如果两个以上的关联信号,需要使用特别的方法,不能使用该方法。
该方法电路如下所示:图4 电平同步器值得注意的是如果第一级触发器进入亚稳态状态,而恢复到稳定电平需要的时间很大,那么第二级触发器很可能采到的数据也是亚稳态状态。
但是事实上实际电路的极小噪声和环境的变化都会是触发器脱离亚稳态状态,所以经过两级触发器同步的后,信号出现亚稳态的可能性就会减小到可以忽略的地步。
如果对性能要求比较高的系统,可以增加同步触发器的级数,来获取更好的稳定性,但是代价是付出更多的同步延时。
这种方法要求两个触发器足够近,时钟的偏斜比较小,且两个触发器之间要满足hold要求。
3.2 脉冲同步器脉冲同步器如下图所示:图5 脉冲同步器波形如下:图6 脉冲同步器波形这种方法的功能是将一个时钟域的单时钟周期信号转换为另一个时钟域的单周期信号,这种方法的局限是两个脉冲之间必须有最小的时间间隔,如果两个脉冲离的太近,那么在同步时钟域的两个脉冲就可能相邻,导致在同步时钟域的信号可能大于一个时钟时钟周期。
如果两个脉冲信号非常近,那么同步器将检测不到任何一个脉冲,一般要求两个脉冲的时间间隔大于两个接受时钟周期。
关于FPGA设计中多时钟域和异步信号处理有关的问题

有一个有趣的现象,众多数字设计特别是与FPGA设计相关的教科书都特别强调整个设计最好采用唯一的时钟域。
换句话说,只有一个独立的网络可以驱动一个设计中所有触发器的时钟端口。
虽然这样可以简化时序分析以及减少很多与多时钟域有关的问题,但是由于FPGA外各种系统限制,只使用一个时钟常常又不现实。
FPGA时常需要在两个不同时钟频率系统之间交换数据,在系统之间通过多I/O接口接收和发送数据,处理异步信号,以及为带门控时钟的低功耗ASIC进行原型验证。
本章讨论一下在FPGA设计中多时钟域和异步信号处理有关的问题和解决方案,并提供实践指导。
这里以及后面章节提到的时钟域,是指一组逻辑,这组逻辑中的所有同步单元(触发器、同步RAM块以及流水乘法器等)都使用同一个网络作为时钟。
假如设计中所有的触发器都使用一个全局网络,比如FPGA的主时钟输入,那么我们说这个设计只有一个时钟域。
假如设计有两个输入时钟,如图1所示,一个时钟给接口1使用,另一给接口2使用,那么我们说这个设计中有两个时钟域。
图1:双时钟域设计平时我们在设计中遇到的门控时钟、衍生时钟以及事件驱动的触发器都可归为时钟域类别。
如图2所示,通过一个简单门控时钟创建了一个新的时钟域。
我们知道,这类时钟控制在FPGA设计中并不被推崇(可以使用时钟使能替代时钟门控),然而它却非常有利于我们理解时钟域这一概念。
本章我们将着重详细讨论以下主题:•两个不同时钟域之间传输信号。
•亚稳态的产生以及对设计的可靠性的影响•通过相位控制避免亚稳态•在时钟域之间传输单个信号,将信号打两拍•使用FIFO在时钟域之间传输多位数据•使用分区同步器模块提高设计的组织架构•处理ASIC验证原型里的门控时钟•建立一个单时钟模块•自动门控移除图2:通过门控时钟创建的时钟域一、跨时钟域设计中包含多时钟域,首先要解决的是在不同时钟域之间传输信号的问题。
信号跨时钟域传输将会是一个大问题,原因如下:1、信号跨时钟域传输产生的故障总是不太容易复现。
同步复位和异步复位的比较:多时钟系统中复位的处理方法

同步复位和异步复位的比较3:多时钟系统中复位的处理方法这是一个很实际的问题,因为在较大型的系统中,一个时钟驱动信号显然不能满足要求,一定会根据系统的要求用多个同源时钟当然也可以是非同源了去驱动系统的不同部分;那么在这样的多时钟系统中,复位键怎么设置它的稳定与否直接关系到了整个系统的稳定性,因此要格外注意在我看来,复位信号在同步时序系统中的地位和时钟信号一样重要;下面就说一下具体的处理方法,当然所遵循的原则就仍应该是上文的“异步复位,同步释放”:reset removal:顾名思义,就是同一个系统中的多个同源时钟域的复位信号,由彼此独立的“reset synchronizer”驱动;当异步复位信号有效时,各时钟域同时复位,但是复位释放的时间由各自的驱动时钟决定,也是就说:时钟快的先释放,时钟慢的后释放,但是各复位信号之间没有先后关系;coordinated reset removal:这是相对于上述方式来说的,也就是说各时钟域的复位信号彼此相关,各个部分系统虽然也同时复位,但是却分级释放;而分级的顺序可由各个“reset synchronizer”的级联方式决定;可以先复位前级,再复位后级,也可以反过来;反正方式很灵活,需要根据实际需要而定;由于图片上传问题,我只能用程序表示了,大家凑或看吧,哈哈例子:三级复位系统,系统中的时钟分别为1M,2M,11M:第一级Reset_Sychronizer程序:module Reset_Synchronizeroutput reg rst_n,input clk, asyncrst_n;reg rff1;always posedge clk , negedge asyncrst_n beginif asyncrst_n {rst_n,rff1} <= 2'b0;else {rst_n,rff1} <= {rff1,1'b1};endendmodule第2,3级的Reset_Sychronizer程序:module Reset_Synchronizer2output reg rst_n,input clk, asyncrst_n, d;reg rff1;always posedge clk , negedge asyncrst_n beginif asyncrst_n {rst_n,rff1} <= 2'b0;else {rst_n,rff1} <= {rff1,d};endendmodule顶层模块的源程序:`include ""`include ""module AsynRstTree_Transinput Clk1M,Clk2M,Clk11M,SysRst_ n,output SysRst1M_n,SysRst2M_n,SysRst11M_n;Reset_Synchronizer Rst1M.clkClk1M,. asyncrst_n SysRst_n,.rst_nSysRst1M_n;Reset_Synchronizer2 Rst2M.clkClk2M,.d SysRst1M_n,.asyncrst_nSysRst_n,.rst_nSysRst2M_n;Reset_Synchronizer2 Rst11M.clkClk11M,.d SysRst2M_n,. asyncrst_nSysRst_n,.rst_nSysRst11M_n;endmodule最后,我要说明一下,这两种方法我都试过,复位都很稳定,但并没有明显看出孰优孰劣;不知个人高人是怎么在实际系统中用的,帮忙指点一下呀;哈哈。
异步fifo设计及时序约束设置

一、前言跨时钟域的同步处理,使用异步FIFO是常用的方式之一,对于异步FIFO的设计,网上的大部分资料来源于《Simulation and Synthesis Techniques for Asynchronous FIFO Design》一文其异步FIFO的结构如下图所示本文不是介绍上图描述的设计。
我从基本的数字电路时序开始,介绍异步FIFO的相关问题。
最后介绍如何用时序约束保证设计的正确性二、数字电路时序对于数字电路来讲,我们的信号在时钟边沿发生变化,Dat1信号是一种理想情况,而Dat2是实际情况,其特点是一、相对时钟边沿有延时二、信号变化有一段时间(电平转换时间),在这段时间就是亚稳态在亚稳态期间进行数据采样,不能获得稳定的值。
数字电路中经过时序约束,在T1产生的信号,在T2一定稳定(否则就是不满足时序),所以对于只有一个时钟的数字电路来说,它在T1和T2都能获得稳定的信号(T1时刻的值为0、T2时刻的值为1)三、跨时钟域时序问题对于异步时钟而言(相位不同),对于CLK1产生的信号,CLK2有可能在任意时刻进行数据采样在FIFO的设计中,将会产生2种信号,一种是数据本身(用Data表示),另外一种是指示数据是否有效(用valid表示),注意(valid不一定是一个比特的寄存器,可以是由FIFO中的读写指针产生而来,例如fifo的full或empty状态)异步FIFO的问题在于,如果CLK2在时钟T2进行采样,那么有可能得到valid有效,而数据无效的情况。
这样在CLK2采样取得的设计就是错误的数据。
四、处理异步FIFO的valid和data(理论基础)我们假设valid为低电平表示没有数据,高电平为有数据,解决的办法就是,当CLK对valid进行采样时,即使valid处于亚稳态期间,数据信号也是稳定的如上图所以,在T1时刻进行上升沿采样,虽然valid是一个亚稳态状态,但是此时Data 是一个稳定的值,如果在T1时刻采样的valid为1,那么可以得到稳定的Data信号,如果在T1时刻采样的valid为0,那么控制逻辑认为在T1无法获得数据,从而在下一个时钟获取注意:T2时刻是在下降沿进行采样,而此时的Data信号也是稳定的五、如何实现为了让valid和Data处于上面的状态,我们可以对valid进行延时处理,即使用时钟对其进行采样,必须使用2个寄存器依次采样,才能保证至少有一个时钟的延时valid1是CLK2对valid进行采样产生的,如果采样的时机不好,那么valid1相对valid只有一点点延时,valid2是CLK2对valid1的采样,这样valid2相对于valid至少有CLK2一个周期的延时,也就满足了第二节的条件。
基于多时钟域的异步FIFO设计

基于多时钟域的异步FIFO设计摘要:在大规模集成电路设计中,一个系统包含了很多不相关的时钟信号,当其目标域时钟与源域时钟不同时,如何在这些不同域之间传递数据成为了一个重要问题。
为了解决这个问题,我们可以用一种异步FIFO(先进先出)存储器来实现。
本文介绍了一种利用格雷码指针实现在多时钟域传递数据的FIFO设计。
关键词:FIFO,多时钟域,异步,格雷码,亚稳态,同步装置1、引言随着计算机、多媒体和数据通信技术的高速发展,数字图像、语音等数据传输技术近年来得到了极大的重视和长足的发展,并得到了广泛的应用。
如何保障这些语音、图像等数据传输的准确性、及时性?如何高效率、高速度地传输这些数据?这些都是当今信息领域的科研人员所必须解决的问题。
而往往在这些数据传输系统中,又会遇到不同系统接口间数据传输的问题。
通常在两个相连接的不同电路系统之间,因为每个系统的数据传输速度不同,在系统的接口部分就会出现数据输入速度和输出速度不同,也就是会发生数据传输速率不匹配的问题。
这种情况往往会让传输的数据产生复写或者丢失,降低数据的传输速率,同时也因为数据复写、丢失和无效数据的读入,将会产生数据出错,因此需要在不同系统的接口处设计数据传输单元来实现数据的高速高效传输。
在现代的系统设计中,为了提高系统的性能,设计者对数据的传输率、数据的传输量,对系统各部分之间的接口部分不同的数据输入和接收传输率的匹配有越来越高的要求,而FIFO存储器以其合理的价格、使用的方便灵活性以及上述的对速度匹配的应用而成为解决这类问题的理想途径,因此FIFO存储器在计算机、多媒体和数据通信领域都有着广泛的应用,因此对FIFO 的研究与设计应用具有理论上和实际应用上的双重意义。
2、FIFO的功能描述FIFO 是数据传输系统中极其重要的一环,特别是在两个处在不同时钟域的系统接口部分,FIFO 的合理设计,不但能使接口处数据传输的输入输出速率进行有效的匹配,不使数据发生复写、丢失和读入无效数据的情况,而且还会有效地提高系统中数据的传输效率,FIFO 存储器主要分为基于移位寄存器型和基于RAM 型,而RAM 型又有单口RAM和双口RAM 之分,目前来说,用的较为广泛的是基于双端口RAM的FIFO。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图 6 调整控制信号的次序
2 . 3 两个经过编码的控制信号穿越时钟域 图 —所示为两个经过编码的控制信号实现时钟域
的穿越 " 如果这两个经过编码的信号在被采样时有轻 微的抖动 Œ将会在新的时钟域中造成一个时钟周期的 解码输出错误 "
图 8 使能信号经过整形
图 7 经过编码的控制信号穿越两个时钟域
一种解决方案如图 ˜所示 " 发送一个 ÅÎÁÂÌÅ信号
图 3 控制信号穿越两个时钟域 # 34#
图 5 顺序控制信号在时钟域之间的传递
第 “‘卷第 •期
谢修祥 Œ等 š异步多时钟系统的同步设计技术
# 基本电子电路 #
这种情况下的解决方案是 š只发送 ‘个控制信号 给新的时钟域 Œ并且在该时钟域中产生第 ’个有相移 ˆ要求 ‰的顺序控制信号 " 调整控制信号后的次序见 图 –"
作为 / 准备标志 0给新的时钟域 " 发送端时钟域必须 在使解码输入有效之后的 ‘个周期产生此 ÅÎÁÂÌÅ信 号 Œ且在使解码输入无效之前的 ‘个周期移走该信号 " 如前所述 ŒÅÎÁÂÌÅ信号的有效期必须大于接收时钟域 的 ‘个时钟周期 " 在最坏的情况下 Œ在接收时钟域中 Œ ÅÎÁÂÌÅ信号或者与编码输入信号同时被采样 Œ或者与 其同时被置为无效 " 在最好的情况下 ŒÅÎÁÂÌÅ信号有 效比编码输入信号有效晚 ‘个接收时钟周期 Œ且比它 无效之前 ‘个周期变为无效 " 这种办法能确保编码输 入信号在被使能之前是有效的 "
关键词 š多时钟系统 Œ亚稳态 Œ控制信号同步技术 Œ数据同步技术 Œ格雷码计数器 Œ ¦©¦¯ 中图分类号 š´®—™
0引 言
随着数字系统的规模越来越大 !复杂程度越来越 高 Œ’个或多个时钟域在设计中的应用越来越多 " 在 多时钟域中 Œ不可避免地会遇到控制信号的交互和数 据的相互传递 Œ由于各时钟的频率和相位不同 Œ在进行 电路设计时 Œ必须充分考虑时序对功能的影响 Œ表面上 看起来没有问题的电路可能会因为忽视了时序的重要 性而实际上并不能真正达到设计的功能 Œ造成多时钟 域之间的同步失败 " 同步问题中最有可能出现的就是 亚稳态的产生和传播 " 本文将对同步设计中必须考虑 的因素进行分析 Œ并分别讨论了控制信号的同步和数 据通路的同步 Œ提出了常见问题的解决方案 "
图 4 控制信号在穿越时钟之前进行合并
2. 2 两个有次序要求的控制信号穿越时钟域 如图 •所示 Œ在短的流水线设计中 Œ两个控制信号
ÁÅΑ 和 ÁÅÎ’Œ用于为顺序数据的传递提供 ÅÎÁÂÌÅ信 号 " 在第 ‘个时钟域 ŒÁÅΑ可能会在 ÁÅÎ’变为有效之 前产生一个很短的中断 Œ而第 ’个时钟域有可能正好 在这个很短的时隙中对 ÁÅΑ和 ÁÅÎ’进行采样 Œ这样 将会在第 ’个时钟域的使能控制链中造成一个时钟周 期的空隙 Œ使 Á’的输出信号被第 ’个寄存器丢失 "
1 亚稳态
根据文献 »‘½Œ亚稳态定义为 š当用一个时钟对变 化的信号进行采样时 Œ事件发生的次序决定其输出 " 事件之间的时间间隔越短 Œ判断哪一个先到所花的时 间越长 " 当两个事件发生的时间相当接近时 Œ判断过 程所花的时间将会超过允许的时间 Œ此时将会造成同 步失败 "
每个寄存器都有其建立和保持时间 Œ或者说寄存 器的输入数据在其上升沿之前和之后不允许发生变 化 " 当数据源的时序不满足接收时钟域中的寄存器的 建立 •保持时间时 Œ就会出现亚稳态 Œ此时寄存器就会 处于 / 浮空 0状态 Œ其输出电压在高电平达不到逻辑 / ‘0 Œ在低电平达不到逻辑 / •0 Œ在这段时间内触发器 的 ± 端会出现毛刺 !振荡 Œ或固定在某一电压值 Œ而不 一定等于数据输入端 ¤ 的值 " 这段时间称为决断时 间 ˆÒÅÓÏÌÕÔÉÏÎ ÔÉÍʼn" 经过决断时间后 Œ± 端将稳定到 •或 ‘上 Œ但是究竟是 •还是 ‘Œ则是随机的 Œ与输入没
如图 ‘所示 Œ当在一个时钟域中产生的信号在被 另一个时钟域的时钟采样时过于靠近其上升沿 Œ会造 成同步失败 " 同步失败是因为输出在其采样点上处于 亚稳态所形成的 Œ而且这种亚稳态可能向后传播 Œ造成 后级出现逻辑错误 "
图 1 亚稳态的产生过程
在接收时钟域使用两级寄存器 Œ即所谓同步器 Œ能 有效地消除亚稳态 Œ如图 ’所示 "
3 数据通路的同步技术
数据在时钟域之间的传递是多个随机变化的控制 信号在时钟域之间传递的一种实例 " 这种情况下 Œ用 同步器来处理同步问题往往不能收到满意的效果 Œ因 为多位数据的变化将会使同步器的采样错误率大大增 加 " 常用的数据同步方法有两种 š一种是用握手信号 › 另一种是用 ¦©¦¯ Œ一个时钟域存数据 Œ另一个时钟域 取数据 "
图 2 亚稳态的消除方法
# 33#
# 基本电子电路 #
电子工程师
’•••年 •月
接收时钟域的第 ‘个寄存器对发送时钟域的输出 信号进行采样 Œ此时该寄存器的输出处于亚稳态 Œ又经 过一个 ˆ接收 ‰时钟周期后 Œ第 ’个寄存器对第 ‘个寄 存器的输出进行采样 Œ此时其输出已经变为稳定 " 从 理论上来说 Œ有可能第 ‘个寄存器的输出在被第 ’个 寄存器采样时仍然处于亚稳态 Œ这样会使第 ’个寄存 器的输出也变为亚稳态 " 也就是说 Œ用这种电路仍然 可能造成同步失败 Œ这时就要考虑其 - ´¢¦ˆ平均故障 间隔时间 ‰" 亚稳态发生的概率与时钟频率无关 Œ但 - ´¢¦则与时钟频率有很大的关系 " 时钟频率越高 Œ - ´¢¦会相 应 地 降 低 " 因 此 Œ适 当 降 低 频 率 能 延 长
收稿日期 š ’••”2‘’2‘•› 修回日期 š ’•••2•“2‘•"
有必然的关系 " 亚稳态是寄存器的一个固有特性 " 正 常采样也会有一个亚稳态时间 " 当建立保持时间满足 时 Œ寄存器在经历采样 !亚稳态后 Œ进入一个正确的状 态 " 如果建立保持时间不满足 Œ那么寄存器会有一个 相当长的亚稳态时间 Œ最后随机进但在新的时钟域中实现同步将会带来很多问题 " 更好 的方法是用两个格雷码计数器来传递 ¦©¦¯ 指针 " 格
# 36#
雷码计数器每次只改变 ‘个计数位 " 如果同步时钟在 格雷码计数器的过渡过程中采样 Œ其结果只可能是新 值或是旧值 Œ因为每次只有 ‘位发生了变化 " 格雷码 计数器用一个寄存器来保存格雷码 Œ寄存器的输出值 反馈给一个格雷码 2二进制转换器 Œ二进制值每加 ‘增 长一次 Œ新的二进制值传给一个二进制 2格雷码转换 器 Œ其输出作为格雷码寄存器的输入 "
- ´¢¦"
2 控制信号的同步技术
在进行多时钟系统的设计时 Œ人们常犯的一个错 误是 Œ在多个控制信号穿越一个时钟域到达另一个时 钟域时 Œ往往忽视了控制信号次序的重要性 " 此时 Œ用 同步器来实现对控制信号的同步并不是一个好办法 " 如果控制信号的次序很关键 Œ必须对此引起重视 " 2 . 1 两个有同步要求的控制信号同时穿越时钟域
一个 n位的格雷码 Œ要转换为等值的二进制码 Œ二 进制码的第 •位等于所有格雷码各位 ˆ从 •到 n • ‘‰ 的异或 Œ第 ‘位等于格雷码的第 ‘位到第 n • ‘位的异 或 Œ如此类推 " 二进制码的最高位和格雷码的最高位 相等 " 一个 ”位的格雷码到二进制的转换如下 š
ÂÉλ•½ • ÇÒÁÙ»“½C ÇÒÁÙ»’½C ÇÒÁÙ»‘½C ÇÒÁÙ»•½ ÂÉλ‘½ • ÇÒÁÙ»“½C ÇÒÁÙ»’½C ÇÒÁÙ»‘½ ÂÉλ’½ • ÇÒÁÙ»“½C ÇÒÁÙ»’½ ÂÉλ“½ • ÇÒÁÙ»“½
第 “‘卷第 •期 ’•••年 •月
电子工程师 ¥¬¥£ ´² ¯ ®©£ ¥®§©®¥¥²
¶ ÏÌŽ“‘ ®ÏŽ• - ÁÙ ’•••
异步多时钟系统的同步设计技术
谢修祥 Œ王广生
ˆ北京工业大学电子信息与控制工程学院 Œ北京市 ‘•••’’‰
=摘 要 > 对多时钟系统的同步问题进行了讨论 Œ提出了亚稳态的概念及其产生机理和危害 ›叙 述了控制信号和数据通路在多时钟域之间的传递 ›讨论了控制信号的输出次序对同步技术的不同要 求 ›重点论述了常用的数据通路同步技术 ) ) ) 用 ¦©¦¯ 实现同步的原理及其实现思路 "
n位二进制转换到格雷码时 Œ格雷码的第 •位等 于二进制码的第 •位和第 ‘位的异或 Œ第 ‘位等于二 进制码的第 ‘位和第 ’位的异或 Œ如此类推 Œ二者的最 高位相等 " ”位二进制码到格雷码的转换如下 š
ÇÒÁÙ»•½ • ÂÉλ‘½C ÂÉλ•½ ÇÒÁÙ»‘½ • ÂÉλ’½C ÂÉλ‘½ ÇÒÁÙ»’½ • ÂÉλ“½C ÂÉλ’½