清华大学2012届本科毕业论文
4 时序逻辑电路竞争与冒险
4.1 时序逻辑电路中产生竞争冒险的原因和分析
在时序逻辑电路中,竞争冒险的产生主要来自2 个方面:一是组合逻辑电路部分可能发生的竞争冒险现象;二是存储电路工作过程中发生的竞争冒险。为了保证触发器可靠地翻转,输入信号和时钟信号在时间配合上应满足一定的要求。然而当输入信号和时钟信号同时改变,而且途径不同路径到达同一触发器时,便产生了竞争。 1、异步时序电路中的竞争与冒险
在异步时序电路中,当输入信号和时钟信号发生同时改变时,而且是通过不同路径到达同一触发器时,就有可能导致竞争冒险。
时序逻辑电路产生竞争冒险的典型电路与分析,如图4.1所示,CP3取自Q1,而J3= K3 = Q2 ,且F2 的时钟信号取自Q1 ,因而当F1 由0 →1 时, F3 的输入信号和CP3 同时改变,有可能导致竞争冒险。图4.1( a )是一个8进制计数器, 其状态转换图如图4.1(b)实线所示。如果当前状态是011 ,当Q1 由0 →1时,若Q2 变化先于CP3 上升沿完成,则在CP3 = 1的全过程中, J3 = K3 = Q2 的状态始终不变,此时可根据CP3 的下降沿到来时由Q2 的状态确定Q3 的状态。次态为110 但如果Q1 由0 →1 时,CP3 上升沿先于Q2 状态改变,则在CP3= 1 时, J3 = K3 = Q2 的状态有可能改变,这时不能由CP3下降沿到达时Q2 的状态来决定Q3 的状态。如Q1 Q2 Q3 由011 →101 时, F1 由0 →1 。F1 首先变成高电平而Q2 的1 状态未改变,在极短的时间里出现J3 K3 CP3 同为高电平的情况, 使F3 主触发器为0 ,CP3 下降沿到达后, 尽管Q2 =J3 = K3 , 但由于F3 主触发器已为0 态,因此CP3 下降沿到达后, F3 将变为0 态,使Q1 Q2 Q3 = 000 ,如图4.1(b) 虚线所示。这种竞争冒险将使电路的逻辑功能发生彻底的改变(变为4进制计数器) 。图8中如果不知CP3 和Q2 状态改变的先后,就不能确定该电路的逻辑功能。
(a)
第 11 页 共 33 页
清华大学2012届本科毕业论文
(b)
(c)
(d)
图4.1 异步时序电路中的竞争冒险
2、同步时序电路中的竞争与冒险
在有些规模较大的同步时序电路中,由于每个门的带负载能力有限,所以经常是先用一个时钟信号同时驱动几个门电路,然后再由这几个门电路分别去驱动若干个触发器。由于每个门的传输时间不同,严格地讲系统已不是真正的同步时序电路了,故仍有可能发生存储器电路的竞争-冒险现象[13]。
图4.2为由D触发器构成的移位寄存器。由于触发器较多,限于门电路的带载能力,选用分段供给时钟脉冲的方式,F0~F7由G1供给,F8~F15由G2供给,而G1和G2是由
第 12 页 共 33 页
清华大学2012届本科毕业论文
同一时钟脉冲CP作为输入的,故该电路应属于同步时序电路。
图4.2 D型触发器构成的移位寄存器
但实际上,若G1和G2的传输延迟时间存在差异,则CP1和CP2之间将产生时间差,发生所谓的“始终偏移现象”,这就有可能使移位寄存器产生误动作。
例如:G1的传输速度比G2快,则当输入一个CP信号时,CP1先于CP2到达触发器,使F7先于F8做出响应。若G1比G2的传输速度足够快,则当CP2始终到达F8时,F7已先行一步转换为新的状态,那么F8得到的将是F7的新状态,而应移位的F7的老状态已经丢失了,造成了移位错误。
当然,如果CP2速度上比CP1快,则不会产生移位错误。事实上,此时的电路形式上是同步时序电路,而实际上已经成为了异步时序电路。 4.2 时序逻辑电路中竞争冒险的消除方法
时序电路中的竞争冒险若是由组合逻辑电路部分引起的,则可采用组合电路中的方法来消除。若是由触发器电路引起的,则可采用以下方法。 1、修改设计方案,用同步时序电路代替异步时序电路
从前述的计数器电路和移位寄存器电路产生竞争冒险的原因可知,正是由于触发器的输入信号和时钟信号的先来后到难以把握,因此造成了触发器的误动作,形成了竞争冒险。若采用时钟信号可控的同步时序电路,使所有触发器处于同一始终作用下,而且在时钟CP作用前,输入信号已处于稳态,则不再产生竞争冒险。 2、延长信号的传输时间
图4.3是在图9移位寄存器电路的F7和F8之间增加一个反相器G3,利用非门的传输时间来延缓信号的传输速度。
第 13 页 共 33 页
清华大学2012届本科毕业论文
图4.3 加入非门的移位寄存器
图4.4是在图9移位寄存器电路的F7输出端接入一个电容C,利用电容的充电时间来减慢信号的传输速度,延长信号的传输时间。这样就有可能消除“时钟偏移”造成的竞争与冒险。
图4.4 加入延迟电容的移位寄存器
第 14 页 共 33 页
清华大学2012届本科毕业论文
5 可编程逻辑电路的竞争与冒险
5.1 可编程逻辑器件概述
如果从逻辑功能的特点上将数字集成电路分类,则可以分为通用型和专用型两类。从理论上讲,用这些通用性的中、小规模数字集成电路(如74系列及其改进系列等)可以组成任何复杂的数字系统,但如果能把所涉及的数字系统做成一片大规模集成电路,则不仅能见效电路的体积、重量、功耗,而且会是电路的可靠性大为提高。这种为某种专门用途而设计的集成电路称为专用集成电路,即所谓的ASIC。然而,再用量不大的情况下,设计和制造这样的专用集成电路不仅成本很高,而且设计、制造的周期也嫌太长。可编程逻辑器件(Programmable Logic Device,简称PLD)的研制成功为解决这个矛盾提供了一条比较理想的途径。PLD虽然是作为一种通用器件生产的,但它的逻辑功能是由用户通过对器件编程来设定的。
FPGA 的基本组成与生产厂家有关, 不同厂家的器件其结构、工艺技术和编程方法各不相同。目前国内广泛使用Xilinx[16]公司生产的FPGA 器件,由图5.1可知, XilinxFPGA 由三个可编程基本单元阵列组成: 输入/输出块( I/OB lock—简称I/OB ) 阵列、可配置逻辑块(Configurable Logic Block—简称CLB) 阵列及可编程互连网(Programmable Interconnect—简称PI)。其中输入/输出块( I/OB) 排列在芯片周围, 它是可配置逻辑块CLB 与外部引脚的接口。可配置逻辑块(CLB) 是FPGA 的核心, 它以矩阵形式排列在芯片中心。每个CLB 均可实现一个逻辑功能小单元。各CLB 之间通过互连网络(PI) 编程连接, 以实现复杂的逻辑功能。
图5.1 FPGA 结构
第 15 页 共 33 页