我想知道不同类型的重置以及芯片中的定义。优选冷,暖,系统,应用,上电复位。
高度赞赏每个人的简单例子。
感谢。
答案 0 :(得分:5)
不确定您究竟想要了解的内容。重置可以并且以多种不同的方式和位置使用。一般而言,没有规则说明何时何地可以使用它们。
相对于电流流过电路的速度,电源开启所需的时间相当长一段时间"电压和电流已经稳定在可用且稳定的状态,以便逻辑可以启动。一旦驱动逻辑本身的时钟或振荡器需要时间来稳定。使用某种时钟倍频器的芯片。例如,您的多千兆赫处理器经常使用100Mhz振荡器,并从芯片内部乘以。该电路需要一段时间才能锁定振荡器时钟,然后产生其倍增时钟。因此,您经常会看到全局复位,不需要使芯片启动和运行的逻辑将保持在复位状态,直到事情足够稳定以便它们可以运行。这可以并且被称为上电复位。一些电路用于在电源接通后将芯片的其余部分保持在复位状态一段时间。有很多不同的方法可以做到这一点。
通常,电源复位用于电路板上的所有逻辑,有时每个芯片都有自己独立的上电复位电路,当然有些系统是这两个极端的混合。您可以调用与系统复位时板上大部分逻辑相关的复位。导致整个系统不仅仅是其中的一部分,而是被重置和/或释放。
有时你会看到允许软件选择全局重置的芯片,这也是很多不同的方法。你必须避免明显的鸡和蛋问题。如果软件通过断言复位线具有对开关线的开关控制将导致处理器并因此软件本身进入复位,从而防止其导致复位被释放。因此,任何未被复位重置的硬件都会被赋予一个命令来保持一段时间的复位然后释放它。或者有时系统工作的方式软件可以导致在第一个写入到来之前发送两个写入,一个断言重置另一个写入以释放它(这将是一个软件黑客,用于坏的硬件设计)。人们可能称之为热复位,因为功率已经稳定,振荡器稳定等等,但由于某种原因或其他原因,希望将逻辑置于已知状态。
系统设计可以为软件提供执行系统范围复位的能力,或者只提供系统的一小部分,或者可能只提供运行软件的处理器或其芯片。你可以想象,例如系统启动并运行软件已经编程了外设做某事,或者至少将其从上电复位状态改变,然后处理器只复位,但外设没有。这可能是也可能不是软件所需要的,因为它必须从复位中恢复,并且可能必须弄清楚外围设备是否也被重置或处于未知状态。当软件启动时,软件设计可能无法假设外围设备处于已知的重置后状态。
这可以而且确实被带到各种极端。时钟逻辑消耗功率,如果您的SOC具有您未使用的外设,则可能明显浪费功率时钟逻辑,该系统将不会使用它。因此,有些系统设计有系统的各个部分,甚至每个具有复位和时钟使能的独立外设都可以对软件进行精确控制,并且能够轻松地将部分芯片重置为已知状态,从而可以使用或重新使用更容易使用这些外围设备。通常用于以已知方式启动(嵌入式)系统。
寒冷与温暖相反,冷复位可以是另一种说法"电源循环"。关闭电源(意味着电路/系统变冷)然后打开电源,这样一切都可以从寒冷中恢复并再次稳定下来。热复位不会影响整个系统的系统,但只有部分系统可以使用温暖和冷的术语。热复位解决了一些崩溃,冷复位,理论上解决了更多的问题,因为冷复位在理论上会重置整个系统。但很自然地,例如,如果您有一台扫描仪或打印机或其他具有自己电源的外围设备,不一定会从主计算机的冷复位中重置,您需要关闭所有设备并将其重新启动。有时系统的设计使得当主计算机暖或冷复位时外围设备将热复位。
真的没有什么神奇之处,设计师认为需要重置的任何逻辑块都会有重置,重置的局部或全局是设计的一部分。可以认为芯片与由单个函数调用和库调用组成的软件项目没有什么不同。用于创建现代逻辑的编程语言非常类似于具有软件功能和函数调用功能等的软件项目。主要区别在于逻辑确实并行运行,其次逻辑功能可以有时会有几十到几百个参数,其中软件代码段线性执行,函数往往具有适度的调用次数。尽管可能看起来想到使用全局变量的项目是可取的或不合需要的,但编程语言假定这些全局变量在程序启动时具有某种状态。在C中,当main()发生时,有语言规则告诉你所有全局变量的状态,同样是输入函数时所有本地人的状态。您可以想象在代码中将各个全局变量重置为已知状态的位置,x = 0; Y = 7;后来他们的使用是根据先前的状态x ++确定的; Y- = Z;当你希望将某些东西放回已知状态时,你提供了一种机制来实现这一点,逻辑也就不同了。如果您的代码想要将大量变量放回到已知状态以便任务可以重新开始,那么说一个图形程序完成了一个文件,而没有退出该程序想要释放它为其分配的所有内存当没有打开的图像文件等时,之前的图像,灰显的菜单和按钮没有意义。您可能有一个函数调用导致主要清理发生的其他函数。这与热重置不同。退出程序并再次启动程序与冷重置不同。输入main()时的变量状态和调用函数时的局部变量状态是这些变量的上电复位状态。