APP下载

浅析基于verilog 的加法器设计

2020-08-11王怡

科学技术创新 2020年25期
关键词:逻辑电路级联流水线

王怡

(电子科技大学成都学院微电子技术系,四川 成都611731)

本文将介绍三种基于verilog 的加法器设计,分别是:级联加法器、并行加法器和流水线加法器。在介绍每种设计方法的同时,对每种方法的优缺点、适合使用的场合以及改进方法都会进行详细的阐述。

1 级联加法器

级联加法器的核心设计思想来源于加法运算法则本身。在多位数的加法运算中,运算顺序是从低位到高位依次进行加法运算,每次运算一位。除最低位外,其他位都是用本位的数据与来自低位的进位相加。本质上讲,每一位的运算都是一个一位全加器,只是不同位的输入数据不同,运算的时机不同而已。所以,我们可以设计一个一位全加器,然后按照运算的顺序,将多个一位全加器串联起来就可以了。这也是级联加法器中“级联”的含义。设计方法可以采用全结构设计的方法,也可以采用结构设计和行为描述结合的方法,本文采用第二种方法。一位全加器的设计代码如下:

将以上代码在开发工具中生成图形符号,再利用绘图功能依次互联即可,电路结构如图1 所示。

图1

这种设计方法的优点是设计简单,但主要应用于一些对运算速度要求不高的场合,要求高则无法使用。因为这种加法器每一位的运算都要等待前一位运算完成,输出进位之后才能完成。所以运算的位数越多,延时就越长。

2 并行加法器

并行加法器的设计方法,是直接利用verilog 的加法运算符直接进行行为描述。这种设计方法的好处是,设计人员无需了解加法器的底层硬件结构,只需要描述功能即可。并行加法器的优点是运行速度快,而缺点也很明显:a.并行加法器完全依赖门电路来搭建,所以对系统资源的耗费是很大的。特别是随着加法器宽度的增加,资源的耗费也会迅速增大。b.并行加法器是一个纯组合逻辑电路,因为输入信号时间上的不一致以及电路本身延时等原因,会造成竞争冒险现象,从而在电路的输出端产生中间态输出,形成毛刺,影响系统的稳定性。

针对这一问题,我们可以在加法器设计中引入时钟,通过在输入端和输出端加触发器来改善毛刺。输入端的触发器由主时钟统一控制,可以最大程度的将输入信号的输入时序同步,降低毛刺形成的可能性。输出端的触发器每一个主时钟周期输出一次加法器的运算结果,不输出中间态,也就隔离了毛刺的输出。当然,主时钟频率的选择是有要求的:它的周期必须大于加法器组合逻辑电路的运算时间,否则无法隔离毛刺的输出。具体代码如下:

3 流水线加法器

流水线加法器是一种基于时钟的同步逻辑电路,设计方法相对复杂,但运算速度,对系统频率的适应性,都是非常优越的。流水线加法器也是这篇文章重点介绍的加法器设计方法。流水线加法器可以解决系统主频很高,而加法运算由于位宽大,运算速度低,而拖慢整个系统运行频率的问题。例如:某系统是一个全同步系统,同时又运行在25MHz 的频率上,那么任何信号从输出端寄存器反馈到信号输入端之间的最大延时必须小于40ns。如果反馈时通过的逻辑电路较复杂,延时路径比较长,系统时钟的速度就很难维持。在加法器这个问题上,如果沿用上文提到的同步并行加法器的设计,当加法器的运算速度大于系统时钟周期40ns 时,加法器将会输出运算的中间值,产生输出错误。如果不改进加法器设计,就只能降低整个系统运行的频率。流水线电路设计的基本思路是:将原来的组合逻辑电路分成若干个规模更小的电路来实现。并且在这些小规模逻辑电路中加入若干寄存器来存储中间运算结果。中间结果在下一拍时钟进入下级电路进行运算。这样一级级的传递和运算,直到最后一级电路算出最终结果。这样,用多个时钟周期来完成电路的运算。虽然多用了一些寄存器资源,但是减少了每一级组合电路的时延,可以提高整个电路的运行频率。同时,由于流水线电路的每一级都处于同一个系统时钟的控制下,因此,多级电路是并行工作的。这就意味着,最后一级流水线在处理第一条指令的最后一步时,前几级的流水线电路可以同时处理后续多条指令的不同步骤。以四级流水线深度的32 位加法器为例:32 位加法运算被分解成4 步,每一步完成一个字节的加法运算,对应一级流水线的硬件,由系统时钟统一控制。前四拍时钟,电路的工作内容如下:

表1

从上表可以看出,在四个时钟周期中,电路完成了第一组32位数的加法运算。同时还分别完成了第二、第三、第四组数的前三、前二、前一步的运算。所以,尽管一组32 位数据需要4 个时钟周期才能算完,但由于电路运行的并行性,实际最终平均一个时钟周期就能输出一组运算结果。这样,不但没有拖慢系统运行的主频,还提高了加法运算的速度。流水线电路设计的核心在于每级电路运算结果的缓存,这个设计如果不正确,将无法得到正确的结果。分析如下:a.输入数据: 因为多个周期才能完成一次运算。因此如果在运算完成前输入数据就变化的话,将得不到正确的运算结果;b.前一级流水线的运算结果,分两种情况:如果在下一级流水线中马上就用的,如进位信息,就不用缓存。如果在下一级流水线中不用,到最后才用或输出的值,则在运算结果出来之后的每一级流水线中都需要缓存。因此,每一级流水线中应完成如下数据缓冲任务:a. 后级流水线需要用到的输入数据;b.前级流水线的运算结果。以四级流水线深度的32 位加法器为例,其每级需缓存数据的定义如以下代码所示:

4 结论

本文介绍了三种基于verilog 的加法器设计,分别是:级联加法器、并行加法器和流水线加法器。其中级联加法器设计简单,但运算速度受限,只能应用于对运算速度要求不高的场合。并行加法器速度快,但是资源占用较大。随着运算位数的增加,运算速度也将越来越慢。同时,并行加法器是组合逻辑路,存在竞争冒险现象,影响结果输出。本文就此也提出了解决方案。流水线加法器设计复杂,但性能十分优越。在不同的应用场合,可根据需求的不同选择不同的加法器设计方法。

猜你喜欢

逻辑电路级联流水线
铀浓缩厂级联系统核安全分析
流水线
数字电子时钟逻辑电路的教学设计与仿真
基于PLC的饮料灌装流水线设计
全加器设计中的卡诺图化简法
流水线
汽车喷漆流水线的应用与研究
整体级联式增压空气冷却器的进气模块
浅谈时序逻辑电路
论逻辑电路中的竞争与冒险现象