【问题标题】:Combinational circuit : Output 2s complement only when select line is high组合电路:仅在选择线为高电平时输出 2s 补码
【发布时间】:2017-11-15 01:51:36
【问题描述】:

我想设计一个实现以下逻辑的门级组合电路。不使用 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 的补码逻辑中,并生成一个门电路,该门电路消耗的门数少于加法器电路。真的可以吗?

【问题讨论】:

  • 您的描述是什么语言的?请编辑您的问题以包含正确的标签(例如 verilogvhdl 或类似标签)。如果你想在没有 MUX 的情况下这样做,那么你应该删除那个标签?
  • 感谢您指出。我已经编辑了问题。
  • 您可以使用 16 项 LUT 来进行 2 的补码转换。不过,我很想知道它与 4b 加法器之间的门差异。

标签: verilog register-transfer-level asic


【解决方案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 似乎是 Input C XOR Input D

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-10
    • 1970-01-01
    • 2015-12-20
    • 2014-04-23
    • 2014-06-08
    • 1970-01-01
    • 2015-11-17
    相关资源
    最近更新 更多