首页资源分类FPGA/CPLD > 多时钟域异步信号的参考解决方案

多时钟域异步信号的参考解决方案

已有 447868个资源

下载专区

上传者其他资源

    文档信息举报收藏

    标    签:fpga跨时钟

    分    享:

    文档简介

    在ASIC 设计中,不同的模块往往工作在不同的频率下,在一个芯片上采用单时钟设计基本上是不可能实现的。

    多时钟域的设计是SOC 设计中的一个重要环节。分析了多时钟域设计中异步信号的产生以及带来的亚稳定性对整个电路

    性能和功能的影响,提出了采用同步器,握手通信协议,FIFO 等方法减小亚稳定性概率和其影响的措施,并且给出了实用电

    路图并进行了实现,从而使得电路能够在多时钟域下更加健壮和稳定

    文档预览

    微电子技术 袁  伟等 :多时钟域的异步信号的参考解决 多时钟域的异步信号的参考解决 袁  伟 ,赵  勇 (北京大学 深圳研究生院  广东 深圳  518055) 摘  要 :在 ASIC 设计中 ,不同的模块往往工作在不同的频率下 ,在一个芯片上采用单时钟设计基本上是不可能实现的 。 多时钟域的设计是 SOC 设计中的一个重要环节 。分析了多时钟域设计中异步信号的产生以及带来的亚稳定性对整个电路 性能和功能的影响 ,提出了采用同步器 ,握手通信协议 ,FIFO 等方法减小亚稳定性概率和其影响的措施 ,并且给出了实用电 路图并进行了实现 ,从而使得电路能够在多时钟域下更加健壮和稳定 。 关键词 :多时钟域 ;亚稳定性 ;异步信号 ;单时钟设计 中图分类号 : TN79      文献标识码 :B      文章编号 :1004 373X(2006) 16 136 03 Solution of Multi Asynchronous Clock Design YUAN Wei ,ZHAO Yong (Shenzhen Graduate School ,Peking University ,Shenzhen ,518055 ,China) Abstract : In ASIC design ,different modules often work in different f requency. Designing a p ure ,one clock synchronous de2 sign is luxury and impo ssible. The multi clock domain design is an important part in SOC. This paper analyses t he metastabil2 ity which is caused by t he asynchrono us signal flowing in t he multi clock do main and p ut s fo rward some solutio ns ,for exam2 ple ,using synchronizer ,hand shake communication and FIFO to diminish t he effect of metastability ,so as to make t he circuit mo re stable and ro bust . The important circuit diagram is p ropo sed for understanding clearly. Keywords :multi clock domain ;metastability ;asynchronous signal ;one clock design   在数字电路设计中 ,常会遇到多时钟域设计的问题 ,不 同模块经常工作在不同的时钟域中。数据或控制信号需要 从一个时钟域传递到另外一个时钟域 ,而源域和目标域的 时钟工作在不同的频率下 ,从而消除了同步操作的可能性 。 使系统进入亚稳定性状态 ,从而导致系统的冒险和混乱。 1  亚稳定性的由来 亚稳态定义为 :当用一个时钟对变化的信号进行采样 时 ,事件发生的次序决定其输出 ,事件之间的时间间隔越 短 ,判断哪一个先到所花的时间越长 ,当两个事件发生的 时间相当接近时 ,判断过程所花的时间将会超过允许的时 间 (也就是不满足信号的建立保持时间约束) ,此时将会造 成同步失败 。 触发器是 IC 设计中的一个重要元件 ,而触发器工作 过程中存在数据建立与保持时间的约束 。对于上升沿触 发器来说 ,建立时间就是指在时钟上升沿到来前数据保持 稳定的最小时间 ,保持时间是指在时钟上升沿到来后 ,数 据还保持不变的最小时间 。如果建立与保持时间的约束 不能够得到满足 ,触发器就会进入亚稳定状态 ( 也就是输 出可能为 1 ,也可能为 0 ,是个不确定状态 ,和输入没有逻 辑关系) 。当触发器进入亚稳定态 ,而持续时间超过一个 时钟周期 ,就会影响到下一级触发器 ,导致连锁反应 ,最后 导致整个系统功能混乱 。所以必须采取措施减小亚稳定 性发生的可能性和他的影响 。 在单时钟域 ,因为单时钟设计不存在时钟之间的延迟 和错位 ,所以在综合时很容易满足建立条件和保持条件的 定时验证 。在多时钟域里 ,则必须考虑亚稳定性的发生 。 如图 1 所示 。 图 1  不同时钟域间信号的传递 其中 clk1 与 clk2 是 异 步 时 钟 ( 频 率 与 相 位 都 不 相 同) 。 收稿日期 :2006 03 09 136 图 2  多时钟域带来的亚稳定性问题 © 1994-2006 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net 《现代电子技术》2006 年第 16 期总第 231 期   集成电路 2  一些常用的解决方法 2. 1  采用同步器设计来传递控制信号 当需要传输的信号为控制信号时 ,一般的方法是采用 同步装置 ,也就是在 2 个不同的时钟域之间插入同步器 。 如图 3 所示 。 图 3  采用同步装置来解决多时钟域信号传输的问题 如图 3 所示 ,对于同步器 1 来说 ,因为 133 M Hz 的时 钟频率大于 100 M Hz 的时钟频率 ,也就是说在一个时钟 周期内可以采样一次或者两次 ,一般采用的同步器结构如 图 4所示 。 图 4  当异步输入脉冲宽度比时钟周期大时用的同步装置 图 5  当异步输入脉冲宽度比时钟周期小时所用的同步装置 2. 2  工作原理 如果 signal f rom 100 M Hz 的信号满足 clk2 时钟触发 下的 D 触发器的建立保持时间(不出现亚稳定态) ,那么信 号通过 2 个触发器 ,将延时 2 个时钟周期到达目的时钟 域 。而如果没法满足建立保持时间 ( 出现亚稳定态) ,假设 采样的信号为 1 ,如果在亚稳态中信号被判断为 1 ,则和前 面分析的一样 ,通过 2 个时钟延时 ,可以传递到目的时钟 域 ,如果在亚稳态被错误的判断为 0 ,因为从 100 M Hz 时 钟来的 signal 的脉冲宽度要大与 133 M Hz 的 clk2 时钟 , 所以在下一个时钟周期 ,肯定可以满足信号的建立与保持 而被正确的采样 ,这样信号到达目的时钟的延时就为 3 个 时钟周期 。通过分析可以看出 ,第二个触发器是稳定的 , 但可能会造成一个额外的等待周期 。因为传递的是控制 信号 ,一般的应用场合还是可以接受的 。 对于同步器 2 来说 ,慢时钟域需要从快时钟域中同步 数据 ,异步输入控制信号的脉冲宽度可能小于时钟周期 。 这时候有 2 种解决的方法 。 方法 1 : 在快时钟域里面 ,人为地规定输出的控制信号 的宽度必须大于慢时钟域的时钟周期 。这样 ,情况就和前 面分析的一样的 ,用 2 个简单的 D 触发器同步就可以了。 Verilog 代码实现为 : module p ulse lengt hen (clk ,rst ,o rig p ulse ,long inp ut clk ,rst ,o rig p ulse ; o utp ut lo ng p ulse ; reg long p ulse ; integer k ; parameter clock times = 4 ;/ / clock times = 快时钟域时钟频率 慢时钟域时钟频率 always @ (po sedge clk) begin :lengt hen p ulse if (rst) lo ng p ulse = 0 ; else begin if (o rig p ulse) begin long p ulse = 1 ; for ( k = 1 ;k < = clock times ;k = k + 1) @(po sedge clk) if (rst) begin long p ulse = 0 ; disable lengt hen p ulse ; end el se long p ulse = 1 ; end el se long p ulse = o rig p ulse ; end end e ndmo dule p ulse) ; 方法 2 : 采用新的电路结构 。 从图 6 中可以看出 ,cont rol signal 的短脉冲会把 Q1 置为 1 ,两个时钟后 ,传递到 synch out ,把 synch out 驱 动为 1 ,因为这时候 cont rol signal 为 0 ,Clr 有效 ,Q1 重新 置为 0 。 图 6  异步信号引起亚稳定态时的信号波形 当在两个时钟域之间传递的不是控制信号 ,而是数据 流时 ,显然前面分析的方法是不适合的 ,可以采用的方法 是用交互握手信号控制数据交换 ,其原理如图 7 所示 。 发送端先把数据放到数据总线中 ,然后发一个请求信 号 ,接收端收到后 ,把总线中的数据取到自己的寄存器中 , 然后向发送端发一个确认信号 ,发送端送到后 ,接着发下 一个数据 。采用握手信号进行控制 ,因为添加了请求 ,响 应这样的控制信号 ,所以数据传输速率比较低 ,在实际应 用中 ,独立时钟域之间的接口可以用 FIFO (先进先出) 存 137 © 1994-2006 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net 微电子技术 袁  伟等 :多时钟域的异步信号的参考解决 储器实现 。 图 7  多时钟域之间采用握手信号来传递数据 3  关于 FIFO 一个 FIFO 存储器由读写控制电路与存储块构成 。 采用两个指针( read pt r 和 wirte pt r) l 来读写数据 。采 用一些标志信号来指明 FIFO 存贮状态 , 如 stack f ull , stack almost f ull ,stack almost empt y ,stack empt y 。 见图 8 所示 。 0110 ,从而 real pt r = wirte pt r ,得出 FIFO 为空的状态 。 在实际中 ,上面的分析只是理想的状况 ,更有可能的 情况是 ,由于电路延时的不同和寄存器各位输出时间的差 异 ,read pt r 可能的变化情况是 0101 →0100 →0110 ,而不 是直接从 0101 →0110 。这样 ,对指针地址做比较的时候会 错误地认为 0100 λ 0110 ,而在 read 信号继续有效的情况 下从 FIFO 中取走一个旧数据 ,而不是马上判断 FIFO 为 空而停止从 FIFO 中取数据 。可以看出 ,产生错误的原因 就是因为相邻编码之间有两位或者多位的跳变 ,从而产生 了竞争冒险 。所以必须采用 Gray 编码方式 , Gray 码是一 种不连续编码方式 ,相邻两个编码之间有且只有 1 位发生 变化 ,大家所熟悉的最简单的 2 位数据的编码方式为 00 , 01 ,11 ,10 。 4  Gray 编码方式 Gray 码计数器如图 9 所示 。 图 8  FIFO 逻辑框图 在一个时钟下 ,把数据放到存储块中 ,然后在另外一 个时钟下 ,从存储块中读取数据不难做到 。在这里 , FIFO 设计的难点是怎么产生精确 、稳定的 FIFO 空 , FIFO 满这 样的标志信号 。因为可以通过对 read pt r 和 write pt r 进行比较而得出 FIFO 空还是满这样的信息 ,比如 ,如果 read pt r 与 write pt r 相等 ,就可以判定 FIFO 为空 。不 过需要注意的是 ,read pt r 和 wirte pt r 是在两个不同的 时钟域产生的信号 ,所以在进行比较以前必须进行同步以 避免亚稳定性的出现 。问题的另外一个关键是读写指针 的编码方式 , 在实际应用中 , 采用 Gray 编码而不采用普 通 ,简单的二进制编码 ,其原因也是为了减小误操作的概 率 。为什么这么说呢 ,假设采用二进制编码 ,则指针地址 依次为 ,0000 ,0001 ,0010 ,0011 , ……,1101 ,1111 。假设在 时刻 k ,write pt r 的地址为 0110 ,read pt r 地址为 0101 , 这时候 0110 λ 0101 ,在下个时钟延 ,如果 read 信号有效的 话 ,则 FIFO 被 取 走 一 个 数 据 , read ptr 则 加 一 , 变 为 138 图 9  Gray 码计数器 Gray 码到二进制码的算法实现为 : bin[ k] = gray[ n - 1 ] ^ gray[ n - 1 ]^ …gray[ k + 1 ] ^ gray[ k]  k = 0 ~ n - 1 二进制码到 Gray 码的算法实现为 : gray[ k] = bin[ k] ^bin[ k + 1 ]  k = 0 ~ n - 2 gray[ n - 1 ] = bin[ n - 1 ] 整个 Gray 码计数器的 Verilog 代码实现为 : module gray counter (rst ,clk ,gray o ut ,inc) ; inp ut rst ,clk ,inc ; outp ut gray out ; parameter word size = 8 ; reg[ word size 1 :0 ] gray out ,gray ,bin ,binext ; integer k ; always @(gray out or inc) begin fo r (k = 0 ;k < wo rd size ;k = k + 1) begin bin[ k ] = ^(gray o ut > > k) ; binext = bin + inc ; end fo r (k = 0 ;k < wo rd size 1 ;k = k + 1) begin gray[ k ] = binext [ k ]^binext [ k + 1 ] ; end gray[ word size 1 ] = binext [ wo rd size 1 ] ; end always @(po sedge clk) if ( ! rst) gray o ut = 0 ; el se gray out < = gray ; e nd mo d ule 5  结  语 在单一的时钟域设计中 ,现有的综合工具能够对单时 (下转第 142 页)   © 1994-2006 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net 数字/ 模拟电路 刘志华 :用普通 PWM 控制器实现同步整流 控制 , 输出通过电感 L1 和电容 C3 滤波 , 快速软恢复二极管 D4 作为续流通路存在 ,电路工作频率 50 k Hz 。负载电流通 过无感电阻 R3 (0. 01 Ω) 取样 ,经过 U2 后变为 CFB 电压 信号 ,5 A 负载电流对应于 2. 5 V 输出电压 。U4 形成一 个差分电路 ,与来自 CPU 控制接口的 0 ~2 . 5 V 进行比 较 ,U6 在此是形成一个 2. 5 V 的偏置 ,差分输出信号利用 2. 4  同步整流时序简要说明 整个同步时序相当于在原有 PWM 波的前沿 t1 s 形成 一个 Q1 , Q2 都关断的状态 , 完全保证 Q2 完全关断( 内部电 流终止) 结束后才开通 Q1 ,系统只是构成了微量的控制滞 后 , 不影响恒流控制 。而且 , 受 D4 的钳位作用 , Q2 的关断是 软关断 。 U5 内部运放形成 PI 放大器 ,输出 PWM 脉冲信号 ,经 U1 高速光电耦合 MOSFET 驱动器控制 Q1 通断 ,实现电流的 闭环控制 。 同步整流功能 ,是通过对 PWM 信号进行时序调整 、 反相处理实现的 , U7 所在电路控制光耦 U3 实现对续流 管 D4 的同步驱动 。PWM 高电平信号经 R9 和 U7 中的反相 器后令 PL 为低电平 , R14 和 C7 形成约 100 ns 的延时 ( t1 ) , 并令 P H 为高电平 , 并通过二极管 D6 启动 Q1 。由于 U1 ,U3 是互补结构 ,使得 PWM 启动时初始 t1 s Q1 处于被关断状 态 , 这就保证了高端 Q1 是在低端 Q2 关断后 t1 s 才开通 , 避 免了直通短路 。 设电路处于电感电流连续状态 , HO ,LO , PWM 的波 形见图 2 (忽略了暂态过程和一些细节) ,图中阴隐区表示 普通 模 式 下 D4 二 极 管 正 向 导 通 所 产 生 的 压 降 (约 0. 8 V) 。有同步 MOSF ET ( Q2 ) 时 ,导通压降以实线表 示 ,可见同步整流可大大降低电路续流的功率损耗 。 当 PWM 低电平信号时 , R14 和 C7 放电 , Q1 延时 t2 s 后 被关断 , 且同步 Q2 被打开 。为避免此时 Q1 , Q2 有重叠导通 过程 ,与 HO 驱动回路比较 ,LO 驱动回路设计成充电慢 、 放电快的模式 ( 见 R6 , R7 ,D3 , R2 ) , t3 是实际 MOSF ET 导 通延时 。 2. 3  浮置驱动的可靠性分析 图 2  同步整流电路时序 一般同步整流控制芯片是高低端集成驱动的 ,其数据 手册上往往标明了 VS 允许的范围 , 一般允 许 极限 是 - 5 V 。实际电路的 VS 点的快速 dV / dt 扰动可以破坏脆 弱的半导体结构 。如果应用于芯片允许输入电压的上限 根据所选用的功率器件 ,精密设计 t1 , t2 , t3 可进一步 提高同步整流的效率 。用该电路实现的恒流源 ,一个明显 的效果是 ,原先只用 D4 时即使加散热器发热也非常严重 , 采用同步技术后完全取消了散热器 。 区域 ,往往导致控制芯片击穿损毁 。 电路采用了 MOSFET 驱动专用高速光耦 ,其供电可 3  结  语 以通过 D1 二极管自举 ( 要求 PWM 控制器 保 留一 定 的 PWM 工作死区) ,也可以采用隔离型偏置电源独立供电 。 由于高低端驱动完全分离 ,高速光耦的使用消除了印制板 布线的耦合回路 ,电路的可靠性大为增强 。 改进后的电路 , 具有时序结构可靠 , 高 、低端 MOS2 FET 不会重叠导通 、驱动能力强大的特点 ,用普通 PWM 控制芯片实现了同步整流功能 ,适用于高 、低电压系统 ,并 且可靠性大为增强 。   作者简介  刘志华  男 ,1970 年生 ,工程师 ,电器设计主管 。研究方向为生化分析仪器 。 (上接第 138 页) 钟域中的同步设计进行很好的综合 ,并且对设计中定时验 证进行分析 ,提供可靠的报告 。而在多时域中 ,定时验证 变得相当复杂 ,容易出错并难以综合 。本文论述了多时钟 域设计中解决跨越时钟域的信号传输的方法 ,通过这些方 法 ,可以让设计变得更加可靠与稳定 。 参  考  文  献 Designing Multi Asynchro no us Clocks Design. [ 2 ] William J Dally ,John W Po ulton. Digital Systems Engineer2 ing[ M ] . Cambridge University Press ,1998. [ 3 ] Scott Hauck. Asynchro nous Design Met hodologies : An O2 verview[J ] . Proc of t he IEEE ,1995 ,83 (1) :69 93. [ 4 ] Michael D Ciletti. Advanced Digital Design wit h t he Verilog HDL [ M ] . Prentice Hall ,2003. [ 1 ] Cliffford E Cumming. Synt hesis and Scripting Technique for 作者简介  袁  伟  男 ,北京大学深圳研究生院信息学院微电子学与固体电子学系研究生 。研究方向为数字集成电路设计 。 赵  勇  男 ,北京大学深圳研究生院信息学院教授 。研究方向为流媒体传输与成像 。 142 © 1994-2006 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net

    Top_arrow
    回到顶部
    EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高进,我们会尽快处理。