




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
4.1CMOS门电路4.2时序与时序电路4.3时序电路设计4.4算术逻辑构件设计4.5分析、仿真与验证4.6设计综合与优化4.7EDIF格式课程设计习题第4章数字电路设计技术
4.1CMOS门电路
对于CMOS工艺来说,最底层的单元都是属于静态全互补结构。但实现同一个功能,仍可以采用不同的门级逻辑结构,其性能水平的差别仍然会比较大。设计好各种基本单元,仍然是展示创新的一个重要机会。需要注意,对于静态逻辑电路而言,当CMOS门的输入端个数大于3时,其速度明显变慢、芯片面积(以后简称面积)变大。因此除了CMOS标准门之外,其他经常被采用的还有比率(Ratioed)逻辑或通路晶体管逻辑设计,特别是基于传输门的设计较为普遍。此外被较多采用的还有动态逻辑电路,它靠高阻电路节点上的电容暂存信号值,其特点是简捷、快速。然而动态逻辑对噪声较为敏感,而且设计复杂度增加。上述这些电路与CMOS工艺是兼容的。
本节主要介绍CMOS组合逻辑电路。4.1.1逻辑功能函数
1.名词解释
所谓逻辑门,就是被用来计算某一种特定布尔函数的电路网络。逻辑门设计就是寻找一种逻辑网络结构,来计算指定的组合逻辑函数表达式。例如用一种或非门结构来计算(a+b)!。表达式和逻辑门通常并非一一对应,其原因在于表达式有许多等价形式。虽然它们的功能等价,但物理门结构却明显不同,随之而来的版图等后续重要派生特征,诸如延迟、面积、功耗、可测性等指标均可能不同,因此必须引起足够重视。下面举例说明。如图4-1所示,(a+b)!c、a!b!c、(a+b+c!)!表达式是等价的,但它们的网络结构却不同。以CMOS门为例,图4-1(a)中共包含10个晶体管,其中或非门用4个管子,后面的与门由4个管子的与非门和2个管子的反相器组成。图4-1(b)要用12个管子,其中3个反相器是6个管子,一个三输入与非门是6个管子。图4-1(c)则仅用8个管子即可。图4-1完成同样功能的不同网络结构
2.完备性和无冗余性
下面介绍逻辑表达式的完备性(Completeness)和无冗余性(Irredundancy)。
称某类逻辑函数是完备的,是指如果反复使用此类逻辑函数,进行同类组合的逻辑运算,就可以实现所有布尔逻辑功能。事实上,只要验证用该类逻辑函数能否组合成全部的基本逻辑式(基本功能单元)即可得出结论。例如,反复用二输入与非门NAND进行与非运算,就可以实现“1”、“0”和三种基本运算功能:“非”——a!、“与”——ab(又写作a·b)、“或”——a+b等全部基本逻辑公式,其中a、b为输入逻辑变量,定义域为[0,1]。现证明如下:
·a!:(aa)!=a!
·1:(a(aa)!)!=(aa!)!=1(如图4-2所示)
·0:((a(aa)!)!(a(aa)!)!)!=(11)!=0
·ab:((ab)!(ab)!)!=ab
·a+b:((aa)!(bb)!)!=(a!b!)!=a+b
对于输入端多于两个的与非门NAND,上述结论也成立。可见,NAND函数是完备的。同样,或非门NOR也是完备的。NAND和NOR函数的完备性已经成为门阵列结构形式可行性的基本理论依据。但是要注意与门AND、或门OR则不是完备的,需要再加上非门NOT才行,以分别使{!,+}以及{!,·}均可实现。图4-2二输入与非门实现输出为1的功能所谓无冗余,就是要求公式最简化,用于化简的武器还是狄·摩根(DeMorgan)定理。例如,冗余的ab+ab!可以化简为无冗余的a。通常,化简对于面积和延迟都是有效的。但是在冗余化简时,要保证新的逻辑网络对某些制造缺陷故障仍然是可测的。另外,无冗余并非总是最佳,也并非版图一定是最小的。还有一些场合,无冗余引起的附加延迟和时序问题甚至需要用冗余来消除。4.1.2静态逻辑CMOS门
1.CMOS门结构与上拉/下拉网络
我们习惯采用CMOS静态全互补门,而不是动态门。静态是指其逻辑功能靠门的导通与截止来实现,与存储电荷无关,互补是指同时采用上拉P管网络(通称为上拉网络(PUN,Pull-UpNetwork))和下拉N管网络(通称为下拉网络(PDN,Pull-DownNetwork))。CMOS的优点是噪声容限高,静态功耗低,适当选取P管和N管尺寸可以使上升边和下降边时间接近。注意,CMOS的反相器要比同相缓冲器简单,与非门要比与门简单。例如,最简单的反相器和与非门互补结构如图4-3所示。图4-3反相器和与非门互补结构对于复杂的CMOS网络来说,N管串联对应的P管网络必然为并联;反之亦然。设计时可以先设计N管逻辑网络,这时,串联实现“与”,并联实现“或”。然后再对偶地加以推广,即可得到P管网络。下面给出的对偶准则,应用于一般CMOS的PDN和PUN实现的展开过程,逻辑可综合性能好。
完整的CMOS网络由下拉网络(PDN)和上拉网络(PUN)两部分组成,由PDN输出强0、弱1,由PUN输出强1、弱0,其互补关系如图4-4所示。图4-4下拉网络PDN和上拉网络PUN结合图4-4,我们对CMOS上拉网络和下拉网络对偶性拓扑结构的设计原理说明如下。
为了研究网络拓扑结构,我们把PDN和PUN视为两个开关网络。其中PDN中的N管视为一个由高电平直接控制的正开关;PUN中的P管也视为一个正开关,不过是把上述控制电平反相后的信号作为其输入信号。另一方面,可以将PDN的输出端看做是整体反相(意味着当输入高电平致使下拉网络导通时,该输出点的电平反而为0);而PUN的输出端则不再反相。所以这两个网络的根本不同之处可以归结为:PDN是输出反相;PUN是输入反相。我们用D描述PDN网络结构的逻辑操作关系,用U描述PUN网络结构的逻辑操作关系,从而由输出端、输入端所确定的二者逻辑关系为
由狄·摩根定理可知,PDN和PUN的网络结构如果对偶的话,就正好能充分满足上述关系(非必要条件),即
如果PDN中是串联开关网络(构成“与”的关系),则PUN中对应的为并联开关网络(构成“或”的关系);反之亦然。对偶准则可以扩展到复杂的串并联PDN对应复杂的并串联PUN结构。
2.与或非(AOI)及或与非(OAI)结构
在完成CMOS电路的底层设计时,首推下列两种优化的积之和以及和之积结构:与或非复合门结构(AOI,And-Or-Inverter);或与非复合门结构(OAI,Or-And-Inverter)。它们是两种应用最为普遍的CMOS电路底层结构。在AOI的逻辑结构中,OI是画在一起的一个或非门,A的个数可以是1、2、3。AOI的表达式又分为AOI***、AOI**两种。AOI**中的**表示前面两个与门A的各自输入端个数,一般数字不得超过3,例如AOI32表示一个是三输入与门,另一个是二输入与门;AOI***则表示前面共有三个与门。AOI物理结构的PUN部分是先串后并;对偶的PUN部分则是先并后串。AOI32共计10个管子即可;如果直接根据表达式构成,则要18个管子。
OAI***、OAI**的含义和与或非复合门的含义类似。将图4-3中的二输入与非门对偶结构加以推广,就可以扩展为一般与或非门(AOI)的对偶结构设计。例如,图4-5中的与或非门AOI21(这里的2表示其中一个与门是二输入,1表示另一个与门是一输入,即这个与门实际上是不存在的):B=((A1·A2)+A3)!。它是先在N管区(PDN)设计串并关系,然后根据对偶原理立即可得P管区(PUN)的并串关系设计。图4-5与或非门AOI21结构只要是积之和(先串-与,后并-或)的形式,就能直接用AOI结构设计。如果是和之积(先或后与)的形式,则能直接用OAI结构实现。这样做,一般比通过许多NAND门或NOR门的连接组合实现,在面积和速度上都要优越得多。例如在图4-5所示的电路中,总共需要6个管子即可,而不是10个管子。其他复杂的结构设计,可以如法炮制,举一反三。
底层电路的综合优化需要结合版图工艺特点在管子一级进行。CMOS的AOI和OAI模块结构比较优化,要尽量加以利用。采用AOI和OAI结构形式就是最直接的优化。此外,还有多米诺(Domino)一类将动态逻辑和静态逻辑相结合的门电路结构形式,在实际中也有不少应用。这种结构的优点是面积小、速度快。由于多米诺逻辑不是完备集,它只有AND、OR,所以不可能只用多米诺逻辑就能完成所有的电路设计。
3.异或门结构
下面给出异或门A
B一类的设计实例。目前这类底层设计工作已经主要由EDA工具来实现,而并非仍然由人工加以判断、手工进行化简。不过设计师应该明白其中的原理,而且也是可以控制和介入的。
异或门XOR和同或门XNOR在实际中应用很多,我们以此为例进一步说明底层设计技术。
注意,图4-6中的门级结构图可以与版图中管子级结构直接对应,其中图4-6(a)为异或门,图4-6(b)为异或非门(又称同或门)。图4-6异或门及异或非门以图4-6(a)为例,该异或门的实际版图是由或非门及图中虚线圈起的AOI21门组成的复合门结构,共计需要10个管子。如果不针对CMOS版图结构就设计不出面积和速度均为优化的门级电路。假设直接按标准布尔方程式设计,结果不仅规模大——需要22个管子,而且时序不佳,甚至还会有竞争现象。因此,应充分利用狄·摩根定理进行表达式的变换,以设计出最佳的电路。
图4-6(b)异或非门(同或门)的情况与异或门类似,它是由与非门以及OAI21门组成的复合门结构,也是10个管子。不然的话,面积将会变大(12个管子,甚至22个管子),而且速度也低。
1)半加器
真实的半加器结构如图4-7所示。其中实现半加和的功能采用的是异或门电路,即图4-7半加器结构
2)奇偶校验
数字电路设计经常用到奇偶校验这种数据判断功能。数据传输中的奇校验定义如下:使传输的信息位与校验位中的“1”的个数之和为奇数。其编解码的主要操作就是异或运算。偶校验情况与此类似。奇偶校验可以采用异或门电路来实现。
在图4-8中我们给出一个很特殊的异或门电路设计进行奇偶校验。对图中电路的工作原理加以分析可知,图中输出信号F右边的传输门完成A;F的左边完成。通过在F点的线或作用,它实现的功能为
F=A⊕B图4-8特殊的异或门电路设计这种动静结合的设计面积较小,包括信号B的反相器在内仅有6个管子。这是一种包含有静态传输门在内的电路设计,其中右边的静态传输门由P型、N型两个通路晶体管组成。多个传输门串联可以实现控制与逻辑;多个传输门并联可以实现控制或逻辑,但是传输门不能实现非逻辑。由于寄生电容的影响,由传输门组成网络的输出还容易出错。
就目前所知,异或门电路的设计还有几种形式。例如,有一种12管电路的异或门XOR,就选用了异或门的等价形式——同或门加非门构成。至于具体的CMOS晶体管电路网络结构,读者根据对偶原理,不难自行画出,此处从略。4.1.3单级门及网络延迟
设单级CMOS门的扇入(输入端并接的门数)为Fi,扇出(输出端并接的门数)为Fo,则根据参考文献——Rabaey等原著,单级门延迟tp为
tp=a1Fi+a2Fi2+a3Fo
其中,a1、a2、a3为与工艺有关的加权系数。对与非门的延迟仿真可以证实上述方程中门延迟与扇入扇出关系的正确性。
建立在基本门基础上的组合逻辑网络,重要的优化指标仍然是速度和面积。以下简要讨论网络延迟等问题。
1.负载定义
标准负载电容——由一个反相器或二输入与非门在其输入端所呈现的电容。
压摆率(InputSlewRate)——由于输入端电容电压不能突变造成的输入波形斜坡。
压摆率=
例如,如果一个20pF的输入负载电容使得输入波形在5ns内变化5V,即压摆率为1V/ns。
2.提高网络速度
由逻辑门组成复杂网络的延迟问题比单级门要复杂得多。提高网络速度的措施有:
(1)改进单级门的电路及版图设计,包括增大尺寸、降低寄生参数,特别是负载电容。
(2)根据门级网表重新设计走线,以降低长路径影响,即WireDelay。这里的线延迟采用较多的是Elmore的RC树模型(见参考文献——Rabaey等原著)。
(3)避免由小尺寸的门驱动几个大负载门。因为其负载重,速度慢,造成所谓的FanoutDelay。这时可以重新设计电路,减少扇出。
(4)增加缓冲(Buffer)。这是提高扇出能力的有效途径。
4.2时序与时序电路
这里,先回顾数字电路设计中的一些基本概念。
4.2.1组合电路与时序电路
通常将数字电路分为两类:组合(Combinational)逻辑电路和时序(Sequential)逻辑电路。
我们将能存储电路状态的电路单元称之为记忆单元,例如锁存器、触发器、寄存器、移位寄存器、RAM等。不包括记忆单元的电路属于组合电路。由于门间反馈是形成记忆的一种途径,如果输出到输入没有反馈,完全由与、或、非、异或等不同的门组合实现各种功能,这种电路就是组合电路。常用的组合逻辑功能块有:加法器,减法器,乘法器,除法器,编码器,译码器,桶形移位器等。组合逻辑电路的输入输出信号模型为:Y=F(X),如图4-9所示。图4-9组合逻辑模型组合逻辑只与当前输入值有关。组合逻辑的输入输出关系可以用真值表、逻辑方程式、卡诺(Karnaugh)图和电路图等形式表示。
与之相对应,包括记忆单元的电路是时序电路。时序逻辑与当前输入和过去的输入都有关。过去的输入都反映在当前的状态之中,当前的状态包含了演绎未来的所有与过去相关的信息。但是时序电路不等于是有时钟的电路。4.2.2电路中的时序
由于国内译名的不统一,术语的准确性和标准性已经造成不少问题。设计中一个很重要的概念——timing,它的本意是描述电路系统中各事件之间在时间轴上的定时顺序和相互配合关系,也被称之为“时序”,正好与前述已经通用的时序电路用语相冲突和混淆。不过我们还将继续保留这两个习惯说法,但要特别提醒注意这两个概念完全不同。不管是ASIC或是FPGA设计,不管是组合逻辑电路或是时序逻辑电路,时序难题经常缠身。有的是功能设计必需的,有的是属于功能之外派生的,但它始终是系统设计师要应对的主要问题。而解决时序问题又常常与电路设计、版图设计密不可分。目前,描述所有时序的最常用手段是画出时序波形图,如果是同步时序电路,时钟波形成为参照的标准。一般EDA软件中常见的所谓“时序分析(TimingAnalysis)”模块完成的就是这种分析。
时序(Timing)设计和分析所追求的目标是:在正确的时刻(When)将正确的加工数据(What)加载到正确的单元电路(Where)中去。组合逻辑的时序波形给出了各点信号相互间的依存关系。
对于时序电路,单元电路指的就是记忆单元(存储单元)。不管其有无时钟,它最重要的一个特征就是所有的开关事件都将按严格的顺序依次发生,否则就可能会将错误的数据写到错误的记忆单元中去。
时序分析主要应关注静态和动态的竞争冒险和关键延迟路径。在时序电路的时序分析中尤其更应该关注数据的建立和保持时间。
通常说的静态时序分析,实质上就是稳态分析。动态(瞬态)分析关心的则是跳变过程。静态时序分析是根据稳态的输入计算出稳态的输出。显然在许多时间段中电平将没有变化。如果在这些电平理应为常值处出现短脉冲,这些短脉冲就被称之为“毛刺(Glitch,假信号,电路故障)”。
毛刺是伴随电路正常工作的副产品。它是由于时延配合不当引起电路的竞争冒险或延迟错位(Skew),进而形成的一种非正常的短暂脉冲。有些毛刺影响正常可靠的工作,必须调整延迟以消除毛刺。还有很多毛刺,存在的时间可能很短,不一定影响正常的工作,但至少影响功耗。以加法器a+b+c+d的设计为例,消除毛刺的措施主要是:
(1)将电路的逻辑结构或版图的布局布线物理结构合理设计,减少由延迟不当造成毛刺的机会。例如设计成并行结构的(a+b)+(c+d)。
(2)将容易出现毛刺的支路尽量与其他支路减少耦合。例如a+b+c+d中,如果a经常出现毛刺,则可以将其电路设计成a+(b+c+d)。
(3)尽量减少毛刺多发节点a处的线电容和负载电容,以减小延迟。
(4)删除不必要的寄存器或其他负载,以化简不必要的信号电平变化。
(5)在某一个逻辑块的输入处增加门控逻辑电路,用来切断无用信号的传播。目前大多数时序电路中都设计有时钟信号,用这个全局分布式的时钟信号分别确定各记忆单元锁存数据的时刻。这些时刻将保证整个电路的状态获得同步的更新。这样,对全局时钟一致性的要求就相应地非常苛刻,否则很容易造成芯片工作的不正常。4.2.3电路时序分析
描述时序关系可以用时序表,但主要手段是采用时序图,如图4-10和图4-11所示。图4-10输入输出因果信号延迟图4-11最小最大延迟容差
1.因果表示
图4-10描述的信号Sin和So1、So2是一种输入输出间的因果关系。输入信号Sin就是前因,输出信号So1、So2就是后果。在输入和输出信号之间存在有延迟。
这里要说明的是:
(1)延迟计算均以各边沿的中值处为参考点。但是,由同一输入信号到不同的输出上升边和输出下降边的延迟是不同的。
(2)从某一给定输入信号到指定输出信号的总延迟是各个分阶段延迟的总和叠加。
(3)可能有些寄生的因果情况容易被忽视。
2.延迟容差
图4-11描述的So1和So2,其前沿出现时刻有一个范围,称为容差现象,是客观存在的信号延迟离散性。
这里要注意的是:
(1)为了保证电路在高频率下可靠工作,需要分析不确定情况中的最坏可能延迟。
(2)需要对关键路径进行专门分析,按严重性分别列出不同的路径形成的不同延迟,研究由此可能引起的各种竞争冒险情况。
(3)与设计过程相配合,需要重点研究的是边沿触发时的输入信号在边沿前的建立和边沿后的保持时间是否满足电路延迟最坏容差的需要。4.2.4同步与异步电路
1.分类
时序电路分为两类:同步(Synchronous)电路和异步(Asynchronous)电路。
一般而言,具有统一时钟的电路称为同步电路,其时序关系受时钟驱动的控制。没有统一时钟的电路称为异步电路,异步电路间的时序是靠数据事件驱动和控制的。在同步电路中,时钟或数据信号延迟的不确定性称之为错位,可分为时钟错位和信号错位两种。分析错位现象的源头,有助于找到解决错位问题的办法。信号错位主要是因为不同路径过来的数据信号经历的延迟时间不一致性所造成。时钟错位主要是由于到达不同记忆单元时钟信号的不一致以及时钟和信号的不一致所造成。时钟错位和信号错位是相对的,但调整起来的难度不尽相同,如果可以分别调整通常会容易一些。
异步,就是不同步。由于异步电路中省却了时钟,因此其速度比同类同步电路可能要快,但设计难度比较大。
法国Arteris公司在SOC设计中采用多个异步时钟成功实现了片上网络(NOC)系统。NOC方案为片上通信提供了一种全新的联网手段,其性能大约为传统总线的3倍。
2.同步电路模型
同步时序电路都含有记忆单元和时钟,又进一步分为两种模型:密勒(Mealy)电路和摩尔(Moore)电路,如图4-12所示。图4-12两类同步时序电路模型记当前输入变量为I,当前状态变量为S。对I及S进行运算产生新S的电路为输入逻辑f。对I及S进行运算产生输出变量O的电路为输出逻辑g。同步电路的时钟记为φ
。
我们将输出O与当前输入I和状态S都有关的电路称为密勒电路,简记为
O=g(I,S)
而将输出O与当前直接输入I无关,只依赖状态变量S的电路称为摩尔电路,简记为
O=g(S)
两类结构都属于具有统一时钟φ的电路,它们之间只有一种连接关系上的差别,详见图4-12。图4-12(b)中的虚线表示实际中没有这个连接关系。描述上述两种同步电路的手段有状态图、状态表、现态次态转换表、卡诺图、算法状态机(ASM,AlgorithmStateMachine)等。ASM借用程序流图方式来表达时序电路各种操作间的关系。
4.3时序电路设计
时序逻辑电路的特点是,其输出值不仅与当前输入值有关,而且与当前的状态,或者说以前的输入历史有关。因此时序逻辑必然包含记忆单元(或者称记忆元件)。除了记忆单元之外,时序逻辑网络中还包括有组合逻辑电路单元、I/O电路等;同步时序电路中还必须有时钟。整个时序系统还会需要一些整形电路,例如施密特触发器或者单稳态触发器等。下面,我们择要加以介绍。4.3.1记忆单元
锁存器(Latch)和触发器(Flip-flop)是一种存储时序状态的常用逻辑记忆单元。记忆单元由内部存储和时序访问控制两部分组成。CMOS电路中的记忆功能通常由电容记忆保持,或者加上能量正反馈记忆保持来实现更可靠的记忆。
1.分类之一
记忆单元按时钟的电平敏感和边沿敏感分为锁存器和触发器两种,寄存器则可以是分别由这两种元件组成的两种阵列,下面分别介绍。
(1)锁存器(Latch)——受电平敏感的记忆单元称之为锁存器。例如TTL器件7475,靠输入时钟的高电平或低电平实现选通。
(2)触发器(Flip-flop)——受边沿敏感的记忆单元称之为触发器。例如TTL器件7474,靠输入时钟的上升或下降边沿实现触发。在许多资料中,将内部存储值由输入数据透明地传输并设置称之为锁存器。触发器,尤其是主从锁存器,是指其输入值的读取和输出值的改变是两个不透明的独立事件。这种输入输出之间的不透明,也导致了时钟触发边沿作用的凸现。注意锁存器、触发器定义的不同反映了观察视角的不同,但它们之间还是有联系的。现在改回比较流行的上述定义。
(3)寄存器(Register)——一般指多个触发器组成的阵列,用来存储多位数据;也可能采用的是锁存器阵列,例如数据总线。注意,个别场合也指单个的触发器或锁存器。
2.分类之二
记忆单元还可以按输入端的类型来分类。
(1) SR型——置位复位型可以细分为SR和两种。以图4-16所示的型为例。这时,以输出Q端的状态为准,记忆单元状态要么被输入端的0置位;要么被输入端的0复位;如果、同时为1则状态维持;但、不得同时为0。对于同样狭义的SR型,情况与此相反。
(2) JK型——与SR型类似,但J输入端、K输入端可以同时为1(状态翻转)或0(状态维持)。用JK型可以构成其他类型的记忆单元。
(3) D型——D输入端提供数据(Data)。有的资料称D是代表延迟。当时钟事件出现时,其输出Q端值由输入的D值透明地加以确定。
(4) T型——可以将D型的接到D,将T作为时钟 f
端的输入而构成。这时Q输出的将是T时钟信号的二分频。对这种T型还可以加上分频使能控制端。对于记忆单元而言,最重要的仍然是在正确的位置、正确的时刻存储正确的数据。为了使记忆单元能可靠工作,两个用以表征数据与时钟制约关系的额定参数——数据建立时间和保持时间必须得到满足。对于时钟上升边触发的记忆单元电路而言,时钟上升边沿(也有文献是取上升边中点)前的一段数据最小稳定期称之为建立(sp),之后的一段为保持(hp),如图4-13所示。逻辑门级联后的累计延迟因素往往破坏了记忆单元sp和hp的额定要求,从而限制了整个系统工作的最高速度。在波形分析时往往要对此备加关注。图4-13数据稳定期的建立(sp)和保持(hp)在有些触发器的设计中,记忆单元的边沿触发存储功能是靠巧妙控制电路中时间基准的延迟量而实现的。要做到让记忆单元只存储时钟 f
上升(下降)边前夕数据线电路输入端D的信息值。必要的延迟量是用延迟元件实现的,而延迟元件可以是RC网络或者是逻辑门,这些值显然是与工艺有关的。
在电路设计时,如果想分析这段波形,一般的数字仿真软件不太合适,需要用SPICE或者专用时序分析软件。
3.D锁存器
下面介绍三种常见的D锁存器。
1)动态锁存器
进行芯片设计时,要尽可能采用动态锁存器。它由传输门和反相器构成,其数据存储在反相器的栅极电容Cg上,采用电容存储的效果可以满足实用的要求,如图4-14所示。图4-14动态D锁存器这里用传输门作为主要的开关逻辑元件,传输门由全互补P和N通路晶体管组成。传输门的缺点是容易受到噪声的干扰,严重时能够形成非正常的导通。
上述动态锁存器中全互补传输门(P管—N管对)的时钟f和f!互为反相,互补的结果是传输1(主要靠P管,它单独传的是强1弱0)和0(靠的是N管,它单独传的是强0弱1)的效果相同。
此外,动态记忆单元最大的问题还是需要定时刷新以弥补电荷的泄漏。所有动态逻辑都需要增加时钟信号控制。工作中分为预充电(Precharge)和评估(Evaluation)两个阶段。实际上预充电是一种辅助阶段,不能算作真正的工作期。
2)钟控动态锁存器
另一种锁存器是由钟控反相器组成的锁存器,如图4-15,它也是利用电容作动态存储。钟控反相器就是在一般反相器的P管—N管对之间又加入一对P管—N管,令其栅极分别加入时钟
f和f!实现钟控。
上述结构的高明之处就在于它实现了传输控制和逻辑功能的巧妙结合,从而构成了比较好的反相D锁存器。图4-15钟控反相器组成锁存器
3)静态D锁存器
比较稳定的静态D锁存器利用锁存器组成JK锁存器,再将JK锁存器的J端反相后连到K端。将这时的J端作为唯一的输入端,就是闻名的静态D锁存器。如图4-16所示,左图是一个锁存器,右图是一个静态D锁存器。当 f
=0时维持不变;当 f
=1选通时输出端经一定延迟而追随输入变化。图4-16锁存器和静态D锁存器
4.D触发器之一——主从式D锁存器
图4-17所示的触发器电路是ASIC设计制造中使用颇多的电路形式,即主从式D锁存器。如果时钟
f
的高电平为输入透明写入,则当时钟低电平时为输出读出。可以看到,真正锁进去更新数据的时刻是时钟的下降边。此外,在紧接着的低和高电平期间输出端读出前面锁入的数据。它采用两个准静态D锁存器,分别完成主锁存写入输入数据和从锁存器输出稳定数据,实现了有效的隔离。图4-17主从式D锁存器为了同时稳定输出同相和反相端,一般还要再引出两个反相器。本电路就是一种负边沿触发器,具有16只晶体管。
还有一种由静态CMOS组成的主从式D锁存器(即D触发器),如图4-18所示,具有48只晶体管。它是将两个图4-16中右边的D锁存器D1、D2直接级联;而将时钟 f
反相作为D1的时钟,再反相作为D2的时钟。其真值表如表4-1所示。图4-18静态CMOS触发器
5.D触发器之二——正边沿D触发器
7474系列正边沿D触发器的门级电路见图4-19,具有26只晶体管。
当f为低时,、为1,Q、保持不变。
当f
为上升边时,形成边沿触发如下:
(1)若D此时为0,则=1、=0,为复位状态,从而Q=0、
=1。
(2)若D此时为1,则=0、=1,为置位状态,从而Q=1、
=0。图4-197474系列D触发器电路图4.3.2基本整形电路
1.施密特触发器
时序电路里少不了施密特触发器(Schmitt-trigger),其符号表示为,它主要用于整形电路,例如正弦波变成方波等。具体电路图如图4-20所示,采用CMOS工艺很容易实现。它通过如图中所示的这种特殊连接形成反馈,以便在C处呈现不同信号电平时让不同管子导通,形成反相器B处的N管TN与P管TP的有效晶体管比率动态变化,使得管子TN、TP开关阈值比正常值变大或变小,从而对不同的输入电压加以整形输出。图4-20施密特触发器
2.单稳态电路
单稳态(Monostability)电路,又称单稳态触发器,电路如图4-21所示。一种是图4-21(a)所示的单击(OneShot)电路,它根据输入端一次性电平阶跃跳变来产生需要脉冲宽度的新脉冲,也可以认为它是一种整形电路。这里通过改变元件的延迟τ,包括采用多级门或者RC网络来实现脉冲宽度的调整。另一种是如图4-21(b)所示的脉冲触发单稳态电路,它把一个窄脉冲的输入变成由RC延迟决定宽度的脉冲输出。图4-21单稳态电路施密特触发器和单稳态触发器还可以有多种其他形式。它们都不是通常意义上的数字电路,但这些基本电路各有特点,又经常在时序逻辑电路设计中要用到。一般,EDA软件的标准单元库中应有这一类单元,供系统设计师设计时选用。它们是在底层晶体管和版图级别上精心完成的设计。如果库中没有,或者不适合选用,设计师完全可以根据需要自行设计版图,验证后供使用。4.3.3时序网络结构和时钟规则
1.时序系统结构
同步时序电路系统的一般网络结构如图4-22所示。它与图4-12是相同的,这里给出了密勒和摩尔二种电路的统一概括表示。
时序系统通常由组合逻辑电路网络和记忆单元组成。设计时序系统的原则是:记忆单元决不存储不适当的数据;同时所设计的系统应是可测的。图4-22同步时序电路系统的一般网络结构
2.错位问题
错位(Skew,又称摆动、偏斜、时滞等)是时序分析中的关键问题。一般将错位分为两类,——信号错位和时钟错位。信号错位是指多个数字信号的路径延迟不一致等因素(包括串扰、反射、地弹等)造成数字波形上升与下降边沿时刻的不确定性。时钟错位是指经过不同的路径延迟等因素(包括反射、抖动等)造成时钟到来时刻的不确定性。除了一般的错位之外,许多周期性波形,包括信号和时钟在内还会发生抖动(Jitter)。抖动是指信号或时钟波形的相位和频率在某一个值附近交替变化这种不稳定性。
1)信号错位
如果某一个门g的输出连到记忆单元m的输入端D,而g又是由许多输入信号合成的组合逻辑。这些数据信号所经过的路径不同,带来的延迟也不同。以致于对于同一时刻g的诸多输入中,有的稳定,有的仍在变化,从而造成记忆单元输入端D的信号出现时刻的不确定性,这就是信号错位。这样,将会造成在时钟工作期内,由于g输出到记忆单元m的输入端D的信号时刻不确定,导致可能存储成不适当的数据。
2)时钟错位
同样,如果由于通往不同记忆单元上的时钟经过不同的路径延迟,也会造成时钟到来时刻的不确定性和与信号的不一致性,这就是时钟错位。其错位的物理原因是导线长度分支不适当、负载的过重或不均衡性以及串扰等。这时,它与外来数据信号在时钟起作用的时间区间段内相互时序配合不当,也会造起不适当的数据存储。如果错位导致数据建立/保持时间条件的破坏,将会造成错误或不稳定的输出。
关于时钟错位的对策,在第8章中还将继续讨论。
3.对逻辑网络的要求
在构成时序系统的时候,对网络结构和输入信号的要求,可以归纳为以下两条准则。
1)组合逻辑网络不能无意间形成闭环
静态逻辑的两级或多级反相门级联,就会构成记忆单元。如果组合逻辑形成闭环,将可能变成是记忆单元,而不再是组合逻辑。因为说到底,记忆单元也是可以由组合逻辑构成的。这一准则的本质是要求作为组合逻辑的设计,其输出不能与过去的输入值有关,而只能取决于当前输入值。
2)对所有电路单元和互连线必须限定其延迟值
为满足这一准则,那些常规的标准单元一般问题不大。需要特别关注的是,由标准单元进一步组合出来的那些非常规电路单元,它们的延迟往往比较大。此外,对数据线的延迟也必须有一个限定值。
4.对记忆单元时钟的要求
对记忆单元时钟的要求,可以归纳为需要服从以下基本准则。
以时钟上升边为数据存储时刻的触发器类记忆单元为例,要求主输入数据在时钟上升边沿前后必须稳定一段时间,变化在其他时间发生,以保证记忆单元存入的是适当数据。在由单时钟控制触发器、存储器的情况下,数据与时钟的快慢不当均会造成存储不当。
从图4-22中可以看出,发生存储不当这类错误的一个潜在原因在于,组合逻辑与触发器客观上非常可能在无意中就会存在一个无形的反馈环。这时要求:
(1)触发器的时钟开启时间要比最短的组合延迟还要小,以免形成正反馈振荡。
(2)
触发器的工作周期要比最长的组合延迟还要大,以保证下次时钟事件前状态数据已经稳定。
5.双相时钟系统
上述要求说起来容易,做起来难。一个比较通行的解决方案就是将原来的电路拆开,采用双相时钟分别控制两排触发器,如图4-23所示。
图4-23双相时钟系统规则由图4-23引出如下的双相时钟(二时钟相差180°)系统规则:所有经由组合逻辑的闭环必须用双相时钟——粗体的f1(称为红色)、细体的 f2(称为绿色)控制的两组触发器拆开。
这时双相时钟要和数据时序配合设计,信号在一个时钟的工作期变化从而为另一个时钟工作期准备输入数据。因此数据和时钟分为两个阵营,在时序分析时根据时序不同,例如信号在f2工作期稳定的信号记为Sf2
,采用两种颜色标注区别两个阵营的时钟和信号,暂时记为红色和绿色两个军阵。这样又引出如下几条设计规则:
(1)同一触发器的输入和输出颜色应不同。
(2)触发器的输入信号和时钟颜色应相同。
(3)到同一逻辑单元的信号颜色应相同。4.3.4状态机分析与设计
1.状态机
时序系统又统称为状态机(StateMachine),它在记忆单元上存有状态值。整个系统或状态机的当前输入又称之为主输入,总的当前输出称之为主输出。从状态机的视野出发,有助于对时序系统的理解与分析。多个时序子系统可以组成更大的时序系统。显然,将大系统尽可能分解有助于分析和设计。如图4-12所示,受时钟控制的同步状态机结构区分为两种。
(1)输出也直接受输入影响的密勒机,用式子表示就是:
下一状态Sn=f(输入I,当前状态S)
输出O=g(输入I,当前状态S)
这时的主输出同时是主输入信号和状态的函数,这就是密勒系统。
(2)输出与输入没有直接组合逻辑关系的摩尔机,用式子表示就是:
下一状态Sn=f(输入I,当前状态S)
输出O=g(当前状态S)
这时的主输出只与状态有关,又称之为摩尔系统。例如,一般的各种顺序计数器就是摩尔系统。在这两种系统中,由记忆单元存储数据,由统一的时钟决定数据的同步存储时刻,例如时钟的上升边沿时刻。新数据的存储时刻就是数据改变的时刻,或者说是状态改变的时刻。若记忆单元数为n,则系统状态数等于2n。
2.设计举例
移位寄存器和计数器是数字电路设计中两类最基本的功能模块。下面,以摩尔型计数器为例说明状态机的设计思路。对比图4-12(b)可知,这里的情况更为简化,没有输入端I和输出逻辑g,是一种最简单的摩尔型电路。
计数器作为典型的时序电路,在DSP系统的数据通路程序计数,尤其是时序控制器设计中占有重要地位。这里以六进制计数器为例简要说明。它的计数规律为
1→2→3→4→5→6→1→…
该计数器电路的一般结构如图4-24所示。这一结构比较简单,输出量直接作为状态量被反馈到输入端;f为统一的时钟。图4-24计数器电路的结构六进制计数器状态图如图4-25所示。经过分析后可知,需要设计的内容主要就是组合逻辑电路。
这里根据输出数据的位数宽度,安排了三个D触发器存储数据。在时钟的控制下,数据传入D触发器后,在窄的时钟边沿过后输出处于保持状态,其输入D和输出Q之间断开。三个Q端保留了系统的状态值。表4-2表示三个组合逻辑电路C2~C0的输入是Q2、Q1、Q0,而C2~C0的期望输出是,中间箭头所指下一行的D2、D1、D0。设计计数器的主要工作就是设计组合逻辑C2~C0的输入Q与输出D的关系式。图4-25六进制计数器状态图以D2为例,根据表4-3所示的卡诺图可得其组合逻辑表达式为
D2=Q1Q0+Q2Q1!
D0、D1的逻辑表达式与D2类同,读者不难给出。这些关于D0、D1、D2的表达式称之为激励方程(ExcitationEquations)。由于D触发器的特点,在下一个时钟上升边到来的时刻,这些D值就成为Q端的新值,即Q0*、Q1*
、Q2*
。这些描述下一个状态与当前状态关系的表达式,例如Q2*=Q1Q0+Q2Q1!等,被称之为转换方程(TransitionEquations)。
一般情况下,应该由转移方程再来求激励方程。需要特别指出,只有采用D触发器作为状态记忆单元,转移方程与激励方程才是等价的。这就是为什么绝大多数ASIC/FPGA的状态机设计都采用D触发器的原因。
4.4算术逻辑构件设计
4.4.1引言
对于专用的DSP运算处理系统,在完成专用算法和体系结构设计的前提和基础上,需要重点设计好以下三类运算部件:
(1)基本逻辑运算部件:各种与、或、非、异或门、AOI、OAI、整形电路、多路开关、存储记忆单元、移位寄存器、移位器、数值比较器、奇偶校验等。
(2)通用算术运算部件:计数器、加(减)法器、定点或浮点乘法累加器(MAC)、除法器、平方、平方根等。其中MAC运算是最重要的。
(3)专用的特殊运算部件:坐标旋转数字计算器(CORDIC)计算,包括三角函数、指数、对数、小波等。
算术逻辑构件就是广义的算术逻辑单元(ALU),主要指的是前两类运算部件。数据通路是在算术逻辑构件基础上发展起来的一个概念,数据通路比算术逻辑构件的界定范围更明晰、更具体。数据通路就是对数据集中进行各种算术逻辑计算处理的构件,它是区别各种处理器的核心构件。除了RF/模拟电路之外,数据通路、存储器、控制器、
输入/输出接口单元等是建造一个功能齐全的完整ASIC芯片的不同构件。
1.数据通路(DataPaths)结构
一个完整的通用微处理器或数字信号处理器结构如图4-26所示,它由数据通路、存储器、控制器、I/O及互连等构件模块组成。其中存储部分、控制部分(典型的有限状态机FSM时序电路)、I/O互连网络及总线部分,可以称之为外围支撑部分。
除此之外,一个重要的核心部分计算与处理功能就凸现出来了,即数据通路。这部分给出了数据的来龙去脉和加工过程,在这里完成数值计算和数据处理的任务。数据通路的名称也反映出这一含义。图4-26数字信号处理器结构图数据通路在总体上给出一种逻辑结构关系,它的部件包括由与、或、非、异或门构成的各种组合功能单元;以及加法、乘法一类的运算单元。数据通路利用这些部件完成总的算术逻辑功能,例如:加法器等算术宏单元执行算术运算;移位器执行位操作;计数器用来在程序中计数;其中间结果数据存储在内部寄存器中。
数据通路部件之间的数据传递常常在一个或几个数据总线或公用连接线上进行。总线宽度(数据线或地址线个数)是数据通路的主要设计参数。当前各种总线标准,例如芯片内总线、PCI外总线、片上网络(NOC)等的进展,值得重视和研究。这是一类与数据通路有关的“设计可重用构架”,在设计数字芯片和插卡式处理电路结构时要注意选用。
2.系统与RTL级结构
在设计数据通路时必然牵涉到系统或RTL级的体系架构,我们将在第8章进一步阐述。这里,只是先将相关的概念作一简介。
首先是控制算法决定的结构。为了改善和提高数据通路的性能,首先要研究并改进算法;同时要在尽可能高的系统及RTL结构设计上投入精力进行深入研究。如果能在寄存器以上的级别进行结构改进,其性能改善作用明显增大。例如,将一般标准的乘法器改进为Booth结构的乘法器,乘法器的延迟就会降低50%以上。
其次还有数据安排决定的平行结构,我们在后面进一步介绍。
3.流水线(Pipeline)结构
流水线是数据通路中一种常见的数据并行处理结构,它将大块的组合逻辑功能分解为许多组合逻辑片段电路,而每个片段的延迟与系统中其他部件的延迟近似相等。
在组合逻辑的断开处,需要引入一组记忆单元。通常我们希望所有的输出总是出现在同一时刻,也就是说,断开处要将输入、输出划分成不相交的两个集合。整个流水线系统还是完成与以前相同的组合逻辑功能,但是该功能将要多花费几个时钟周期来完成运算。
采用流水线技术可以对已有的其他形式数据通路设计加以改进。4.4.2组合桶形移位器
移位器(Shifter)不是移位寄存器。移位寄存器是时序逻辑,每来一个时钟周期它就移动一个位置。它具有时序逻辑的特征,在需要寄存时候被采用。然而,在大多数算术运算中并不采用它。通常我们只是希望在一个周期中能移动好几位,而且移位长度可变。
这里的移位器是组合逻辑,用来传递数据,在算术运算的加法器和乘法器中作用最大。因为移位就等效于乘以2的某次方,例如浮点计算中就很需要移位;乘固定系数也要用到它。图4-27所示为广泛应用的著名桶形(Barrel)移位器一位和整体结构设计举例,用于执行普通移位和循环移位功能,它可以一次移0~N位。桶形移位器设计由美国国家半导体公司发明,主要用途是浮点运算的对位。它的版图设计也很独特,可以进行循环移、补充符号、补充0的位移。可以认为补充位移接收的是2N位数据。移位器有N位控制信号,产生N位输出。在2N位数据中,移位后将其中的N位片传送到输出端。移位控制决定所移的位数,即决定所传送的位片。
参见表4-4,下面给出补充符号向下移位器的设计举例。图4-27桶形(Barrel)移位器结构如果将输入上部的高位As看做是符号位(本例中s=3),在普通向下移位的情况下,输入低位被不断移出,高位As的值将不断地补充到低位。举例来说,假设所传的输入数据是4位A3~A0,输出为B3~B0,控制位为sh0~sh3,则表4-4给出了向下移位的不同情况和结果。
桶形移位器采用通路晶体管组成的控制机构,利用控制线的不同互连,实现了各种不同位数的移位器设计。它的主要好处是任一个输入到输出只经过一个通路晶体管的常数延迟(实际上线长不同也会影响延迟)。因此,总的版图面积不是取决于晶体管的面积,而是由互连线占主导地位而确定。其他实用的还有对数移位器。它是在桶形移位器的基础上加以改进,整个移位值分解为2的某幂次方,形成多级级连。例如,设总的移位宽度为M,则将其分解为lbM个级连而成。4.4.3加法器
相对而言,加法器是人们研究最多的数字电路。有许多种方案可以进行加法运算,它们的面积和时延均不相同。也有很多窍门用来提高加法器的速度,包括编码、公因子复制和预充电等。正确的研究思路是在顶层先研究优秀的相加算法和结构,然后再据此在底层设计具体电路。
以全加器为例,Ai、Bi为本级(i)输入,Ci为下级向本级的进位输入,Ci+1为本级的进位输出,Si为本级和:
Si=Ai⊕Bi⊕Ci
Ci+1=AiBi+AiCi+BiCi对于一位全加器而言,可以用两个异或门组成全加和电路;由AOI222再加一个反相器组成全加进位电路;或者用半加器构成。
由N个一位全加器组成的N位加法器称之为脉动(Ripple,又称“起泡”)进位加法器。“起泡”一词形象地表达了其进位位的计算过程。
为了计算本级和,需要获得本级的进位输入,各级的情况依此类推。由此可知,不管具体电路如何,N位全加器的关键
路径为从最低位0级输入C0直到N -1级的输入CN-1。因此,脉动进位加法器的特点是简单、面积小;随着N的加大,其延迟愈加严重。加快加法器速度的首选途径是加快进位链。超前进位加法器(Carry-look-aheadAdder)就是其中的一种。它将进位计算分作两步走。第一步是从计算本级两个立即可以得到的中间值开始。这一步的实质是只有两个输入Ai、Bi和两个输出Gi、Pi的半加器方案:如果Gi(产生)=Ai·Bi=1,则肯定本级有进位,就产生一个进位Ci+1=1;如果Pi(传播)=Ai⊕Bi=1,则本级的进位输入直接在本级输出继续向高位传播,形成转变为更高一级的进位输入Ci+1,即Ci+1=Ci。注意,对于Ai、Bi的00、01、10、11四种输入,只剩下00这种情况。它是不可能引起进位的,不需要考虑。并且Gi与Pi不可能同时为1。下面,对于全加器的这一进位算法做一简介。若
Gi=AiBi
Pi=Ai⊕Bi
则本级和的输出为
Si(Gi,Pi)=Pi⊕Ci
向高位的进位输出为
Ci+1(Gi,Pi)=Gi+PiCi,如图4-28所示。这就是快速进位的单级雏形。只要一级一级这样串联起来就是多位的快速进位。
从上面两个式子可见,它们在本级运算的基础上,都在等待输入Ci的尽快确定。以一位为例,将上述四个式子合起来,就是由两个半加器再加上一个或门组成一位全加器的行为描述,如图4-29。其中Gi是半加进位,Pi是半加和。图4-28每一级加法器的进位结构图4-29半加器加或门构成的全加器当然,实际情况中如果半加进位输出处采用的是与非门,这样后面的或门可以用与非门取代。
对于多级中任意第k级情况,则有
Ck+1=f(Ak,Bk,Ck)=Gk+PkCk
继续迭代可得
Ck+1=Gk
+PkCk=Gk+Pk(Gk-1+Pk-1Ck-1)
对于任意的k,将其完全展开可得
Ck+1=Gk+Pk(Gk-1+Pk-1(…+P1(G0+P0C0)))从上式可以看出,要实现第k位的快速超前进位,其将多个本级中间值连接起来的快速方案立即可得。此外,关于各级的全加和Sk,也是在等待着Ck的确定。因此,只要实现了快速进位,则全加器以及整个加法器就是快速的。
另外,还有跳跃进位加法器(Carry-skipAdder)和选择进位加法器等。4.4.4广义加法器
在上述基础上改进的加法器,既可以执行算术运算,也可以执行按位操作的逻辑运算。对扩展加法器的运算要求决定了电路设计。三模块的广义扩展一位加法器电路方框图如图4-30
所示。
扩展的一位加法器可以对两个输入A、B,或者S、C进行16种可能的功能计算,因此最多需要四位操作控制码。四位操作码的可能操作有:0、1、缓冲(A、B)、非(A!、B!)、与(AB、AB!、A!B)、或(A+B)、异或(A⊕B)、与非(AB)!、或非(A+B)!、异或非(A⊕B)!。
它的核心还是加法器,根据实际需要,电路可以精简。图4-30三模块的扩展一位加法器方框图4.4.5减法器与数值比较器
如果加法器采用补码运算,其输入In1、In2均已经表示为补码形式,则使用如图4-31所示的加法器也可以实现减法和数值比较器功能。
对于图4-31(a)所示的N位(从0~(N-1))减法器,用第N-1位作符号位。注意减法的结果还是补码表示。
对于图4-31(b)所示的数值比较器,原理同减法器一样,只取作为运算符号位的第N-1位结果SN-1取反后来判断,如果为1,则代表运算结果的符号位为0,或者说相减的结果大于等于0,则可以得出In1≥In2的结论。图4-31用加法器实现减法和数值比较此外,7485芯片中提供的四位A与B的比较器由下述两类功能复合而成。
一类是四位等值比较器:
对每一位都进行比较相等与否。当A=B时,上述结果为1。一类是四位数值比较器,其中比较“大于”(>)的是:
从高位(A3、B3)开始到低位,依次比较是否大于。当A>B时,上述结果为1。
将上述两者结果再相“或”,就成为总的比较≥(大于或等于)的功能。4.4.6乘法器
1.原理
数字信号处理中最重要的是乘法累加运算,这里介绍乘法器。设计乘法器要从研究乘法算法原理开始。假设被乘数为X,乘数为Y:其中,Xi、Yj
{0,1},如果不出现进位,或者说在没有溢出的情况下,乘积Z则为
注意,如果累加后有进位,例如M=4位的X=15乘以N=4位的Y=15,结果Z=225为8位,而不是M+N-1=7位。我们现在来考察图4-32给出的一个乘法示例,其中X=0110,Y=1001,乘积为Z。用乘法分列式给出具体的步骤。
在每一步,我们将乘数的某一位与被乘数的全部相乘,将结果适当移位,并与部分积相加。当所有乘数位操作完毕时,就完成了乘法运算。
显然,每一位的二进制数相乘获得部分积很容易,只需要执行“与(AND)”运算即可。下面就把每一位的“相乘”直接写成“相与”。然而,如何将部分积累加成完全积,却可以有不同的优化途径。为了能理解各种不同的乘法器改进方案,我们首先对最基本的乘法器做一介绍和分析。图4-32乘法算法原理一般乘法器的结构如图4-33所示。这是一种实现上述运算的最简单方案,被称为串-并(Serial-Parallel)乘法器。在相乘过程中,乘数Y的N位,从低位到高位依次按位串行馈入,首先馈入的是最低位。在某一时刻,只有乘数Y的某一位值同时出现在M个相与器的各输入端。而M位被乘数X则并行同时出现,被乘数X的M位同时出现并分别保持在M个相与器的各输入端,最高位在左边,最低位在右边。相与单元由于是对一位进行,所以它就是一个简单的与门(AND)。为了完整起见,前面的最高位也加上一个求和;后面加上一个记忆单元输出。时钟CK控制在正边沿或高电平时往记忆单元中打入数据,在负边沿或者低电平时则完成求和运算。假设各记忆单元首先清零。完整的求和操作包括一位带记忆单元的全加器用作求和单元(参见图4-33右下方的放大图示);另外几位分立的记忆单元用来存放部分积中的每一位全加和(等下一时钟周期它给出的就是部分积中高一位的全加和)。图4-33一般乘法器的结构图记忆单元链和带记忆单元的全加器在时钟作用下,共同执行了巧妙的对位加,形成正确的部分积操作——移位后Q端代表部分积中的本位全加和作为一个输入B;乘数Y的0/1与被乘数X的该位“相与”所得为本位输入A。本位移位前的原来旧本位已经是新的低位,所以它当初的进位,此时要看做是从低位全加进位输出而来,由于移位它成为了现在本位的进位输入,作为第三个输入C。三者相加,形成部分积中的新本位全加和S再放在移位记忆单元链的各Q端;新本位全加进位输出进内部锁存,在下个时钟周期时它成为全加器的高一位(新新本位)的进位输入。
总的结果在乘法链的尾部先低位后高位依次串行输出。
2.改进
多年来,人们对乘法器进行了多方面的改进,包括:
(1) Baugh-Wooley乘法器,采用补码进行运算。
(2)适合于VLSI实现的阵列(Array)乘法器。
(3) Booth编码方案使得一次可以执行好几步乘法。
(4)Wallace树用保存进位加法器构成加法树以便采用多个加法器加速部分积的累加过程。4.4.7数据通路版图设计
数字滤波器是纯数据的,简单的通信协议是纯控制的。一般的体系结构中数据通路则离不开控制器。这时的数据通路包括规整的算术逻辑功能和存储记忆单元;与之密切相关的控制器则包括随机逻辑和状态机。在体系结构中对数据通路和控制器加以区分有利于状态机的设计。但是,由于数据和控制是平等的,因此这种区分并不是严格和明确的。
数据通路既是一种逻辑结构的概念,也同样是一种物理结构的概念。数据通路有两类必不可少的设计要素:记忆单元(寄存器或RAM)以及总线。它们的形式根据不同的问题而有所不同。为了优化数据通路设计,目前主要采用全定制方式设计底层版图结构。关于数据通路的版图设计,历来受到高度重视。在设计各种高性能微处理器的过程中,虽然已经有自动化设计工具,但是大多数还要靠手工介入版图设计,主要是为了能同时做到高密度、高工作频率和高可靠性。这时应设法减少布线之间的寄生电容值,特别是关键信号线,要尽量避免长线。数据通路与控制电路不太一样,控制电路的设计一般已经做到以采用自动化设计为主,很少人工介入到版图设计。在数据通路的版图中,单元可以线性排列,数据信号线横向走,电源线和控制线一般纵向走。例如,在一个按位拼接的四位数据通路版图中,从上到下是Bit3~Bit0排列,当横向看每一位电路时,依次可能是多路选择器、寄存器0、寄存器1、移位器、加法器、缓冲器等,这样数据通路中的电路从左到右一个挨一个,其中加法器面积最大。而全部版图的电源线和控制线都是从上到下走过。为了同时减少线长和寄生电容,有时需要在单元不动的情况下穿过单元布一根穿越(Feedthrough)线。这就要求能利用单元中空闲面积走穿越线。否则位片间由于需要留有较大的布线区,总面积会因此而变得很大。
如果数据通路的底层结构采用半定制形式,也不一定非要采用由初级的与非门组成可构造阵列,而可以是由较大的算术单元组成的可构造阵列。同样,任何一种新的DSP算法仍然可以直接映射到这种宏单元阵列中,然后通过互连编程构成完整的硬件电路。
4.5分析、仿真与验证
随着电子设计的复杂度不断增大,对于100万门中型以上芯片的设计,纯粹的人工设计已经不可能。由于规模难以驾驭,难以确保一次投片成功,因此,对自动化设计的依赖程度越来越高。但是,不管人工还是自动,按不同的有限目标,都可以将设计过程分成多次交互的四个主要阶段,如图4-34所示。图4-34设计过程的四个阶段
(1)设计创建——包括原理图设计输入和VHDL等语言文本设计输入两种方式,目前以人工为主。
(2)分析、仿真、验证——查验电路行为,确定电路响应是否满足预定要求。
仿真偏重于功能性的、全局性的;分析可以针对功能,也可以偏重性能,通常是针对特定局部细节内容进行的。例如,分析信号完整性,为的是提高速度;通过功耗分析,希望降低功耗。
这里我们再把分析验证分为两个阶段:常规意义上的分析验证往往隐含的是指物理综合前的分析验证;而我们特别关注的是物理综合完成后,对半成品的所谓后分析、后仿真、后验证。如果把后分析、后验证再加上面向制造和测试的设计,还可以将其通称为设计后工序阶段,或者称之为设计后处理。前分析验证的重点是功能正确性验证和基本的时序问题。一旦完成了逻辑结构的雏形设计,最好增加一次功耗分析。当布局布线完成之后可以采用后仿真工具再做详细的时序检查,包括关键路径延迟参数、由时钟和信号两种因素造成的错位、建立保持时间检查等。这时要注意设计库中包含的与工艺有关的门电路和寄存器电路品种的差异会严重地制约设计的正确性。需要注意的是,分析、仿真和验证都与所建模型有极大的关系,需要专门研究。在讨论用EDA软件设计电子系统与电路时,经常碰到分析、仿真(模拟)、验证等一些司空见惯的名词。目前这些概念似乎有点混乱,可能一个概念会有几个说法,也可能同一说法指的是不同的概念,为此,我们后面尽量把几种实质不同的概念用不同的名词加以界定。
(3)综合优化——产生优化的语言文本、电原理图、网表或版图。
利用布尔等价关系,可以化简、降低规模。逻辑电路网络的综合优化主要采用逻辑综合工具完成,其优劣程度主要取决于EDA软件的水平,人工介入的较少。其中也充满了许多不断细化的反复迭代过程。
(4)可制造、可测试设计(DFM、DFT)——在给出制造工艺和测试方案的背景下进行相关设计。
我们在第2章讲过如何对电路芯片进行测试,并分别描述了功能核实、故障诊断和性能评估等三类测试。那三类测试是对制造后电路芯片的实物测试。这里的DFM和DFT则是在实物制造之前,如何针对制造和测试的要求进行设计,例如插入扫描寄存器等测试电路。
DFM和DFT通过改进电路和设计性能优良的测试模板,提高制造和测试的质量。可制造和可测试设计力图在设计阶段提前解决将来制造和测试中的问题。
目前这四个阶段都是设计师,甚至设计小组借助于计算机辅助手段,采用正确的设计方法学,通过创造性劳动和一系列攻关完成任务和目标的。4.5.1分析
1.一般分析
分析是综合过程中经常使用的一种支撑保障技术。综合是一个从无到有、从粗到精的过程,是将仅有的粗线条主意和概念设计映射变换成具体的电路设计;分析则是对给定的某一电路,通过加入激励信号,求出其某些方面的功能以及性能特征或指标,从输出波形或其他数据中提取电路延迟、功耗计量、噪声容限等参数。广而言之,它可以包括电路冗余度、时序、容差、功耗热分布、噪声、串扰、电磁兼容、瞬态、非线性、系统性能等各种分析和后分析内容。这里我们称物理设计完成后的分析为后分析。
20世纪70年代由美国加州大学伯克利分校推出的电子CAA软件SPICE是优秀的电路分析软件,对模拟电路和数字电路都适用。SPICE拥有比较完备和精确的器件模型,它对电路的功能和性能,包括对许多二阶量的分析都很实用。但是它的分析速度太慢,不适合对大规模电路做晶体管级的模拟与分析。目前它主要被用来对底层设计的单元电路,特别是管级电路进行深入分析。
如前所述,分析工具除了对底层电路功能模拟之外,许多是针对各种电路性能进行的分析。性能是指在各种恶劣条件下,电路功能可以维持不变的能力和变坏程度的度量。这些恶劣条件包括噪声干扰、温度、潮湿、高速、高密度、机械外力、场辐射、使用时间和寿命等。
2.时序分析
时序分析是数字电路设计中非常重要的环节。
系统的关键路径(CriticalPath)是指在寄存器转移级结构中,发生状态转移的寄存器之间一个最长延迟的路径。这个最长的路径将影响系统全局的性能指标,制约系统时钟的最高频率,或者说限制系统工作的最快速度。对关键路径进行分析是时序分析中的重点。时序分析工具扫描整个系统网络,对于不同的路径,它按延迟的不同对路径排序(例如2.0ns、1.5ns、1.0ns、0.7ns、0.5ns等不同等级),指出其中的关键路径。一般,时序分析工具首先建立网络的RC模型,再计算出RC等效网络的延迟,这往往会花费较长的时间。即使如此,也很难保证所标识出的关键路径一定是最坏的延迟情况。因为延迟还与激励信号密切有关,可以说是激励信号的函数,所用激励不同,延迟也会不同。时序分析工具容易出现的一个错误就是提供假的关键路径。因为有的路径延迟虽大,但正常信号可能永远不会经过那里,这也是CAD工具只能辅助不能代替人工的例证。这时,需要高明的设计师,凭借自己的电路知识和设计经验加以判断来排除。
为了能有效地分析大规模电路,必须适
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 租车牌照协议书
- 草场划分协议书
- 红砖协会协议书
- 婚介所入股合同协议书
- 承包给别人合同协议书
- 武侠剧影视合作协议书
- 接亲时搞笑结婚协议书
- 美军撤军协议书
- 婚房屋财产分配协议书
- 邮政理赔协议书
- 二型呼吸衰竭的课件
- 肌钙蛋白-I(cTNI)标准操作规程
- 110kV变电站专项电气试验及调试方案
- CJT 289-2008 城镇污水处理厂污泥处置 制砖用泥质
- 2024年俄罗斯碳化硅功率模块行业应用与市场潜力评估
- 浙江省2024年中考数学试卷(含答案)
- 五年级上册英语教案-Lesson 10 There is a horse under the tree 科普版(三起)
- NB-T10394-2020光伏发电系统效能规范
- 大学劳动教育(高等院校劳动教育课程)全套教学课件
- 校园ip地址规划方案表格
- 威图电柜空调SK3304500使用说书
评论
0/150
提交评论