Multisim实现D触发器模拟同步计数器
D触发器模拟同步计数器一. 元器件介绍二. 原理分析三. 仿真实验1. 单步触发计数器2. 沿时钟触发计数器一. 元器件介绍这里用到的元器件有:DIgital power(VCC)数字电源DIGITAL-CLOCK 数字时钟逻辑分析仪(XLA)ground 数字地SPST 单刀单掷开关74HC74D_4V D触发器芯片DCD_HEX 数码管(带译码器四位二进制输入)PROBE 电位探测灯PB_DP
D触发器模拟同步计数器
一. 元器件介绍
这里用到的元器件有:
DIgital power
(VCC)数字电源DIGITAL-CLOCK
数字时钟逻辑分析仪
(XLA)ground
数字地SPST
单刀单掷开关74HC74D_4V
D触发器芯片DCD_HEX
数码管(带译码器四位二进制输入)PROBE
电位探测灯PB_DPST
弹簧式触发开关SPDT
单刀双掷开关XOR2
双输入异或门AND2
双输入与门AND3
三输入与门
二. 原理分析
D触发器模拟同步计数器
以异步计数器
为前提
核心仍为使用D触发器作为进位器
关于D触发器模拟异步计数器的相关内容参考如下:
D触发器模拟异步计数器
D触发器的原理也在上文中有所提及,此处不再赘述
同步计数器原理:
(1)先说同步,同步的实现依赖于不同的计数器在相同输出信号的时钟源下同时变化
严格来说,是接在同一时钟源上(考虑到接线等特殊原因需要使用多个时钟源时需要保证信号输出完全相同——一般来说这是不可能的)
即如下图:
D触发器接入同一时钟源,沿时钟上升沿同时输出信号
(2)同步计数器原理:
要将D触发器作为进位器
且不影响同步信号
只能在D输入输出信号之间做手脚了
先取一个二位同步计数器
来看看我们要实现的输入输出真值表关系:
D1A(INPUT1) | D2A(INPUT) | Q1-D1A(OUTPUT)2 | Q2-D2A(OUTPUT) | digit(decimal)3 |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
1 | 0 | 1 | 0 | 1 |
0 | 1 | 0 | 1 | 2 |
1 | 1 | 1 | 1 | 3 |
以第一列为例
可以看到D1触发器输入输出值一直在翻转,即为输入值取输出值的非值,输出值再取输入值的非值,如此循环进位
是不是非常熟悉
即将
Q
‾
\overline{\mathsf{Q}}
Q输出接入D1输入
如图黑线
D1触发器的进位实现了
那么对D2触发器的进位呢?
对真值表作分析得到三种或更多进位方式
以第三四列为例
- 可以看到:
当两个输出值相同时,下一时刻(这里指下一个时钟触发沿),D2输出0;
当两个输出值不同时,下一时刻(这里指下一个时钟触发沿),D2输出1;
以此提供了异或门实现进位的思路
- 可以看到:
当Q1、Q2输出值分别对应为1、0时
下一时刻(这里指下一个时钟触发沿),信号翻转
Q1、Q2输出值分别对应为0、1,此时一次进位
当Q1、Q2输出值分别对应为1、1时
下一时刻(这里指下一个时钟触发沿),信号翻转
Q1、Q2输出值分别对应为0、0,此时一次进位
以此提供了与非门实现进位的思路
- 可以看到:
当Q1输出值为1时,下一时刻Q2输出值总是发生翻转
以此提供了与非门的另一种实现进位的思路
以芯片中最常见(1. )使用异或门
实现D触发器的进位
将Q1、Q2输出值作为Q2输入值判断依据
如下图:
实现二位同步计数器
的进位部分
那如果扩展到三位同步计数器
呢?
我们观察下表:
D1A(INPUT1) | D2A(INPUT) | D3A(INPUT) | Q1-D1A(OUTPUT)2 | Q2-D2A(OUTPUT) | Q3-D3A(OUTPUT) | digit(decimal)3 |
---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 1 | 0 | 0 | 1 |
0 | 1 | 0 | 0 | 1 | 0 | 2 |
1 | 1 | 0 | 1 | 1 | 0 | 3 |
0 | 0 | 1 | 0 | 0 | 1 | 4 |
1 | 0 | 1 | 1 | 0 | 1 | 5 |
0 | 1 | 1 | 0 | 1 | 1 | 6 |
1 | 1 | 1 | 1 | 1 | 1 | 7 |
上面的分析过程仍然成立
只不过扩展到了三位D触发器
给出其中一种进位实现方法:
- 可以看到当D1、D2输入值都为1时,若此时D1&D2值与D3输入值相同,则下一时刻D3输出0;
可以看到当D1、D2输入值都为1时,若此时D1&D2值与D3输入值不同,则下一时刻D3输出1;
对于D1、D2、D3输出值都为0的情况下仍然成立
提供了与门+异或门的进位实现方式
给出如下图接线:
同理可以实现四位同步计数器
同样分析以下真值表
D1A(INPUT1) | D2A(INPUT) | D3A(INPUT) | D4A(INPUT) | Q1-D1A(OUTPUT)2 | Q2-D2A(OUTPUT) | Q3-D3A(OUTPUT) | Q4-D4A(OUTPUT) | digit(decimal)3 |
---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 |
0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 2 |
1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 3 |
0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 4 |
1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 5 |
0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 6 |
1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 7 |
0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 8 |
1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 9 |
0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 10 |
1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 11 |
0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 12 |
1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 13 |
0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 14 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 15 |
密密麻麻的0和1
同样的依据进位条件
- 可以看到当D1、D2、D3输入值都为1时,若此时D1&D2&D3值与D4输入值相同,则下一时刻D4输出0;
可以看到当D1、D2、D3输入值都为1时,若此时D1&D2&D3值与D4输入值不同,则下一时刻D4输出1;
对于D1、D2、D3、D4输出值都为0的情况下仍然成立
提供了与门+异或门的进位实现方式
给出如下图接线:
三. 仿真实验
在完全理解了D触发器模拟计数器的原理后
对四个D触发器完全接线:
1. 单步触发计数器
接入数码管显示计数结果(因为输入为四位二进制数输出0~15,当输入二进制数对应十进制数值超过9时,数码管无法显示对应数值)
由LSB至MSB分别接入探测灯
实现过程如下:
2. 沿时钟触发计数器
将弹簧式触发按键
替换成具有固定频率信号的数字时钟
接线后调试:
电位探测灯从最左对应LSB,最右对应MSB
(这里选择10HZ的时钟频率方便观察)
接入逻辑分析仪
:
注意选择合适的时钟信号和接收频率
观察输出信号:
可以看到其实除了第一个D触发器之外的所有触发器在信号输出的时候都是执行沿下降沿触发,满足每一位进位的触发条件。同时也是分频器的一种。
(上图中并非从0000开始输出信号)
希望能够帮到迷途之中的你,知识有限,如有学术错误请及时指正,感谢大家的阅读
(^^)/▽ ▽\(^^)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)