跳转到内容

数字电路/寄存器和计数器

来自维基教科书,开放的书籍,开放的世界

数字电路是一种电路,其中信号必须处于两个离散电平之一。每个电平被解释为两种不同状态之一(例如,开/关、0/1、真/假)。数字电路使用晶体管来创建逻辑门,以执行布尔逻辑。

寄存器

[编辑 | 编辑源代码]

寄存器是一组触发器,其中每个触发器能够存储一位信息。一个n位寄存器是一组n个触发器。寄存器的基本功能是在数字系统中保存信息,并使其可用于逻辑元素进行计算过程。寄存器由有限数量的触发器组成。由于每个触发器能够存储“0”或“1”,因此可以存储在寄存器中的 0-1 组合数量是有限的。这些组合中的每一个都被称为寄存器的状态内容。使用触发器,我们可以按位存储数据,但通常数据不会以单个位出现。相反,通常会存储 n 位的数据字,典型的字长为 4、8、16、32 或 64 位。因此,多个触发器组合在一起形成寄存器以存储整个数据字。寄存器是同步电路,因此所有触发器都由一个公共时钟线控制。由于寄存器经常用于收集串行数据,因此它们也被称为累加器。存在几种类型的寄存器,例如:

移位寄存器

[编辑 | 编辑源代码]

一个以串行形式输入和/或输出数据的寄存器被称为移位寄存器。信息通常以位形式出现,即每个时钟脉冲一位。移位寄存器用于存储此类数据。移位寄存器有一个串行输入。每个时钟脉冲,一个位从串行输入加载到寄存器的第一个触发器,而所有实际触发器内容都移到下一个触发器,丢弃最后一个位。移位寄存器可能具有串行输出,以便可以进一步处理从寄存器移出的最后一个位。因此,可以通过将每个串行输出连接到另一个移位寄存器的串行输入来构建移位寄存器的链,从而有效地创建一个大的移位寄存器。还可以通过将串行输出连接到同一个寄存器的串行输入来创建一个循环寄存器(参见下一段)。移位寄存器电路也可能具有额外的并行输入功能,允许操作单个位。如果所有触发器的输出(以及因此寄存器的完整内容)从线 Q1 到 Qn 读取,则寄存器用作串行输入 - 并行输出 (SIPO)。此类 SIPO 寄存器的典型用途是收集以位形式传送的并且以 n 位数据字形式需要的数据(例如,要转换来自计算机串行端口的信号:线路一次传送 1 位,计算机使用 8、16 或 32 位数据字)。移位位对于数学运算很重要:如果整个寄存器的输出被解释为二进制数,则移位一位对应于乘以或除以 2(取决于哪个触发器被解释为 MSB)。有 4 种类型的移位寄存器 - 串行输入 - 并行输出 (SIPO) 、串行输入 - 串行输出 (SISO)、并行输入 - 串行输出 (PISO)、并行输入 - 并行输出 (PIPO)。

循环寄存器

[编辑 | 编辑源代码]

有时有必要“循环”使用相同的值。因此,通常会丢弃的位再次被送回到寄存器输入,以接收循环串行寄存器。

并行输入-串行输出

[编辑 | 编辑源代码]

由于需要串行 - 并行转换,因此需要反向操作。它由并行输入 - 串行输出寄存器 (PISO) 完成,该寄存器允许加载数据作为整个数据字并进行串行移位。对于此操作,它需要两条控制线:一条用于触发移位,另一条用于控制何时将新的数据字加载到寄存器。它通过使用清除功能清除所有触发器输出的状态来准备,即每个触发器都等于 0,然后通过获取给定输入的单个位进行移位,该输入将当前位移到下一个触发器。

桶形移位器

[编辑 | 编辑源代码]

桶形移位器是一种数字电路,它可以在一个时钟周期内将数据字移位指定的位数。它可以实现为一系列多路复用器 (mux),在这种实现中,一个 mux 的输出连接到下一个 mux 的输入,连接方式取决于移位距离。例如,取一个 4 位桶形移位器,输入为 A、B、C 和 D。移位器可以循环位 ABCD 的顺序,如 DABC、CDAB 或 BCDA;在这种情况下,没有位丢失。也就是说,它可以将所有输出最多向右移三位(从而构成 A、B、C 和 D 的任何循环组合)。桶形移位器有各种应用,包括作为微处理器(与 ALU 结合)的有用组件。桶形移位器的常见用途是在浮点运算的硬件实现中。对于浮点加或减运算,必须对两个数字的尾数进行对齐,这需要将较小的数字向右移位,增加其指数,直到它与较大数字的指数匹配。这是通过减去指数,并使用桶形移位器在一个周期内将较小的数字向右移位差值来完成的。如果使用简单的移位器,则移位 n 位位置将需要 n 个时钟周期。

级联移位器

[编辑 | 编辑源代码]

级联移位器是使用译码器切换每个串行输入并行输出寄存器内容的电路。

计数器

[编辑 | 编辑源代码]

计数器是一种顺序电路 - 计数。这意味着它按预定义的顺序进行状态转换,其中电路的状态由其所有触发器的状态决定。由于电路的每个状态都可以是给定数字,因此可以说计数器产生一系列数字。一种常用的方法是将电路的状态解释为双数,因此,如果触发器 A、B 和 C 都为 0,则计数器的状态为 0。如果 A 为 1,B 为 0,C 为 1,则计数器的状态为 101 = 5,依此类推。最基本的计数器将简单地在每个时钟脉冲下递增 1,因此在状态 100 之后它将变为 101;下一个脉冲将使其切换到 110 等。可以设计具有任何所需计数顺序的计数器。即使异步顺序电路不是本课程的主题,异步计数器在这里例外地给出,以略微印象。

基本上计数器有两种类型

[编辑 | 编辑源代码]
  1. 异步计数器或波纹计数器
  2. 同步计数器

异步计数器

对于这些计数器,外部时钟信号被施加到一个触发器,然后前一个触发器的输出连接到下一个触发器的时钟。时钟被施加到第一个触发器。

例如,考虑一个基于 T 触发器 (FF) 的脉冲计数器。时钟信号被施加到串联中的第一个 FF,并且 T 输入被设置为 1。然后,第一个 FF 的输出 Q 被连接为第二个 FF 的时钟输入。这有效地将时钟信号输入到第二个 FF 减半,并使其在前面的 FF 变为 0(在 1 之后)时切换。这被称为脉冲动作,即切换脉冲在所有后续 FF 上传播,有效地产生了我们所知的计数操作。

一个很好的例子可以在这里找到,它展示了这种功能。[1]

同步计数器

[编辑 | 编辑源代码]

在同步计数器中,所有触发器同时接收外部时钟脉冲。环形计数器和约翰逊计数器是同步计数器的例子。在同步电路中,应用于所有触发器的外部时钟与电路同步。


这部分 **数字电路** 维基教科书是一个 存根。您可以通过扩展此部分来帮助我们。如果您添加了内容,请将自己列为 贡献者

华夏公益教科书