数字电路的设计方法与技术

本页只是主要来自于硬件架构的艺术这本书。

一、亚稳态

        因为在同步系统中输入信号总是满足触发器的时序要求,所以不会发生亚稳态。但是,在异步系统中,由于数据和时钟的关系不是固定的,因此有时会出现违反建立和保持时间的现象。当违反建立和保持时间时,就会输出介于两个有效状态之间的中间级电平且无法确定停留在中间状态的时间,或者在经过一定的延迟后才能进行正常转换。由于亚稳态的存在,触发器的输出会因此而产生毛刺,或者暂时保持在不稳定状态而且需要较长时间才能回到稳定状态。触发器是否进入亚稳态和返回稳态所需时间取决于生产器件的工艺技术与外界环境。一般来说,触发器都会在一个或者两个时钟周期内返回稳态。简单地说,当信号在一个时钟域( src_data_out)里变化,在另一个时钟域( dest_date_in)内采样时,就会导致输出变成亚稳态。这就是所谓的同步失败

 亚稳态窗口 ( Metastability Window)具有特定的时间长度,在这段时间内输入信号和时钟都应该保持不变。如果它们发生变化,输出就可能变成亚稳态。建立时间和保持时间共同决定亚稳态窗口的宽度。窗口越大,进人亚稳态的概率越高。在大多数情况下,较新的逻辑器件会有更小的亚稳态窗口,也就意味着器件进入亚稳态的概率会更小。

         当系统的故障率恒定时,MTBF ( Mean/ Average Time Between Failures,平均无故障时间)就是故障率的倒数。我们可以从中知道特定触发器发生故障的频率。

可能出现亚稳态的情况

输入信号是异步信号。

时钟偏移/摆动(上升/下降时间)高于容限值。

信号在两个不同频率或者相同频率但是相位和偏移不同的时钟域下跨时钟域工作。组

合延迟使触发器的数据输入在亚稳态窗口内发生变化。

避免亚稳态亚稳态不能根除,最简单的情况是确保时钟周期足够长。另一种方法就是使用同步器。最常见的方法是在跨时钟域的信号上加上一个或者多个同步器,解决了第一级同步触发器的亚稳态问题(不包括第二级触发器的建立时间),但是增加了观察同步逻辑输入的延迟。还有一种方法使用倍频时钟作为同步触发器的时钟输入。这两种方法仅仅是减少了亚稳态发生的概率。

减小亚稳态发生的概率

(a)采用同步器

(b)采用响应更快的触发器(缩短亚稳态窗口 Tw)。

(c)使用亚稳态硬化触发器(专为高宽带设计并且减少为时钟域输入电路而优化的采样时间)。

(d)使用级联触发器(两个或者多个)作为同步器。如果一个触发器的亚稳态失败概率为P,那么N个触发器的亚稳态失败率就是P的N次方。

(e)减少采样速率。

(f)避免使用dV/dt低的输入信号。

二、时钟和复位

不推荐设计中出现的:

避免组合环路:在同步设计中,所有反馈回路都应包含寄存器,组合环路建立;了不包含寄存器的直接反馈回路,这违背了同步设计原理。组合环路的行为与该环路中所有逻辑的传播延迟有关,因为因为传播延迟会根据不同条件而改变,所以组合环路的行为也可能变化。在许多设计工具中,组合环路都会导致无休止的循环运算。

避免数字设计中延迟链:在用两个或多个带有单扇入和单扇出的连续节点产生延迟时,就会形成延迟链。通常将反向器链在一起以增加延迟。延迟链通常出现在异步设计中,有时用来解决由其他组合逻辑导致的竞争条件。避免使用延时链,需要在设计中用同步技术取代异步技术。

避免使用异步脉冲产生器:

避免使用锁存器:在数字设计中,锁存器用来在新的值到来前保持原来信号的值。避免在所有可能的位置使用锁存器,而应用触发器代替。锁存器是连通模式的,即在数据输入和输出之间存在直接通路。输入端的毛刺能传递到输出端。综合工具有时会推断出设计意图之外的锁存器。这样的锁存器往往源自不完整的“if”或“else”语句。忽略“if”或“case”表达中最终的“else”分句也会形成锁存器。

把‘b’综合成直连的组合逻辑,‘a’将推断为锁存器。推断锁存器的一般规则是,如果一个变量未能在always语句的所有可能执行条件下赋值(例如,当一个变量没有在if语句的所有分支中赋值时),就会形成锁存器。

避免使用双沿时钟:使用双沿时钟是指在时钟的上升沿和下降沿都传输数据。使用双沿时钟时遇到的一些问题如下:·不对称的时钟占空比会导致违背建立和保持时间。很难确定关键信号的路径。很难使用像插入扫描链这样的设计方法学,因为它要求所有寄存器使用同样的时钟边沿。如果要在双沿电路中插入扫描链,那么必须在时钟线上插入多路复用器以保证在测试模式下使用单一时钟。

时钟方案:

内部产生的时钟:设计者应该尽可能避免在内部产生时钟

三、处理多个时钟

多时钟域设计的难题:建立时间和保持时间的违背和亚稳态。

建立时间:在时钟脉冲到来前,输入数据需要保持稳定的时间。

保持时间:在时钟脉冲到达后,输入数据仍需保持稳定的时间。

 建立时间要求数据必须在时钟上升沿到来前保持稳定,保持时间要求在时钟上升沿到来后数据必须仍然保持稳定。对于单时钟域,这样的要求很容易满足。但是,在多时钟域情况下,很容易出现一个时钟域的输出在另一个时钟域中的时钟上升沿到来时发生改变的现象。这将会引起第二个时钟域中触发器的输出处于亚稳态。

