微控制器可以以任意低的时钟频率运行吗?


103

例如,ATTiny13A的数据表列出了0 MHz的最小频率。这是否意味着时钟可以以任意低频运行而没有不良影响?我假设它以较低的时钟速度消耗较低的电流?0 MHz是否意味着您可以完全停止时钟,并且只要仍然通电,它就会无限期地记住其状态?


34
我想补充一点,这是一个很好的问题。我想暗示,大多数高级EE都不会花时间真正地阅读和思考数据表,这对您来说是一个补充,或者是对他们的侮辱。
Kortuk

我不能完全确定内部RC振荡器是否已关闭,除非您明确指示(通过各种节能选项)。不确定用于什么用途,但至少用于EEPROM和ADC。
jippie 2013年

1
@jippie您在说什么内部RC?例如,ATMegaX具有系统时钟的内部RC(通常为8Mhz,带有可选的div 8预分频器),它具有看门狗振荡器。系统时钟是保险丝选择的,使用外部时钟时可能关闭。您所说的其他功能可能会通过省电模式禁用,但我怀疑系统时钟会停止该功能。
Diego C Nascimento

Answers:


73

是。如果数据表显示“完全静态操作”,则可以以任何速度(甚至0 Hz)对其进行时钟控制。“动态”芯片需要具有特定速率的时钟,否则它将丢失其状态。


1
您是否有允许使用此功能的微型示例?
MrEvil

4
当写入闪存时,包含片上闪存的微控制器可以指定最小(和最大)闪存时钟速度。但是,从闪存读取时不适用。
史蒂夫·梅尔尼科夫

8
MrEvil,问题中提到的Atmel AVR ATtiny系列是完全静态的,因为我认为大多数Atmel AVR芯片都是如此。而且我认为大多数Microchip的PIC微控制器都是如此。
todbot

7
实际上,我认为ATTiny13A中的ADC不能在低频下工作,可能是因为采样保持电容器衰减了吗?“默认情况下,逐次逼近电路要求输入时钟频率在50 kHz至200 kHz之间以获得最大分辨率。...ADC模块包含一个预分频器,该分频器可以从高于100 kHz的任何CPU频率生成可接受的ADC时钟频率。”
endolith

8
内含物-我同意,ADC通常无法在低频下工作。据我所知,几乎所有现代微控制器上的所有其他功能在“ 0 Hz”(也称为“无限期暂停”)一直可以正常工作。特别是,许多微控制器具有“低功耗睡眠”模式,该模式会停止所有时钟,直到某些东西(通常是一个人按下按钮)将其唤醒,并从中断处恢复。en.wikipedia.org/wiki/Static_logic_(digital_logic)
davidcary

23

我要发布另一个答案,只是因为您之前没有回答过最后一个问题。

Todbot是完全正确的。它也会以较低的速度消耗较低的功率。这也意味着,例如,如果您从另一个处理器提供时钟,则可以随时停止提供时钟,然后再开始为其提供时钟,只要您不超过最大速度,就可以了。

我的芯片在32768Hz振荡器和1MHz振荡器之间得到了一个数量级的变化。我有一些我不需要速度的应用程序,我只需要另一个小家伙为我做一些基本的数据处理。

希望这可以帮助。


9
我一直想用按钮来运行微控制器的时钟线。让人类成为时钟。:)值得一提的是,这些静态设计的一个非常好的方面是它们的功耗与时钟速度成线性关系:降低时钟速度并使用较少的功率。这真的很方便。
todbot

5
是的,但是我要指出的是,功耗是具有偏移量的线性函数,即使没有时钟,功耗仍然会消耗功率,尤其是驱动任何输出时。我们刚刚得到了新的实习生,我建议我们使用按钮,看看会发生什么。
Kortuk

13
@todbot好主意。:-)但是请确保将按钮反跳。
starblue

4
尝试使用“研磨曲柄”(如Jargon的意思:jargon.net/jargonfile/g/grindcrank.html):-))(是的,很多年前,当我使用Turbo Pascal时,我构建了一个通过代码的步骤在学校:-)
Axeman,2009年

@todbot如果您可以接受一个粗略的抽象,那并不是很难过或困难的事情。人们使用这种小工具来教计算机如何工作的例子有很多。的Myke Predko有一个非常好的书,它甚至还带有多氯联苯(虽然不是对计算机项目):amazon.com/Digital-Electronics-Guidebook-Michael-Predko/dp/...

17

大多数现代微控制器设计都可以在其时钟输入上使用任何模式,只要没有高脉冲低于某个最小长度,没有低脉冲低于某个最小长度,并且没有低-高-低或高-低-高脉冲对低于一定长度。从本质上讲,发生的事情是,在芯片执行了与特定时钟沿相关的所有动作之后,芯片将处于除了等待下一个时钟沿之外无所事事的状态。如果下一个时钟沿没有在十天之内到达(除非芯片有外部看门狗),则芯片将处于相同的状态,就好像在芯片准备就绪时沿已经到达。

