zhengrenzhe's blog   About

计数器

在上一篇中讲到了随机访问存储器(RAM),使用 RAM 的过程中,必须设置目标操作单元的地址,也就是说你要读或写一个单元,必须知道这个单元所在的地址。而地址是由多位二进制数组成的,那么该如何方便的对地址的输入进行管理呢?答案就是使用计数器。

时钟

在构造一个计数器之前让我们先回忆一下振荡器:

振荡器是一个具有周期性电平输出元件,每个振荡器都有其固定频率,假设上图振荡器的频率是100Hz,那他完成一个周期性的电平输出就是0.01s,通常它的输出信号用来作为「时钟信号」,因为它的信号周期都是固定的,就好像钟表里的秒针一样。

## 分频器

如果把振荡器的输出与边沿触发的 D 型触发器的时钟输入进行连接,同时把Q连接到触发器的 D 输入端:

当电路启动时,时钟输入为0,Q 为0,Q 为1,则 D 为1。

当时钟从0跳变至1瞬间,Clk 为1,因为D 此时为1,所以 Q 为1,Q 为0。在 Clk 变为1后,由于Q连接到了 D,所以此时 D 又变成了0。

当时钟从1变至0时,Clk 为0,Q 仍为1,Q仍为0,D 为0。

当时钟从0又变为1的瞬间,Clk 为1,D 为0,Q 为0,Q为1。再 Clk 变为1后,D 为1,Q 为0,Q为1。

现在时钟的一个周期就走完了,来看一下在这个周期内的触发器输出 Q:

| 输入 | 输入 | 输出 | 输出 | |:————-:|:————-:|:—–:| | D | Clk | Q | Q | | 1 | 0 | 0 | 1 | | 1 | ↑ | 1 | 0 | | 0 | 1 | 1 | 0 | | 0 | 0 | 1 | 0 | | 0 | ↑ | 0 | 1 | | 1 | 1 | 0 | 1 |

从上表可以看出,每当 Clk 从0跳变至1时,Q 就发生变化,Clk 的一个周期,相当于 Q 或者 Q 的半个周期:

从图中可以看出,Q 的频率相对于 Clk 的频率是减半的,假设 Clk 的频率是100Hz,那 Q 的频率就是50Hz,这种电路就称为分频器。

## 计数器

分频器的输出可以再连接一个分频器来进行再一次分频,如果将三个分频器连接:

再看一下他们的 Q 输出:

因为这三个分频器的输出依次连接下一个的输入,所以下一个的输出频率是上一个的一半。如果把这张图顺时针旋转90度,你会发现这些输出之间的规律:

这些输出的组合,依次构成了4位连续的二进制数,而且随着时钟的不断输入,整体输出范围在0000-1111之间不断循环,这就构成了一个以时钟信号驱动的「8位计数器」,我们可以使用下面的结构表示它:

← 随机访问存储器  机器语言与汇编语言是何如工作的 →