1位二进制:触发器、锁存器
8位/16位二进制:寄存器
3.2.1 数码寄存器(Register)
四位并行数码寄存器74HC451

- ,寄存器清零
- 放置好数据
- 给写入命令高电平,相当于给内部所有的D触发器一个下降沿;将上的数据锁存
八位并行数码 锁存器74LS373/74LS374



这里的输出是三态门,通过1号引脚进行控制
数码寄存器74LS373和74LS374是常用的8位D型锁存器/触发器:
- 74LS373:电平敏感的8位D型锁存器
- 当LE(锁存允许)为高电平时,数据从D输入传输到Q输出
- 当LE变为低电平时,输出保持当前状态
- 74LS374:边沿触发的8位D型触发器
- 在时钟脉冲的上升沿,数据从D输入传输到Q输出
- 其他时刻输出保持不变
两者共同特点:
- 都有三态输出控制端(输出使能),低电平有效
- 都可以存储8位二进制数据
- 常用于数据锁存和总线驱动
主要区别在于374是边沿触发,373是电平触发,这会影响它们在实际电路中的应用场合选择。
3.2.2 集成移位寄存器
移位寄存器除了能寄存二进制信息之外,还能对存入的信息在时钟脉冲的作用下进行移位操作
单向移位寄存器

单向移位寄存器是最基本的移位寄存器类型,它只能向一个方向(通常是向右)移位。工作过程如下:
- 在时钟脉冲的控制下,数据按固定方向逐位移动
- 每个时钟周期,所有位的数据同时向指定方向移动一位
- 移出的数据从最后一位输出,新数据从第一位输入
双向移位寄存器
在控制信号的控制下,信息可以从右向或从左向存入并实现移位操作


CR:清零
CP:clock pulse;理解这个异步保持,也就是CP=0,电路其实没有工作,是一种被动的、异步的保持,和下面的同步保持进行区分
:控制左移、右移时补0还是补1
通过实现四选一的地址控制:
- :保持状态
- :右移
- :左移
- :并行存数,置入
输出端函数的逻辑表达式如下(以为例,懒得打字了):
实际上就是一个功能选择的表达式
移位寄存器的应用举例
数字延迟线


简单来说,一个时钟脉冲只右移1位;从而可以达到延迟输出的功能;并且这个延迟的时间是可以控制的
产生序列脉冲



构成乘法器电路*

构成除法器*
思路:不断做减法,并且把减的次数记下来
移位寄存器型计数器

环形计数器也叫做循环计数器,其基本原理是:将移位寄存器的串行输出端接到串行输入端,从而使移位寄存器对二进制数进行循环移位。
以CD40194构成4位环形计数器为例:
- 初始化时,通过并行输入将1000存入寄存器
- 在时钟脉冲的驱动下,数据向右移位,形成1000→0100→0010→0001的循环
- 通过设置实现右移操作
【自启动设计-基础款】

可以看到,这里有多个计数循环。简单的自启动设计就是在上电时并行置数,选中我们想要的工作循环

具体电路设计如上。接成一个微分电路(或者说高通滤波器)
上电瞬间,,并行置数;随后,开始循环右移
【自启动设计-加强款】
修正基本的环形计数器 (Ring Counter)
我们先来分析一下您图片中那个计数器可能遇到的问题。
- 有效状态:一个4位的“标准”环形计数器,理想情况下只有一个'1'在循环,有效状态只有4个:
1000
->0100
->0010
->0001
->1000
...
- 无效状态:总共有 24=16 个可能的状态,所以有12个无效状态。
- 最危险的无效状态:
0000
和1111
。如果采用最简单的反馈D_SR = Q_0
,一旦进入0000
状态,Q_0=0
会被反馈回输入端,电路将永远停留在0000
,这就是“锁定”。同理,1111
状态也会锁定。
自启动设计思路:
我们需要设计一个反馈逻辑,当检测到无效状态时,强制改变串行输入
D_SR
的值。一个非常经典且高效的方法是:将串行输入
D_SR
连接到前面几个触发器输出的“或非”上。逻辑表达式为:
或者等效地写作:
这个逻辑可以用一个三输入或非门或者与非门来实现。
我们来分析一下这个设计的巧妙之处:
- 当处于有效状态时:
- 假设当前状态是
0001
。此时Q_3=0, Q_2=0, Q_1=0
。反馈输入 DSR=0+0+0=1。下一个时钟脉冲到来后,状态变为1000
。正确! - 假设当前状态是
1000
。此时Q_3=1, Q_2=0, Q_1=0
。反馈输入 DSR=1+0+0=0。下一个时钟脉冲到来后,状态变为0100
。也正确! - 电路在有效循环内工作完全正常。
- 当处于无效状态 "0000" 时:
- 当前状态是
0000
。此时Q_3=0, Q_2=0, Q_1=0
。反馈输入 DSR=0+0+0=1。下一个脉冲到来,状态变为1000
。电路成功地从锁定状态0000
进入了有效循环!
- 当处于其他任意无效状态时:
- 比如状态
1101
。此时Q_3=1, Q_2=1, Q_1=0
。反馈输入 DSR=1+1+0=0。下一个状态是0110
。 - 当前状态
0110
。此时Q_3=0, Q_2=1, Q_1=1
。反馈输入 DSR=0+1+1=0。下一个状态是0011
。 - 当前状态
0011
。此时Q_3=0, Q_2=0, Q_1=1
。反馈输入 DSR=0+0+1=0。下一个状态是0001
。 - 可以看到,无论从哪个无效状态开始,经过几个时钟周期后,它最终都会被引导回
1000
这个有效状态。
电路实现:
只需要在原电路基础上,将
Q_3
, Q_2
, Q_1
的输出连接到一个三输入或非门,然后将或非门的输出作为 D_SR
的输入即可。