《Verilog数字系统设计教程》读书笔记——第二部分中级篇
第二部分——中级篇
第一讲:Verilog HDL模型的不同抽象级别
第二讲:如何编写和验证简单的纯组合逻辑模块
2.1、加法器
单比特半加器(Half Adder)
半加器不考虑低位进位来的进位值,只有两个输入(A和B),两个输出(Carry和Sum)。由一个与门(Carry)和异或门(Sum)构成。
真值表:
| 输入 | 输出 | ||
|---|---|---|---|
| A | B | Carry | Sum |
| 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 0 |
半加器不考虑低位向本位的[进位],因此它不属于[时序逻辑电路],有两个输入端和两个输出。
设加数(输入端)为A、B ;和为Sum ;向高位的进位为Carry
逻辑表达式:
Sum = A ⊕ B
Carry = A ● B
单比特全加器(Full Adder)

逻辑表达式:
$$C_{i} = X_{i}Y_{i} + X_{i}C_{i-1} +Y_{i}C_{i-1} $$
$$S_{i} = X_{i}\bar{C}_{i} + Y_{i}\bar{C}_{i}+ C_{i-1}\bar{C}_{i} +X_{i}Y_{i}C_{i-1} $$
行波进位加法器(Ripple Carry Adder,RCA)

在进行加法运算时,首先准备好的是1号全加器的3个input。而2、3、4号全加器的Cin分别来自前一个全加器的Cout。只有等到1号全加器运算完毕,2、3、4号全加器才能依次进行进位运算,最终得到结果。 这样进位输出,像波浪一样,依次从低位到高位传递, 最终产生结果的加法器,也因此得名为行波进位加法器。
高位的运算必须等待低位的运算完成, 这样造成了整个加法器的延迟时间很长,为(2n+1)T。
超前进位加法器(Look-Ahead Carry Adder,LCA)

生成Generate:Gi = Xi ● Yi
传播Propagate:Pi = Xi ⊕ Yi
加法和Sum:Si = Pi ⊕ Ci
加法进位Carry:Ci = Pi ● Ci-1 + Gi = Pi ● (Pi-1 ● Ci-2 + Gi-1) + Gi

【HDL系列】超前进位加法器原理与设计 - 知乎 (zhihu.com)
2.2、乘法器


2.3、比较器
2.4、多路器
书上的例子中应该吧Mout声明成reg才对,因为在过程块中赋值必须是寄存器类型变量,且不声明reg默认是wire。
2.5、总线和总线操作
2.6、流水线(Pipeline)
首次延迟:将输入到输出最长的路径进行初始化所需要的的时间总量。
吞吐延迟:执行一次重复性操作所需要的的时间总量。
3级流水线实现n位全加器:
- 加法器输入的数据生成器(Generate)和传播器(Propagate)
- 数据生成器和传播器的超前进位部分
- 数据生成、传播和超前进位三者的求和(应该是异或)


浙公网安备 33010602011771号