请注意,通常,暂停微控制器上的时钟将大大减少电流消耗,但不如使用“睡眠”功能少。大多数微控制器在“运行”模式下的电流消耗可以很好地估算为恒定的静态电流加上每秒每周期的一定电流量(可能更自然地表示为每周期的电荷)。例如,一个芯片的静态电流可能为10uA,再加上0.1mA / MHz的电流(100pC /周期)。以10MHz运行这种芯片将产生1.01mA的电流。以1MHz运行时将产生0.11mA。以100KHz运行会产生0.02mA的电流。以1Hz的功率运行它将产生0.0100001mA的电流。另一方面,该芯片可能提供1uA的睡眠电流。通常,进入睡眠模式将完全关闭芯片在休眠状态下不会做任何有用的工作,从而避免了此类区域可能产生的任何泄漏电流。在某些情况下,这还将使寄存器文件等区域的电压降低到一个寄存器文件可以容纳其内容但不能很快访问它们的水平(因为根本不会访问它们,因此访问速度并不重要)。 。

一些较旧的微处理器,微控制器和其他设备的最大时钟高和/或时钟低时间。这样的处理器利用动态逻辑来节省电路。作为动态逻辑的示例,考虑一个移位寄存器:一个典型的静态寄存器位需要一个两个晶体管电路来保存该值,而一个动态寄存器位则将值保存在读出晶体管的栅极上。两相时钟动态移位寄存器可以在NMOS中实现,每个位使用四个NFET和两个电阻。静态移位寄存器每位需要八个NFET和四个电阻。如今,动态逻辑方法已不再那么普遍。早在1970年代,栅极电容就很大,并且没有任何摆脱它的方法。因此,没有特别的理由不利用它。今天,栅极电容通常要低得多,芯片制造商正在积极尝试进一步降低它。要使动态逻辑可靠地工作,通常需要刻意工作以增加栅极电容。在大多数情况下,增加电容所需的额外芯片面积可以有效地用于添加更多的晶体管,从而无需增加电容。


您提到了NMOS和IIRC,动态逻辑的流行与互补MOS(CMOS)之间尚无联系。
jpc 2011年

@jpc:我已经研究了各种NMOS芯片的原理图,其中一些细节非常详尽,其中包括Atari 2600 TIA,这是天才的真实作品,人们在三十年后仍在寻找与之相关的新事物。从设计便利性的角度来看,我认为NMOS与CMOS的一个优点是“击穿”(意外同时激活高侧和低侧驱动器)不是一个因素,尽管我承认为什么会如此CMOS的运行电压不足,输入的交叉点将使高端驱动器和低端驱动器保持关闭状态,而不是同时激活两者。
supercat

@jpc:在NMOS中,如果输入足够“强”,则可以用两个晶体管和两个电阻实现XOR门。即使必须将反相器添加到两个输入,四晶体管四电阻异或门也将比许多其他方法更好。尽管我是在1978年左右使用BJT设计了类似的电路的,但我从未见过所使用的方法(设计概念在MOSFET上可以更好地工作,但我对此一无所知)。
supercat

2
+1-我觉得您在这里提到的真正的瑰宝是较低的时钟速度确实可以节省功耗,但不如专门设计用于优化节能的睡眠模式那么多。我的直觉告诉我,与持续以非常低的频率运行相比,运行快速振荡器并明智地使用睡眠模式将节省更多的电量。
Joel B

@JoelB:这取决于许多因素。在许多处理器上,打开快速时钟与实际使用之间存在延迟。在此期间,将浪费电力。如果必须将其唤醒(例如100x /秒),则连续运行缓慢而不是持续启动和停止会更好。另一方面,如果要启动和停止快速时钟,则最好在不浪费额外能量的情况下将运行时间减至最小。例如...
supercat 2012年

12

是的,您可以完全停止时钟并在以后的时间重新启动而不会造成任何后果。您甚至可以通过按钮替换时钟,然后逐步逐步执行程序(频率:约0.1 Hz)。

功率几乎与频率成线性关系:在10 MHz时,微控制器的功耗将是1 MHz时的10倍。但是,这并不意味着在0 Hz时功耗完全为零。总会有静电耗散,但这非常低,通常为1 uA或更小。

PS:请注意,ADC确实具有最低工作频率。如果频率太低,则在其上测量电压的电容器会放电太多,从而导致测量错误。


按钮?防弹跳怎么样?
彼得·莫滕森

1
需要反跳。
Vovanium

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.