Verilog时序逻辑硬件建模设计(四)移位寄存器-Shift Register
没有任何寄存器逻辑,RTL设计是不完整的。RTL是寄存器传输级或逻辑,用于描述依赖于当前输入和过去输出的数字逻辑。
在大多数实际应用中,移位寄存器用于在时钟的有效边沿执行移位或循环操作。参考时钟信号上升沿的移位器时序如图 5.27 所示。如图所示,时钟的每个上升沿都会将来自 LSB 的数据移动一位到下一级寄存器传输级,因此,对于四位移位寄存器,需要四个时钟延迟才能从 MSB 获得有效输出数据。
图 5.27 移位寄存器的时序
例 5.14 描述了串行输入串行输出移位寄存器的 Verilog RTL。如示例中所示,数据“d_in”在每个时钟边沿移位以生成串行输出“q_out”。在正常操作期间,复位输入“reset_n”设置为逻辑“1”。要为串行输入的任何变化生成有效的串行输出,移位寄存器需要四个时钟脉冲。
图 5.28 显示了串行输入串行输出移位寄存器的四个寄存器的综合逻辑。
例 5.14 串行输入串行输出移位寄存器的 Verilog RTL
图 5.28 四位移位寄存器的合成逻辑右移或左移
大多数实际应用涉及数据的右移或左移。考虑一个涉及字符串操作的协议,其中要求将字符串向右或向左移动一位或多位。在这种情况下,使用双向(右/左)移位寄存器。
双向移位寄存器的 Verilog RTL 在示例 5.15 中进行了描述,数据的方向由“right_left”输入控制。对于“right_left=1”,数据右移;对于“right_left=0”,数据向左移动。
综合逻辑如图5.29所示,数据传输方向由“right_left”输入控制。综合逻辑由四个寄存器组成,附加的组合逻辑控制数据流的方向。
示例 5.15 右/左移位寄存器的 Verilog RTL
图 5.29 双向移位寄存器的综合逻辑 Parallel-Input and Parallel-Output (PIPO) Shift Register
在大多数处理器设计应用中,数据需要并行传输。考虑与外围设备通信的四位数据总线。如果处理器和外围设备都对并行数据进行操作,则必须使用并行输入并行输出逻辑来传输数据。
在这种情况下,使用 PIPO 寄存器。PIPO 四位寄存器的逻辑图如图 5.30 所示。四个并行输入线命名为 PA、PB、PC 和 PD,四个并行输出线命名为 QA、QB、QC 和 QD。PIPO 寄存器在时钟信号的上升沿触发。
示例 5.16 中描述了 Verilog RTL。
四位 PIPO 寄存器的综合逻辑如图 5.31 所示。
图 5.30 四位 PIPO 寄存器
例 5.16 4 位 PIPO 寄存器的 Verilog RTL
图 5.31 4 位 PIPO 寄存器的综合逻辑时序和性能评估
时序是 ASIC/FPGA 设计中一个非常重要的参数。时序电路的时序收敛对于复杂的 ASIC/FPGA 设计至关重要。RTL设计的详细时序分析和频率计算将在后面讨论。
为了更好地理解这一点寄存器传输级,必须监督寄存器输入和寄存器输出。在实际的 ASIC/FPGA 设计中,Verilog 代码应该高效地编写并且应该有注册和注册输出。这样做的原因是为了更好的时序分析和获得干净的寄存器到寄存器路径。
带有寄存器输出的 Verilog RTL 如例 5.17 所示。假设另一个块驱动输入信号“a”、“b”、“c”、“d”和“select”。所有这些输入都是寄存器输入。这允许干净的寄存器路径和简单的时序分析。
综合逻辑如图 5.32 所示,生成一个八位并行输入并行输出寄存器。该逻辑在时钟的上升沿触发。
示例 5.17 用于寄存器输出的 Verilog RTL
图 5.32 寄存器输出逻辑综合结果
数字硬件建模综述
数字硬件建模——从另一个角度理解Verilog(一)
数字硬件建模——从另一个角度重新认识Verilog(二)
组合逻辑硬件建模与设计(一)逻辑门
组合逻辑硬件建模设计(二)运算电路
Verilog/SV代码检查器-Lint建模规则检查器和Verilator
Verilog 组合逻辑设计指南
Verilog时序逻辑硬件建模设计(一)锁存器D-latch和触发器Flip-Flop
Verilog时序逻辑硬件建模设计(二)同步与异步复位
Verilog时序逻辑硬件建模设计(三)同步计数器