欢迎光临散文网 会员登陆 & 注册

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


HDLBits (28) — 加减法器的评论 (共 条)

分享到微博请遵守国家法律