芯片中不同类型的复位(SoC)

Uch*_*chi 3 embedded fpga reset

我想知道不同类型的重置和芯片中的定义.优选冷,暖,系统,应用,上电复位.

还非常感谢每个人的简单示例.

谢谢.

old*_*mer 5

不确定你到底想要了解什么.重置可以并且以多种不同的方式和位置使用.一般而言,没有规则说明何时何地可以使用它们.

相对于电流流过电路的速度,从电源"接通"到电压和电流稳定在可用和稳定状态的时间需要相当长的时间,以便逻辑可以启动.一旦驱动逻辑本身的时钟或振荡器需要时间来稳定.使用某种时钟倍频器的芯片.例如,您的多千兆赫处理器经常使用100Mhz振荡器,并从芯片内部乘以.该电路需要一段时间才能锁定振荡器时钟,然后产生其倍增时钟.因此,您经常会看到全局复位,不需要使芯片启动和运行的逻辑将保持在复位状态,直到事情足够稳定以便它们可以运行.这可以并且被称为上电复位.一些电路用于在电源接通后将芯片的其余部分保持在复位状态一段时间.有很多不同的方法可以做到这一点.

通常,您的上电复位用于电路板上的所有逻辑,有时每个芯片都有自己独立的上电复位电路,当然有些系统是这两个极端的混合.您可以调用与系统复位时板上大部分逻辑相关的复位.导致整个系统不仅仅是其中的一部分,而是被重置和/或释放.

有时您会看到允许软件选通全局重置的芯片,这也是许多不同的方法.你必须避免明显的鸡和蛋问题.如果软件通过断言复位线具有对开关线的开关控制将导致处理器并因此软件本身进入复位,从而防止其导致复位被释放.因此,任何未被复位重置的硬件都会被赋予一个命令来保持一段时间的复位然后释放它.或者有时系统工作的方式软件会导致在第一个写入到来之前发送两个写入,一个断言重置另一个写入以释放它(这将是一个软件黑客,用于坏的硬件设计).人们可能会称之为温暖的重置,因为电力已经稳定,振荡器已经稳定等等,

系统设计可以为软件提供执行系统范围重置的能力,或者仅为系统的一小部分或者可能仅提供运行软件的处理器或其芯片的能力.你可以想象,例如系统启动并运行软件已经编程了外设做某事,或者至少将其从上电复位状态改变,然后处理器只复位,但外设没有.这可能是也可能不是软件所需要的,因为它必须从复位中恢复,并且可能必须弄清楚外围设备是否也被重置或处于未知状态.当软件启动时,软件设计可能无法假设外围设备处于已知的重置后状态.

这可以而且确实被带到各种极端.时钟逻辑消耗功率,如果您的SOC具有您未使用的外设,则可能明显浪费功率时钟逻辑,该系统将不会使用它.因此,有些系统设计有系统的各个部分,甚至每个具有复位和时钟使能的独立外设都可以对软件进行精确控制,并且能够轻松地将部分芯片重置为已知状态,从而可以使用或重新使用更容易使用这些外围设备.通常用于以已知方式启动(嵌入式)系统.

寒冷与温暖相反,冷重置可以是另一种说"动力循环"的方式.关闭电源(意味着电路/系统变冷)然后打开电源,这样一切都可以从寒冷中恢复并再次稳定下来.热复位不会影响整个系统的系统,但只有部分系统可以使用温暖和冷的术语.热复位解决了一些崩溃,冷复位,理论上解决了更多的问题,因为冷复位在理论上会重置整个系统.但很自然地,例如,如果您有扫描仪或打印机或其他具有自己电源的外围设备,不一定会从主计算机的冷复位中重置,您需要关闭所有设备并重新启动它.

真的没有什么神奇之处,设计师认为需要重置的任何逻辑块都会有重置,重置的局部或全局是设计的一部分.可以认为芯片与由单个函数调用和库调用组成的软件项目没有什么不同.用于创建现代逻辑的编程语言非常类似于具有软件功能和函数调用函数等的软件项目.主要区别在于逻辑确实并行运行,其次逻辑功能有时可能有几十到几百个参数,其中软件代码段线性执行,函数往往具有适度的调用次数.尽管可能看起来像是一个使用全局变量的项目,但是可取或不合需要,编程语言假定这些全局变量在程序启动时具有某种状态.在C中,当main()发生时,有语言规则告诉你所有全局变量的状态,同样是输入函数时所有本地人的状态.您可以想象在代码中将各个全局变量重置为已知状态的位置,x = 0; Y = 7; 后来他们的使用是根据先前的状态x ++确定的; Y- = Z; 当你希望将某些东西放回已知状态时,你提供了一种机制来实现这一点,逻辑也就不同了.如果您的代码想要将大量变量放回到已知状态以便任务可以重新开始,那么说一个图形程序完成一个文件,而不退出该程序想要释放它为其分配的所有内存先前的图像,当没有打开的图像文件等时,灰色的菜单和按钮没有意义.您可能有一个函数调用导致主要清理发生的其他函数.这与热重置不同.退出程序并再次启动程序与冷重置不同.输入main()时的变量状态和调用函数时的局部变量状态是这些变量的上电复位状态.