1.3.9 加减器
加法器-减法器可以通过可选地对其中一个输入进行取反来从加法器构建,这等效于先翻转输入然后再加1。这样得到的电路可以执行两种操作:(a + b + 0) 和 (a + ~b + 1)。如果您想了解更多关于这个电路工作原理的细节,可以在Wikipedia上查阅。
请构建如下所示的加法器-减法器。
您将获得一个16位加法器模块,需要实例化两次:
module add16 ( input[15:0] a, input[15:0] b, input cin, output[15:0] sum, output cout );
当sub信号为1时,使用一个32位宽的异或门来翻转b输入。这也可以看作是b[15:0]与sub信号复制32次后的异或操作(参见重复操作符)。同时,将sub输入连接到加法器的进位输入(cin)上。
模块声明
module top_module(
input [31:0] a,
input [31:0] b,
input sub,
output [31:0] sum
);