HDLBits (28) — 加减法器
2022-02-03 00:54 作者:僚机Wingplane | 我要投稿
本题链接:
https://hdlbits.01xz.net/wiki/Module_addsub
加减法器可以通过选择性地对一个输入求反来从加法器构建,这相当于对输入求反,然后再加1。最终的结果是一个电路可以执行两个操作:(a+b+0)和(a+~b+1)。如果你想更详细地了解这个电路是如何工作的,请参阅维基百科(详见参考资料)。
构建下面的加减法器。
你会得到以下的16位加法器模块,你需要实例化它两次:
module add16 ( input[15:0] a, input[15:0] b, input cin, output[15:0] sum, output cout );
每当sub为1时,使用一个32位宽的异或门反转b输入(这也可以看作是 b [31:0] XORed 与子复制32次。请参阅扩展操作符。),另外还要将子输入连接到加法器的进位。


题目
提示:
异或门也可以看作是一个可编程的反相器,其中一个输入控制另一个输入是否应该反转。下图所示的两个电路都是异或门:


答案

输出波形


参考资料:
Adder–subtractor - Wikipedia :
https://en.wikipedia.org/wiki/Adder%E2%80%93subtractor