为什么算术 Verilog 书籍使用盖茨逻辑而不是使用“+”、“-”、“*”等来执行运算?

Why do Arithmetic Verilog books perform operations using Gates Logic instead of using "+","-"," * " etc?

我是 Verilog 和 VHDL 的新手。

我一直在研究Verilog,重点是如何进行算术运算,这是我的教授推荐我研究的一个项目。这个想法是执行一个简单的等式,其中包含实数的加法、减法、乘法和除法,例如 1.0058 + 0.1689,在它们的二进制版本中。

我正在阅读 Cavanagh 的 Verilog 算术书。他们解释如何制作加法器、除法器等,他们采用 "Gates" 的编程方法,他们在组合逻辑或顺序逻辑中使用门。

我很容易理解这本书,但不应该 Verilog 已经有这个 +-* 甚至 / 用于除法,为什么用 karnaugh 和 adder ripple carry adder 等实现这个有那么多麻烦吗?

为什么不只声明变量并使 begin...end 并在语句中使用“=”进行操作?

你提到学习计算机体系结构的书籍,那么我的猜测是:

这是出于教学原因。

因此,您了解到一切事物背后总是有 NAND 或 NOR 门。

要了解硬件算术(二进制补码),您需要使用逻辑门来学习,这样您就可以了解位是如何被操作的。 Verilog只是用来描述门。

如果您了解基本算术,那么除非您设计自定义算术单元,否则没有必要达到这个水平。

在 verilog RTL 中,最好使用 +-*,这样综合工具可以选择满足您需求的最佳硬件(最低功耗、最小尺寸)时序约束。当您的电路仅以 1MHz 运行时,不需要具有高级前瞻性的加法器来减少满足 1GHz 时序的纹波时间。

您的问题还提到了实数(浮点数),这些在 verilog 中不可合成,但可以在测试平台中使用。如果您只需要小数,我建议您看一下: