复位子系统包括硬件复位、看门狗定时器复位、JTAG控制器复位和软件复位。Zynq-7000 SoC内的每个模块和系统都包含复位子系统产生的一个复位。硬件复位由上电复位信号PS_POR_B和系统复位信号PS_SRST_B驱动。
在PS内,提供了3个看门狗定时器,可以用来产生复位信号。JTAG控制器产生的复位信号只能复位PS的调试部分和实现一个系统级的复位。软件能够独立产生每个模块的复位信号或实现一个系统级的复位。
在Zynq-7000 SoC内,很多不同的源都可以产生复位信号,并且到达不同的目的方。
复位子系统的结构如图3.12所示。
复位子系统的主要特点如下。
(1)包含来自硬件、看门狗定时器、JTAG控制器和软件的复位。
(2)驱动每个模块和系统的复位。
(3)是设备安全系统的一个集成部分。
(4)执行三级序列,即上电、存储器清除和系统使能。
思考与练习3.2:请根据图3.12,分析Zynq-7000 SoC的复位子系统的结构。
PS内有很多不同类型的复位,从上电复位(用于对整个系统进行复位)到外设复位(在软件控制下复位某个子系统)。PS内的主要复位信号之间的关系如图3.13所示,复位信号流从顶到下。例如,上电复位用于复位PS内的所有逻辑,但是系统复位只能复位图3.13中给出的逻辑。
思考与练习3.3:请根据图3.13,分析Zynq-7000 SoC的层次。
图3.12 复位子系统的结构
图3.13 PS内的主要复位信号之间的关系
完整的上电复位流程如图3.14所示。上电复位后,由外部系统和PS逻辑控制的前两步才开始响应。当PS可以工作时,在上电复位后可以产生任何类型的复位,之后将这些复位插入流程图中的相应位置。
图3.14 完整的上电复位流程
时钟源能异步地确认或使上电复位无效。上电复位后,Zynq-7000 SoC有条件地允许时钟源干净地传播到时钟模块输入逻辑,如果使能,则将其连接到PLL时钟电路。
BOOT_MODE引脚用于使能或旁路所有PLL。
eFUSE控制器脱离复位,自动地将一些数据应用到PLL中,这样可以改善性能,并且为PS内的一些RAM提供冗余信息。该行为对用户来说是不可见的,用户不能影响该行为。该行为要求在50~100μs内完成。
如果使能PLL,则延迟上电复位信号,直到PLL锁定。设置PLL时钟将花费60μs的时间。如果旁路PLL,则不延迟上电复位信号。
在开始执行BootROM前,通过将0写入所有地址来清除内部RAM。
思考与练习3.4:请根据图3.14,分析Zynq-7000 SoC的启动引导过程。
各种复位的结果如表3.3所示。
表3.3 各种复位的结果
续表