一. 元器件介绍

这里用到的元器件有:

  1. DIgital power(VCC)数字电源
  2. DIGITAL-CLOCK 数字时钟
  3. 逻辑分析仪(XLA)
  4. ground 数字地
  5. SPST 单刀单掷开关
  6. 74HC74D_4V D触发器芯片
  7. DCD_HEX 数码管(带译码器四位二进制输入)
  8. PROBE 电位探测灯
  9. PB_DPST 弹簧式触发开关
  10. SPDT 单刀双掷开关
  11. XOR2 双输入异或门
  12. AND2 双输入与门
  13. AND3 三输入与门

二. 原理分析

D触发器模拟同步计数器异步计数器为前提
核心仍为使用D触发器作为进位器

关于D触发器模拟异步计数器的相关内容参考如下:
D触发器模拟异步计数器

D触发器的原理也在上文中有所提及,此处不再赘述

同步计数器原理:

(1)先说同步,同步的实现依赖于不同的计数器在相同输出信号的时钟源下同时变化
严格来说,是接在同一时钟源上(考虑到接线等特殊原因需要使用多个时钟源时需要保证信号输出完全相同——一般来说这是不可能的)
即如下图:

D触发器接入同一始终源时钟
D触发器接入同一时钟源,沿时钟上升沿同时输出信号

(2)同步计数器原理:

要将D触发器作为进位器且不影响同步信号
只能在D输入输出信号之间做手脚了

先取一个二位同步计数器来看看我们要实现的输入输出真值表关系:

二位同步计数器子模型

二位同步计数器真值表
D1A(INPUT1)D2A(INPUT)Q1-D1A(OUTPUT)2Q2-D2A(OUTPUT)digit(decimal)3
00000
10101
01012
11113

以第一列为例
可以看到D1触发器输入输出值一直在翻转,即为输入值取输出值的非值,输出值再取输入值的非值,如此循环进位

是不是非常熟悉
即将 Q ‾ \overline{\mathsf{Q}} Q输出接入D1输入
如图黑线

D1进位器

D1触发器的进位实现了
那么对D2触发器的进位呢?
对真值表作分析得到三种或更多进位方式
以第三四列为例

  1. 可以看到:
    当两个输出值相同时,下一时刻(这里指下一个时钟触发沿),D2输出0;
    当两个输出值不同时,下一时刻(这里指下一个时钟触发沿),D2输出1;

    以此提供了异或门实现进位的思路
  1. 可以看到:
    当Q1、Q2输出值分别对应为1、0时
    下一时刻(这里指下一个时钟触发沿),信号翻转
    Q1、Q2输出值分别对应为0、1,此时一次进位
    当Q1、Q2输出值分别对应为1、1时
    下一时刻(这里指下一个时钟触发沿),信号翻转
    Q1、Q2输出值分别对应为0、0,此时一次进位

    以此提供了与非门实现进位的思路
  1. 可以看到:
    当Q1输出值为1时,下一时刻Q2输出值总是发生翻转
    以此提供了与非门的另一种实现进位的思路

以芯片中最常见(1. )使用异或门实现D触发器的进位
将Q1、Q2输出值作为Q2输入值判断依据
如下图:
接异或门
实现二位同步计数器的进位部分


那如果扩展到三位同步计数器呢?
我们观察下表:

三位同步计数器真值表
D1A(INPUT1)D2A(INPUT)D3A(INPUT)Q1-D1A(OUTPUT)2Q2-D2A(OUTPUT)Q3-D3A(OUTPUT)digit(decimal)3
0000000
1001001
0100102
1101103
0010014
1011015
0110116
1111117

上面的分析过程仍然成立
只不过扩展到了三位D触发器
给出其中一种进位实现方法:

  1. 可以看到当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)2Q2-D2A(OUTPUT)Q3-D3A(OUTPUT)Q4-D4A(OUTPUT)digit(decimal)3
000000000
100010001
010001002
110011003
001000104
101010105
011001106
111011107
000100018
100110019
0101010110
1101110111
0011001112
1011101113
0111011114
1111111115

密密麻麻的0和1
同样的依据进位条件

  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开始输出信号)


希望能够帮到迷途之中的你,知识有限,如有学术错误请及时指正,感谢大家的阅读

(^^)/▽ ▽\(^^)

  1. D1A(INPUT)表示D1触发器D输入值;D2A(INPUT)表示D2触发器D输入值 ↩︎ ↩︎ ↩︎

  2. Q1-D1A(OUTPUT)表示D1触发器Q1输出值;Q2-D2A(OUTPUT)表示D2触发器Q2输出值 ↩︎ ↩︎ ↩︎

  3. digit(decimal)表示译码之后表示的十进制数值 ↩︎ ↩︎ ↩︎

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