4.4 运算电路

由于VHDL中有专门的算术运算符,所以可以方便地进行运算电路的设计,设计时需要注意包含对定义相应运算符的程序包的调用。

【例4.6】设计一个能够进行4位数相加、相减和相乘运算的电路。

综合出来的电路如图4-5所示。

图4-5 4位运算器的RTL综合电路图

FPGA中电路的设计非常灵活,我们也可以采用其他的方法。以图4-6所示的串联结构的4位加法器为例,来看一下基于结构的设计方法。

图4-6 4位串行进位加法器

【例4.7】4位串行进位加法器的设计。

其中,例化元件adder的设计如下:

这种设计方法的优点是电路结构清晰、简单,但是运行速度慢,因为进位端cout必须要经过4个相同的加法模块adder才能正确输出。为提高运算速度,可采用超前进位加法器。

【例4.8】基于数据流的4位超前进位加法器的设计。

综合出来的电路如图4-7所示。

图4-7 超前进位加法器的RTL综合电路图

通过对上述三种方法设计的4位加法器的传输延迟时间进行比较,可知采用运算符设计的4位加法器的运行速度高于超前进位加法器,超前进位加法器的运行速度高于串行进位加法器。感兴趣的读者可以进一步对比观察三种方法编译之后的flow summary,可以看到,采用运算符的设计逻辑单元(Total logic elements)占用率最少,逻辑单元占用最多的是超前进位加法器。可见相同功能的电路采用不同的设计方法生成电路的运行速度和大小是不同的,可以根据需要灵活选择。