为什么微控制器需要时钟

电器工程 微控制器 微芯片 微处理器
2022-01-27 10:44:30

为什么需要在设定的时间间隔(即使用时钟)处理指令?它们不能按顺序执行吗 - 在前一条指令完成后立即执行?

对微控制器中时钟的必要性进行类比将证明特别有用。

4个回答

一个或两个说明性示例在这里可能会有所帮助。看看下面的假设电路:

示意图

模拟此电路- 使用CircuitLab创建的原理图

假设开始时 A 和 B 都是高电平 (1)。因此 AND 的输出为 1,并且由于 XOR 的两个输入均为 1,因此输出为 0。

逻辑元素不会立即改变它们的状态——在处理输入变化时会有一个很小但很重要的传播延迟。假设 B 变低 (0)。XOR 立即在其第二个输入上看到新状态,但第一个输入仍然看到来自 AND 门的“陈旧”1。结果,输出短暂变高 - 但直到信号通过与门传播,使 XOR 的两个输入都变低,并导致输出再次变低。

毛刺不是电路操作的理想部分,但是由于逻辑数量,甚至只是电线的长度,只要通过电路不同部分的传播速度存在差异,就会发生类似的毛刺.

一种非常简单的处理方法是在组合逻辑的输出上放置一个边沿触发触发器,如下所示:

示意图

模拟这个电路

现在,任何发生的毛刺都被触发器从电路的其余部分隐藏起来,它只在时钟从 0 变为 1 时更新其状态。只要时钟上升沿之间的间隔足够长,信号可以传播所有通过组合逻辑链,结果将是可靠的确定性和无故障的。

我觉得很多这些答案并没有完全触及核心问题。微控制器具有时钟仅仅是因为它执行(并由其驱动)时序逻辑

在数字电路理论中,时序逻辑是一种逻辑电路,其输出不仅取决于其输入信号的当前值,还取决于过去输入的顺序,即输入历史。这与组合逻辑形成对比,组合逻辑的输出仅是当前输入的函数。也就是说,顺序逻辑有状态(记忆),而组合逻辑没有。或者,换句话说,时序逻辑是带有记忆的组合逻辑。

同样:

同步逻辑的主要优点是其简单性。对数据执行操作的逻辑门需要有限的时间来响应其输入的变化。这称为传播延迟。时钟脉冲之间的间隔必须足够长,以便所有逻辑门都有时间响应变化,并且在下一个时钟脉冲出现之前,它们的输出“稳定”到稳定的逻辑值。只要满足此条件(忽略某些其他细节),就可以保证电路稳定可靠。这决定了同步电路的最大运行速度。

简短的回答:在投入数百万(或更多)美元进行设计之前,管理者想要一个简单、可测试的功能证明。当前的工具,只是不给异步设计那些答案。

微型计算机和微控制器通常使用时钟方案来确保时序控制。所有工艺角都必须在所有电压、温度、工艺等对信号传播速度的影响下保持时序。当前的逻辑门不会立即发生变化:每个门的开关取决于它提供的电压、它获得的驱动、它驱动的负载以及用于制造它的设备的大小,(当然还有工艺节点(设备大小)它是由制造的,以及该过程实际执行的速度有多快——这通过了晶圆厂)。为了实现“即时”切换,您必须使用量子逻辑,并且假设量子设备可以立即切换;(我不知道)。

时钟逻辑证明整个处理器的时序在预期的电压、温度和处理变量上工作。有很多软件工具可以帮助测量这个时序,网络过程被称为“时序收敛”。时钟可以(并且,根据我的经验,确实)占用微处理器中使用的功率的 1/3 到 1/2 之间的某个地方。

那么,为什么不采用异步设计呢?支持这种设计风格的时序收敛工具很少(如果有的话)。很少有(如果有的话)自动化布局和布线工具可以处理和管理大型异步设计。如果不出意外,经理不会批准任何没有直接的、计算机生成的功能证明的东西。

异步设计需要“大量”同步信号,这需要“更多晶体管”的评论忽略了路由和同步全局时钟的成本,以及时钟系统所需的所有触发器的成本。异步设计比时钟设计更小、更快。(一个简单地采用最的信号路径,并使用它将“就绪”信号反馈给前面的逻辑)。

异步逻辑更快,因为它永远不必等待必须为其他地方的另一个块扩展的时钟。在寄存器到逻辑到寄存器功能中尤其如此。异步逻辑没有多个“设置”和“保持”问题,因为只有结束接收器结构(寄存器)有这些问题,而不是一组流水线逻辑,其中散布着触发器以间隔逻辑传播延迟到时钟边界。

可以做到吗?当然,即使是十亿晶体管设计。是不是更难了?是的,但这只是因为证明它可以在整个芯片(甚至系统)上工作,涉及更多。对于任何一个块或子系统来说,在纸上获取时间是相当直接的。在自动化布局和布线系统中控制时序要困难得多,因为工具没有设置为处理更大的潜在时序约束集。

微控制器还具有潜在的大量其他模块,这些模块与(相对)较慢的外部信号接口,增加了微处理器的所有复杂性。这使得时间安排更加复杂,但并不多。

实现“先到”“锁定”信号机制是电路设计问题,并且有已知的处理方法。竞争条件是 1) 的标志。糟糕的设计实践;或 2)。外部信号进入处理器。时钟实际上引入了与“设置”和“保持”违规相关的信号与时钟竞争条件。

我个人不明白异步设计如何陷入停滞或任何其他竞争状态。这很可能是我的限制,但除非它发生在数据进入处理器时,否则在设计良好的逻辑系统中永远不可能,即使那样,由于它可能在信号输入时发生,你设计来处理它。

(我希望这有帮助)。

说了这么多,如果你有钱...

微控制器需要使用时钟,因为它们需要能够响应随时可能发生的事件,包括几乎与其他外部事件或控制器自身生成的事件同时发生,并且通常会有多个电路需要知道是否一个事件 X 先于另一个事件 Y。是否所有此类电路都决定 X 先于 Y,或者所有此类电路都决定 X 没有先于 Y,这可能无关紧要,但如果任何电路决定 X 先于 Y,这通常很关键Y,那么所有人都必须这样做。不幸的是,很难确保电路在有限的时间内就 X 是否先于 Y 达成有保证的共识,甚至很难就它们是否已经达成共识达成共识。同步逻辑可以极大地帮助解决这个问题。

向电路添加时钟可以保证子系统不会遇到任何竞争条件,除非系统的输入在相对于时钟的非常小的窗口内发生变化,并且还可以保证一个设备的输出是否被馈送到另一个设备,第一个设备的输出在第二个设备的关键窗口中不会改变,除非第一个设备的输入在更小的关键窗口内发生变化。在第一个设备之前添加另一个设备将确保第一个设备的输入不会在那个小窗口中改变,除非新设备的输入在一个非常小的窗口内发生变化。从实际的角度来看,除非有人故意试图导致共识失败,

设计“尽可能快”运行的完全异步系统当然是可能的,但除非系统非常简单,否则很难避免设计被竞争条件绊倒。虽然有一些方法可以在不需要时钟的情况下解决竞争条件,但与没有时钟的情况相比,使用时钟通常可以更快、更容易地解决竞争条件。尽管异步逻辑通常能够比时钟逻辑更快地解决竞争条件,但它无法做到这一点的情况会造成重大问题,特别是考虑到系统的某些部分难以就它们是否已达成共识达成共识. 一个每节可以持续运行一百万条指令的系统通常比一个有时每秒运行四百万条指令的系统更有用,但由于竞争条件,一次可能会停顿几毫秒(或更长时间)。