《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位全加器:

  1. 加法器输入的数据生成器(Generate)和传播器(Propagate)
  2. 数据生成器和传播器的超前进位部分
  3. 数据生成、传播和超前进位三者的求和(应该是异或)

 

 

posted @ 2023-08-04 09:19  NEWICER  阅读(75)  评论(0)    收藏  举报