触发器基本应用:计数器(二进制异步/行波、环形、扭环型)、寄存器(并/串行、输入/出、移位、累加、延时单元)
1 简单计数器
一个计数器常由一组触发器(按给定顺序改变状态)构成
同步计数器:触发器的状态在同一时钟脉冲的同一有效边沿上改变
异步计数器:每个触发器时钟部分或全部不同
↓一些特殊的计数器
①二进制计数器(脉冲分频电路/除法计数器)
异步计数器中
由 n个T'触发器(上图由D触发器构成,若由JK触发器构成,则JK输入端连1)构成,
第一个T'触发器的C端连接系统时钟,
其后每一级触发器将前级触发器输出作为本级时钟输入的计数器
——二进制异步加法计数器
在系统时钟CP作用下,第1个T'触发器不断翻转,其输出是第2个T'触发器时钟,故第2个T'触发器也不断翻转,但周期长了一倍
(每个触发器翻转周期均比其前级触发器周期长一倍)
该图中,D触发器有效时钟边沿是上升沿,且将前级输出的“非”作为后级时钟,故前级输出下降沿引起后级触发器翻转
n级触发器可构成$2^n$分频电路,$2^n$分频相当于将CP脉冲频率÷$2^n$
eg.CP信号是8MHz
通过3个触发器,Q2输出1MHz(CP信号8分频);
通过4个触发器,Q3输出0.5MHz(CP信号的16分频)……
若将前级输出Q作为后级时钟,引起后级触发器翻转的前级输出变为上升沿;
把此计数器所有触发器输出看成二进制数,其计数规律:每个CP,计数值减1(减法计数器)
【触发器构成的异步计数器总结】
加法计数:前级输出是后级时钟,后级时钟下降沿有效
减法计数:前级输出的“非”是后级时钟,后级时钟下降沿有效
∵该计数器时钟信号前后级串联
∴到每个触发器时钟信号不同时,故又称其“行波计数器”
∵每个触发器时钟不同步
∴在CP有效边沿后一段时间内可能产生冒险
eg.计数从7到8
0111→0110→0100→0000→1000
不稳定的暂态过程,需要持续4个触发器传输延时时间才能达到稳定
(触发器越多,该不稳定暂态过程持续时间越长)
由于不稳定现象发生在状态转换过程中,故称之动态冒险
虚假计数值可能造成严重后果!!!
②环形计数器
一个顺序改变的驱动信号(1→2……→7→1→2……→7)
n个驱动信号作为动作的启动信号;
每个动作结束后产生有效的CP脉冲信号;
最后一个动作执行完,系统回到0号状态,等下次循环。【顺序控制方式】
工作过程:
①系统启动时,系统复位信号RST将第1个触发器输出预置为1,其余触发器输出预置位0→计数器复位状态为$Q_4 Q_3 Q_2 Q_1 Q_0=00001$
②系统启动后,RST不再出现
第n个触发器的输出是第n+1个触发器的激励输入,故第n+1个触发器的次态是第n个触发器现态;
最后一个触发器输出循环回,成为第1个触发器激励,第1个触发器次态是最后一个触发器现态
(像是将第1个触发器输出在CP脉冲作用下不断位移,该结构叫移位寄存器结构,该计数器叫移位寄存器计数器)
优点:同步计数器采用同一个时钟信号,不存在异步计数器所存在的动态冒险问题
缺点:计数状态利用率低,n个触发器仅有n个有效输出状态<<可能产生的$2^n$个状态数
针对该缺点设计的环形计数器——扭环型计数器/约翰逊计数器
区别:最后一个触发器到第1个触发器的反馈型号不同
环形计数器:最后一个计数器输出Q作为反馈信号
扭环型计数器:最后一个触发器输出的“非”作为反馈信号→是输出状态增加一倍
CP脉冲作用下,扭环型计数器输出每次仅变1位,故其译码时无竞争-冒险现象
2 寄存器
存储数据!由一组触发器构成;1个触发器存1位二进制,n个触发器存n个二进制数
怎样把数据存入触发器?(输入)
怎样从触发器中读取数据?(输出)
两种输入或输出模式:
(1)并行方式:将n位二进制数一次存入寄存器或从寄存器读出;只需1个时钟脉冲,但需要n根输入、输出数据线
(2)串行方式:将n位二进制数以每次1位、分成n次存入寄存器或从寄存器读出;只需1根输入和输出数据线,但需要n个时钟脉冲完成输入或输出操作
两种模式交叉得四种模式寄存器:并行输入/并行输出、串行输入/串行输出、并行输入/串行输出、串行输入/串行输出
寄存器中所有触发器时钟常来自同一时钟输入,故它们都是同步结构的时序电路
①并行输入/并行输出寄存器
$DI_0$到$DI_{n-1}$:寄存器数据输入端,触发器激励输入
$DO_0$到$DO_{n-1}$:寄存器数据输出端,随时可被其他设备读取
∵所有触发器时钟都连在一起
∴时钟输入是寄存器“写数据”信号
【工作过程】
将要存储的数据输入到数据输入端$DI_0$到$DI_{n-1}$,保持稳定后,再产生一个有效的CP脉冲,数据被寄存在寄存器内,寄存器数据输出端$DO_0$到$DO_{n-1}$就呈现寄存器内部数据
上图寄存器由边沿触发器构成,用于存储二进制。
任何类型触发器转换成D触发器/锁存器,就可以构成寄存器,但对输入数据和时钟脉冲的配合要求不同
(D锁存器,CP=1期间,输出与输入完全相同,应该保持输入数据稳定)
下面是实际集成电路的典型,带有异步清零信号。
上方:公共控制框,用于统一标注所有逻辑元件阵列中的公共控制信号
下方:4个D触发器组成的逻辑元件阵列
②串行输入/串行输出寄存器(移位寄存器)
每个时钟脉冲只接收1位数据,数据同时在寄存器的各个触发器间移动,方向取决于内部输入输出连接方式
串行输出:从寄存器末端触发器中获得
移位寄存器(Shift Register)名称来源:每个时钟脉冲都从一个触发器移到下一个触发器
下图是实际集成电路中用RS锁存器或主从触发器构成的D触发器(注意时钟信号和数据输入的配合关系)
引出触发器Q端,可构成串行输入/并行输出寄存器(输入数据需经n个时钟脉冲才可完全进入寄存器;
数据完全进入寄存器后,可随时在并行输出端读该数据)
上图可作串行输入/串行输出寄存器,可作串行输入/并行输出寄存器
一个8位数据通过8个Cpap脉冲移入寄存器,$Q_0$到$Q_7$可得并行输出
③累加器
④用寄存器构成延时单元
eg1:典型的数字信号处理过程
$y_{(n)}=x_{(n)}+b·y_{(n-1)}$
$y_{(n)}$:当前输出数据
$x_{(n)}$:当前输入数据
$b$:一个常数
$y_{(n-1)}$:上个节拍输出的数据
运算:算术乘加运算
$z^{-1}$:延时一个时钟节拍,其输出为上一节拍输出$y$,即$y_{(n-1)}$
∵寄存器输入输出间总相差一个时钟节拍
∴用寄存器可构成数据延时单元
乘法和延时可互换位置,即$b·y_{(n-1)}=[b·y_{(n)}]_{(n-1)}$
eg2:“001”数字序列检测电路,满足输出1,否则输出0
法(1)一般结构:由移位寄存器构成数据延时,再用比较器进行序列比较
应用于待检测数据序列可变的情况:需要改变时,再合适时刻改变比较器Q输入,实现动态检测
法(2)检测序列固定不变:蜕化为简单的与门电路
eg3:数据流转换
输入输出数据:1位二进制数字序列
正转换:输入出现“1”,输出由原来的“1”变为“0”,原来的“0”变为“1”;
输入为“0”,输出不变
逆转换:输入数据发生变化输出为“1”,否则输出为“0”
设计一个数字逻辑实现转换,同时有输入选择S确定实现哪种转换
解:定义上述两种数据流分别为A和B,正转换为A→B,逆转换为B→A
定义X(n)当前数据,X(n-1)上一节拍数据
化简(如卡诺图)得
正转换$B_{(n)}=A_{(n)}\oplus B_{(n-1)}$
逆转换$A_{(n)}=B_{(n)}\oplus B_{(n-1)}$
利用控制端合并成一个,令S=0是正转换,S=1是逆转换;x数据输入端,y数据输出端
$y_{(n)}=S[x_{(n)} \oplus y_{(n-1)}]+\overline{S}[x_{(n)} \oplus x_{(n-1)}]$
化简:
∵选通信号S和延时信号间逻辑关系“逻辑与”
又∵两信号“逻辑与”相当于信号“算术乘”1或0
∴“逻辑与”和“延时”互换位置不影响运算结果
化简为$y_{(n)}=x_{(n)} \oplus [\overline{S}·y_{(n)}+S·x_{(n)}]_{(n-1)}$