当前位置:首页 > > ZYNQ
		


zynq中每个A9处理器都有自己的私有32位定时器以及32位看门狗定时器(AWDT),2个A9共享一个全局64位定时器(GTC)。系统级上,有一个24位的系统级看门狗定时器(SWDT)和两个16位3重定时器/计数器(TTC)。

系统看门狗定时器(SWDT)用于表示一些灾难性的系统故障,例如PS PLL故障。与AWDT不同,SWDT可以不使用外部设备或PL的时钟,并向外部设备提供复位输出设备或PL上。

特点简介

可用的计时器/计数器的主要功能如下:

  • 内部24位计数器

  • 可选时钟输入,来自:

    • 内部PS总线时钟(CPU_1x)

    • 内部时钟(来自PL)

    • 外部时钟(来自MIO)

  • 超时时,输出以下一项或组合:

    • 系统中断(PS)

    • 系统重置(PS,PL,MIO)

  • 可编程超时时间:

    • 超时范围32,760至68,719,476,736个时钟周期(在100 MHz时为330 µs至687.2s)
  • 超时时可编程的输出信号持续时间:

    • 系统中断脉冲4、8、16或32个时钟周期(CPU_1x时钟)

框图

下图显示了SWDT的框图

系统看门狗定时器框图

从中我们看到

  • SLCR可编程寄存器(WDT_CLK_SEL,MIO控制)选择时钟输入。

  • SWDT可编程寄存器设置CLKSEL和CRV的值。

  • 信号重新启动会使24位计数器重新加载CRV值,然后重新开始计数。

  • 信号停止导致计数器在CPU调试期间停止(行为与AWDT相同)

功能说明

控制逻辑块具有连接到系统互联的APB接口,为了能够写入寄存器,在每次写数据的时候,从APB接收到的密钥字段必须与寄存器的密钥匹配。

零模式寄存器在其内部24位计数器到达时控制SWDT的行为零,接收到零信号后,控制逻辑模块将中断输出信号置为有效。如果同时设置了WDEN和IRQEN,则控制逻辑模块会断言IRQLN时钟周期的中断输出信号,如果设置了WDEN,也会断言复位输出信号大约一个CPU_1x周期。然后,该24位计数器将保持为零,直到变为0时重新启动。

计数器控制寄存器通过在以下位置设置重载值来设置超时时间swdt.CONTROL [CLKSET]和swdt.CONTROL [CRV]来控制预分频器和24位计数器。

重新启动寄存器用于重新启动计数过程,匹配写入该寄存器键使预分频器和24位计数器来重新加载CRV信号中的值。

状态寄存器显示24位计数器是否达到零,无论WDEN位在零模式寄存器,如果24位计数器不为零,则始终递减计数至零,并且 存在选定的时钟源。一旦达到零,就将状态寄存器的WDZ位置1,然后保持设置状态,直到重新启动24位计数器。

预分频器模块对选定的时钟输入进行分频,每次采样CLKSEL信号时钟上升沿。

内部24位计数器递减计数为零,并保持为零,直到重新启动为止,而计数器为零,零输出信号为高。

中断到PS中断控制器

来自SWDT的脉冲长度(四个CPU_1x时钟周期)足以使中断控制器使用上升沿敏感度来捕获中断。

重启

看门狗复位发送到PS复位子系统以引起非POR复位,如下图所示,描述了各种复位的效果。MIO引脚或EMIOWDTRSTO的复位输出为高电平有效。

需要注意的是:要为PS_POR_B和其他电路板复位产生信号脉冲,请将EMIOWDTRSTO信号从SWDT穿过PL路由到可外部锁存的引脚,以产生有效的复位脉冲。或者,使用外部看门狗定时器设备,该设备由PS软件通过GPIO输出引脚进行管理。数据手册中定义了PS_POR_B复位脉冲宽度要求。

SWDT时钟输入选项

以下代码显示了SoC如何选择SWDT的时钟源:

if slcr.WDT_CLK_SEL[0] is 0, use CPU_1X else if slcr.MIO_PIN_14[7:0] is 01100000, use MIO pin 14 else if slcr.MIO_PIN_26[7:0] is 01100000, use MIO pin 26 else if slcr.MIO_PIN_38[7:0] is 01100000, use MIO pin 38 else if slcr.MIO_PIN_50[7:0] is 01100000, use MIO pin 50 else if slcr.MIO_PIN_52[7:0] is 01100000, use MIO pin 52 else use EMIOWDTCLKI

重置SWDT的输出选项

以下代码显示了SoC如何选择SWDT的复位输出引脚:

if slcr.MIO_PIN_15[7:0] is 01100000, use MIO pin 15 else if slcr.MIO_PIN_27[7:0] is 01100000, use MIO pin 27 else if slcr.MIO_PIN_39[7:0] is 01100000, use MIO pin 39 else if slcr.MIO_PIN_51[7:0] is 01100000, use MIO pin 51 else if slcr.MIO_PIN_53[7:0] is 01100000, use MIO pin 53 else use EMIOWDTRSTO
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
关闭