1

我想设计一个实现以下逻辑的门级组合电路。不使用加法器是否可以做到这一点?

...
input  wire [3:0] in,
input  wire       sel,
output wire [3:0] out
...

assign out = ({4{sel}} & (~in + 1)) | ({4{~sel}} & in);

上面的verilog代码将实现为——4个反相器、1个全加器和1个多路复用器。是否可以进一步优化?

这个想法是将 sel 合并到 2 的补码逻辑中,并产生一个门电路,该门电路消耗的门数少于加法器电路。真的有可能吗?

4

1 回答 1

1

尝试使用卡诺图并仅求解 (~in + 1) 项。如果您设置 K-map 并一次求解一位结果

// Input                               Result
// A B C D     -->  ~{A B C D}  --> ~{A B C D}+1  
// 0 0 0 0            1 1 1 1         0 0 0 0
// 0 0 0 1            1 1 1 0         1 1 1 1
// 0 0 1 0            1 1 0 1         1 1 1 0
// 0 0 1 1            1 1 0 0         1 1 0 1
// 0 1 0 0            1 0 1 1         1 1 0 0
// 0 1 0 1            1 0 1 0         1 0 1 1

......我会让你写地图的其余部分......但一些事情开始弹出。

结果位 D 始终与输入 D 相同 结果位 C 似乎是输入 C XOR 输入 D

如果您再做一些 K 映射,您可能会找到结果位 A 和 B 的逻辑表达式

于 2017-11-14T17:51:36.133 回答