寄存器
寄存器由锁存器和触发器构成,能够存储 n-bits 数据的逻辑电路
大多由 \(D\) 触发器构成,简单可靠
4 位寄存器
每次时钟上升沿,4个输入数据并行预置
预置:将信息传递给寄存器的操作
预置端 load=1 决定哪个时钟预置
预置端 load=0 保持:次态=现态
1 2 3 4 5 6 7 8 9 10 11 12 13
| module Reg4Bit2( input logic clk, input logic load, input logic [3:0] D, output logic [3:0] Q ); logic [3:0] d; assign d = Q & {4{~load}} | D & {4{load}}; // D 触发器 always_ff @ (posedge clk) Q <= d; endmodule
|
带输出使能端的寄存器
输出采用三态门控制,适合于挂接在数据总线上
74LS75 寄存器:16引脚4路透明D锁存器
74HC175:CMOS边沿触发4位寄存器
移位寄存器
能对信息进行单向或双向移位操作的寄存器称为移位寄存器。
移位寄存器的逻辑结构包括一串级联的触发器,每个触发器的输出连接到下一个触发器的输入端
串行传输与并行传输
如果数字系统的数据路径每次只传送一位信息,则称它工作在串行方式下
信息从源寄存器移位到目的寄存器中,如果是并行传输,信息的传送是同时进行的
应用:串行传输:每次只传送/移动1位信息
串行加法器:仅用一个全加器
- 串行速度慢,但器件少
- 2个加数事先存入寄存器中
- 进位c反馈到加法器
- 移位寄存器A保存求和S结果
4位移位寄存器
在同一个时钟上升沿,所有的数值都是同时移位的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| module ShiftReg( input logic clk, clr, input logic daataIn, output logic [3:0] q ); always_ff @ (posedge clk, posedge clr) begin if(clr==1) q<=0; else begin q[3] <= dataIn; q[2:0] <= q[3:1]; end end endmodule
|
通用移位寄存器
如果寄存器既有双向移位,又有并行预置功能,则称这个寄存器为通用移位寄存器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| module ShiftReg2 input logic CLK, Clear_b, input logic sl, s0, // Select inputs input logic MSB_in, LSB_in,// Serial inputs input logic [3: 0] I_par,// Parallel input output logic [3: 0] A_par); // Register output always_ff @ ( posedge CLK, negedge Clear_b) if (Clear_b == 0)A_par <= 4'b0000; else case ({sl, s0}) 2'b00: A_par <= A_par; 2'b01: A_par <= {MSB_in, A_par[3: 1]}; 2'b10: A_par <= {A_par[2: 0], LSB_in}; 2'b1l: A_par <= I_par; endcase endmodule
|
| S1 | S2 | 功能 |
|---|
| 0 | 0 | 0 | 保持 |
| 1 | 0 | 1 | 右移 |
| 2 | 1 | 0 | 左移 |
| 3 | 1 | 1 | 并行输入 |
74LS194 双向移位寄存器
计数器
对输入(时钟)脉冲信号进行计数[触发器状态组合表示]的时序逻辑电路
广义说,一种能在输入信号作用下依次通过预定状态的时序逻辑电路.
3位 8分频计数器
1 2 3 4 5 6 7 8 9
| module Counter3b( input logic clk, clr, output logic [2:0] Q ); always_ff @(posedge clk, posedge clr) if(clr==1) Q <= 0; else Q <= Q+1; endmodule
|