跨时钟域信号的传输分为两类:控制信号的传输、数据信号的传输。

对于控制信号的传输同步化,为避免亚稳态,多采用多级同步器的方法。

对于数据信号的传输,保证数据正常在不同时钟域间传输的两种方法为:使用握手信号、使用异步FIFO。

握手信号方法:在不同域之间传输数据。

使用握手信号“xack”和“yreq”,“系统X”将数据发送给“系统Y”。

1)发送器“系统X”将数据放到数据总线上并发出“xreq”(请求)信号,表示有效数据已经发到接收器“系统Y”的数据总线上。

2)把“xreq”信号同步到接收器的时钟域“yclk”上。

3)接收器在识别“xreq”同步的信号“yreq2”后,锁存数据总线上的信号。

4)接收器发出确认信号“yack”,表示其已经接受了数据。5)接收器发出的“yack”信号同步到发送时钟“xclk”上。

6)发送器在识别同步的“xack2”信号后,将下一个数据放到数据总线上。

安全地将一个数据从发送器传输到接收器需要5个时钟周期。数据应该在发送时钟域内稳定至少两个时钟上升沿。请求信号“xreq”的宽度应该超过两个上升沿时钟,否则从高速时钟域向低速时钟域传递可能无法捕捉到该信号。缺点:跨时钟域传输单个数据的延迟比使用FIFO传输相同的数据大得多。

同步FIFO传输数据:传输跨不同时钟域的数据。

一个同步FIFO的通用架构。DPRAM(双端口RAM)用作 FIFO的存储器以使读、写可以独立进行。

异步FIFO(双时钟FIFO):两个异步时钟域间传输数据。

 

 

 

四、时钟分频器

五、低功耗设计

浪涌、静态功耗和动态功耗是三个主要的功耗源浪涌电流指器件上电时产生的最大瞬时输入电流。浪涌电流在应用中也称为启动电流。一般的电子电路设计时都使用大容量的电解电容作为电源输入滤波。在上电的瞬间,滤波电容要充电,所以就产生很大的电流,等充电完毕就进入正常的工作电流范围。待机电流指在关断主电源或系统进入待机模式下产生的电流。由待机电流产生的功耗称为待机功耗。与浪涌功耗极为类似,待机功耗与元件的电气特征密切相关。待机功耗也称为静态功耗。需要指出的是,静态功耗也包含电路中由晶体管的漏电流所导致的功耗。动态功耗或开关功耗是门电路输出切换时,由逻辑转换所引起的功耗。动态功耗在大规模IC设计中占主要地位。在典型的应用中动态功耗占到了总功耗的80%。

降低功耗应当在所有设计层次上进行。即,在系统级、逻辑级和物理级。层次越高对功耗降低就可能越有效。

在逻辑和版图级,对映射网表方法的选择和低功耗库的选择是关键。在物理级,要使用版图优化技术。

六、流水线的艺术

流水线通过在较长的组合逻辑路径中插人寄存器降低了组合逻辑的延迟,从而增加了时钟频率并提高了性能。

在实际电路中,由于存在线路上的传播延迟,寄存器B的时钟输入相对于寄存器A可能会有一些延迟。这些传播延迟中的微小差别,会发生在复杂数字产品的整个时钟网络上,最后会对整系统时序产生无法接受的影响。这种现象也称为“时钟偏移”问题。在相邻两个寄存器的时钟延迟大于这两个寄存器之间的数据路径延迟时,就会产生负时钟偏移。在这种情况下,先到的时钟会引起竞争条件。即,在数据还未成功锁存时时钟就触发了寄存器。时钟偏移倾向于增加电路所能承受的最大时钟频率。

到达电路中某一点的连续时钟边沿之间间隔的变化称为时钟抖动

七、处理字节顺序

字节顺序定义数据在计算机系统中的存储格式。它描述存储器中地址的最高有效位(MSB)和最低有效位( LSB)的位置。字节顺序结构有两种类型,大端模式( Big Endian,BE)和小端模式( Little Endian,LE)。大端模式将 MSB保存在最低存储器地址处。小端模式将LSB保存在最低存储器地址处。多字节数据的最低存储器地址可以认为是数据的起始地址。

八、消抖技术

在电子设备内两个金属触点随着触点的断开闭合便产生了多个信号,这就是抖动。“消抖”是用以确保在每一次断开或闭合触点时只有一个信号起作用的硬件设备或软件。

RC消抖:一个电阻–电容(RC)网路可能是最常见且最容易的消抖电路,就是把一个电阻和电容连接在一起,开关连接至中间。电容经过电阻充电,开关未使用的默认状态是高电平。当开关闭合时,它慢慢将电容消耗至地电位,以此减弱所有小抖动的影响。这种电路能承受某些抖动但不完全消除它们。这潜在一个副作用就是如果时间常数过大则开关对快速“断开”或“闭合”可能无法反应。

 硬件消抖电路:使用了由一对与非门电路制作的交叉耦合门。它还可以用SR双稳态触发器设计。使用交叉耦合门的好处是它提供一种完全的消抖而不用考虑延时限制,而且它的响应速度和触点断开和/或闭合一样快。注意,电路要求触点正常断开或闭合。在开关中,这种安排称为“双掷”。在继电器中,这称为“形状C”。

软件消抖电路:在足以让抖动停止的时间后读出开关、开关启动时中断CPU 并在中断服务程序(ISR)中消抖、使用计数器消除噪声并验证开关状态

在多重输入下消抖

(待总结补充。。。。。。)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值