我想设计一个门级组合电路来实现下面的逻辑。有没有可能不使用Adder就能做到这一点?
...
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的补码逻辑中,并产生比加法器电路消耗更少数量的门电路。真的有可能吗?
发布于 2017-11-15 01:51:36
尝试使用卡诺图,只求解(~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异或输入D
如果您再做一些K图,您可能会找到结果位A和B的逻辑表达式
https://stackoverflow.com/questions/47245388
复制相似问题