1位二进制:触发器、锁存器
8位/16位二进制:寄存器

3.2.1 数码寄存器(Register)

四位并行数码寄存器74HC451

notion image
  1. ,寄存器清零
  1. 放置好数据
  1. 给写入命令高电平,相当于给内部所有的D触发器一个下降沿;将上的数据锁存

八位并行数码 锁存器74LS373/74LS374

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

3.2.2 集成移位寄存器

移位寄存器除了能寄存二进制信息之外,还能对存入的信息在时钟脉冲的作用下进行移位操作

单向移位寄存器

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

双向移位寄存器

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

移位寄存器的应用举例

数字延迟线

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

产生序列脉冲

notion image
notion image
notion image

构成乘法器电路*

notion image

构成除法器*

思路:不断做减法,并且把减的次数记下来
 
 

移位寄存器型计数器

notion image
环形计数器也叫做循环计数器,其基本原理是:将移位寄存器的串行输出端接到串行输入端,从而使移位寄存器对二进制数进行循环移位。
以CD40194构成4位环形计数器为例:
  • 初始化时,通过并行输入将1000存入寄存器
  • 在时钟脉冲的驱动下,数据向右移位,形成1000→0100→0010→0001的循环
  • 通过设置实现右移操作
【自启动设计-基础款】
notion image
可以看到,这里有多个计数循环。简单的自启动设计就是在上电时并行置数,选中我们想要的工作循环
notion image
具体电路设计如上。接成一个微分电路(或者说高通滤波器)
上电瞬间,,并行置数;随后,开始循环右移

【自启动设计-加强款】

修正基本的环形计数器 (Ring Counter)

我们先来分析一下您图片中那个计数器可能遇到的问题。
  • 有效状态:一个4位的“标准”环形计数器,理想情况下只有一个'1'在循环,有效状态只有4个:1000 -> 0100 -> 0010 -> 0001 -> 1000...
  • 无效状态:总共有 24=16 个可能的状态,所以有12个无效状态。
  • 最危险的无效状态00001111。如果采用最简单的反馈 D_SR = Q_0,一旦进入 0000 状态,Q_0=0 会被反馈回输入端,电路将永远停留在 0000,这就是“锁定”。同理,1111 状态也会锁定。
自启动设计思路:
我们需要设计一个反馈逻辑,当检测到无效状态时,强制改变串行输入 D_SR 的值。一个非常经典且高效的方法是:
将串行输入 D_SR 连接到前面几个触发器输出的“或非”上。
逻辑表达式为:
或者等效地写作:
这个逻辑可以用一个三输入或非门或者与非门来实现。
我们来分析一下这个设计的巧妙之处:
  1. 当处于有效状态时
      • 假设当前状态是 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。也正确!
      • 电路在有效循环内工作完全正常。
  1. 当处于无效状态 "0000" 时
      • 当前状态是 0000。此时 Q_3=0, Q_2=0, Q_1=0。反馈输入 DSR=0+0+0=1。下一个脉冲到来,状态变为 1000。电路成功地从锁定状态 0000 进入了有效循环!
  1. 当处于其他任意无效状态时
      • 比如状态 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 的输入即可。
Loading...