Zynq7000系列FPGA中的定时器详细介绍

每个Cortex-A9处理器都有自己的专用32位定时器和32位看门狗定时器。两个处理器共享一个全局64位定时器。这些定时器总是以CPU频率(CPU_3x2x)的1/2进行计时。
在系统级,有一个24位看门狗定时器和两个16位三重定时器/计数器。
系统看门狗定时器的时钟频率为CPU频率(CPU_1x)的1/4或1/6,也可以通过来自MIO引脚或PL的外部信号进行计时。两个三重定时器/计数器的时钟频率始终为CPU频率的1/4或1/6,用于对来自MIO管脚或PL的信号脉冲宽度进行计数。

系统定时器的关系如图8-1所示。

CPU专用定时器和看门狗定时器

定时器和看门狗块都具有以下功能:

  • 32位计数器,当计数达到零时产生中断
  • 8位预分频器,可更好地控制中断周期
  • 可配置的单次或自动重新装弹模式
  • 可配置计数器起始值

计时

所有专用定时器和看门狗定时器的时钟频率始终为CPU频率的1/2(CPU_3x2x)。

寄存器概述

CPU专用定时器和看门狗定时器的寄存器概述如下表所示。

CPU专用定时器寄存器概述
功能名称概述
CPU专用定时器
重新加载值和当前值计时器负载
定时器计数器
要重新加载到递减器中的值。
递减器的当前值。
控制和中断

定时器控制

定时器中断

启用、自动重新加载、IRQ、预分频器、中断状态
CPU专用看门狗(AWDT 0 and 1)
重新加载值和当前值看门狗负载
看门狗计数器
要重新加载到递减器中的值。
递减器的当前值。
控制和中断看门狗控制
看门狗中断
启用、自动重新加载、IRQ、预分频器、中断状态(此寄存器无法禁用看门狗)
重置状态看门狗重置状态由于看门狗达到0而重置状态。
仅通过POR清除,因此SW可以判断是否重置
是看门狗引起的。
禁用禁用看门狗通过写入两个特定字的序列禁用看门狗。

全局定时器(GT)

全局计时器是一个具有自动递增功能的64位递增计数器。全局定时器被存储器映射在与专用定时器相同的地址空间中。全局计时器仅在安全状态下重置时访问。所有Cortex-A9处理器都可以访问全局计时器。每个Cortex-A9处理器都有一个64位比较器,用于在全局计时器达到比较器值时断言专用中断。

计时

GTC总是以CPU频率(CPU_3x2x)的1/2为时钟。

寄存器概述

GTC的寄存器概述如下表所示。

通用定时器寄存器概述
功能名称概述
通用定时器(GTC)
当前值全局定时器计数器增量器的当前值
控制和中断全局定时器控制
全局中断
启用定时器,启用比较器,IRQ,自动递增,中断状态
比较器比较器值
比较器
增量器
比较器的当前值
比较器的增量值
全局定时器禁用通过写入两个特定字的序列禁用看门狗

系统看门狗定时器(SWDT)

除了两个CPU专用看门狗定时器外,还有一个系统看门狗定时器(SWDT),用于发出额外灾难性系统故障的信号,例如PS PLL故障。与AWDT不同,SWDT可以从外部设备或PL断开时钟,并向外部设备或PL.提供复位输出。

特征

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

  • 内部24位计数器
  • 可选择的时钟输入来自:内部PS总线时钟(CPU_1x)、内部时钟(来自PL)、外部时钟(来自MIO)
  • 超时时,输出一个或多个:系统中断(PS)、系统复位(PS、PL、MIO)
  • 可编程超时周期:超时范围32760到68719476736个时钟周期(100 MHz时为330µs到687.2s)
  • 可编程输出信号超时持续时间:系统中断脉冲4、8、16或32个时钟周期(CPU_1x时钟)

方框图

SWDT的框图如图8-2所示,

与图8-2相关的注释:

  • SLCR可编程寄存器(WDT_CLK_SEL、MIO控制)选择时钟输入。
  • SWDT可编程寄存器设置CLKSEL和CRV的值。
  • 信号重新启动使24位计数器重新加载CRV值,并重新开始计数。
  • 信号停止导致计数器在CPU调试期间停止(与AWDT的行为相同)。

功能说明

控制逻辑块具有连接到系统互连的APB接口。从APB接收的每个写入数据都有一个密钥字段,该字段必须与寄存器的密钥相匹配才能写入寄存器。
当SWDT的内部24位计数器达到零时,零模式寄存器控制SWDT的行为。在接收到零信号时,如果WDEN和IRQEN都被设置,则控制逻辑块断言中断输出信号达IRQLN时钟周期,并且如果WDEN被设置,还断言复位输出信号达大约一个CPU_1x周期。然后,24位计数器保持为零,直到重新启动为止。
计数器控制寄存器通过在swdt中设置重载值来设置超时时间。CONTROL[CLKSET]和swdt。CONTROL[CRV]以控制预分频器和24位计数器。

Restart寄存器用于重新启动计数过程。用匹配的键写入该寄存器会使预分频器和24位计数器重新加载CRV信号中的值。
状态寄存器显示24位计数器是否为零。不管零模式寄存器中的WDEN位如何,如果它不是零并且存在所选时钟源,24位计数器总是保持向下计数到零。一旦达到零,状态寄存器的WDZ位将被设置,并保持设置状态,直到24位计数器重新启动。
预分频器块对所选择的时钟输入进行分频。CLKSEL信号在每个上升时钟沿被采样。
内部24位计数器向下计数到零,并保持在零直到重新启动。当计数器为零时,零输出信号为高电平。

Interrupt to PS中断控制器

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

重置

看门狗重置被发送到PS重置子系统,以引起非POR重置。MIO引脚或EMOWDTRSTO的复位输出为高电平。
提示:要为PS_POR_B和其他板重置生成信号脉冲,请将EMOWDTRSTO信号从SWDT路由到PL并到达可从外部锁存的引脚,以生成有效的重置脉冲。建议在安全模式下使用由PS软件通过GPIO输出引脚管理的外部看门狗定时器设备。

寄存器概述

SWDT的寄存器概述如表8-3所示

系统看门狗定时器寄存器概述
功能名称概述
时钟选择
slcr.WDT_CLK_SEL
在CPU_1x和外部时钟源之间进行选择
(MIO/EMIO)
MIO路由选择
slcr.MIO_PIN_xx
通过MIO多路复用器路由SWDT时钟输入,如果没有MIO路由,则使用EMIO。
重置原因
slcr.REBOOT_STATUS
当SWDT生成系统重置时,[SWDT_RST]位被设置。
零模式
swdt.MODE
启用SWDT,在超时时启用中断和重置输出,设置输出脉冲长度。
重新加载值
swdt.CONTROL
设置预分频器和24位计数器超时时的重新加载值。
重启
swdt.RESTART
使预分频器和24位计数器重新加载并重新启动。
状态
swdt.STATUS
表示看门狗达到零。

编程模型

定时器启用序列
  1. .选择时钟输入源,设置预分频器值(slcr.MIO_MUX_SEL寄存器、TTC时钟控制寄存器)。继续执行此步骤之前,请确保禁用TTC(TTC.Counter_Control_x[DIS]=1)。
  2. .设置间隔值(间隔寄存器)。此步骤是可选的,仅适用于间隔模式。
  3. 设置匹配值(匹配寄存器)。如果要启用匹配,此步骤是可选的。
  4. .使能中断(中断使能寄存器)。如果要启用中断,此步骤是可选的。
  5. 启用/禁用波形输出,启用/禁用匹配,设置计数方向,设置模式,启用计数器(TTC计数器控制寄存器)。此步骤启动计数器。
计数器停止顺序
  1. 读取计数器控制寄存器的值。
  2. 将DIS比特设置为1,同时保留其他比特。
  3. 写回计数器控制寄存器。
计数器重新启动顺序
  1. 读取计数器控制寄存器的值。
  2. 将RST位设置为1,同时保留其他位。
  3. 写回计数器控制寄存器。
事件定时器启用序列
  1. 选择外部脉冲源(slcr.MIO_MUX_SEL寄存器)。所选择的外部脉冲的宽度是在CPU_1x周期中测量的。
  2. 设置溢出处理,选择外部脉冲电平,启用事件定时器(事件控制定时器寄存器)。此步骤开始测量外部脉冲的选定电平(高或低)的宽度。
  3. 使能中断(中断使能寄存器)。如果要启用中断,此步骤是可选的。
  4. 读取测量的宽度(事件寄存器)。请注意,发生溢出时返回的值不正确。
中断清除和确认序列

读取中断寄存器:读取时会清除中断寄存器中的所有位。

计数器/定时器的时钟输入选项

以下显示SoC如何为TTC0计数器/定时器0选择时钟源:

if slcr.MIO_PIN_19[6:0] is 1100000, use MIO pin 19
else if slcr.MIO_PIN_31[6:0] is 1100000, use MIO pin 31
else if slcr.MIO_PIN_43[6:0] is 1100000, use MIO pin 43
else use EMIOTTC0CLKI0

TTC0计数器/定时器1只能使用EMIOTC0CLKI1。
TTC0计数器/定时器2只能使用EMIOTC0CLKI2。
以下显示了SoC如何为TTC1计数器/定时器0选择时钟源:

if slcr.MIO_PIN_17[6:0] is 1100000, use MIO pin 17
else if slcr.MIO_PIN_29[6:0] is 1100000, use MIO pin 29
else if slcr.MIO_PIN_41[6:0] is 1100000, use MIO pin 41
else use EMIOTTC1CLKI0

TTC1计数器/计时器1只能使用EMIOTC1CLKI1。
TTC1计数器/定时器2只能使用EMIOTC1CLKI2。

当选择MIO引脚或EMIOTTCxCLKIx作为时钟源时,如果时钟停止运行,则无论时钟是否已经停止,相应的计数值寄存器都会保留旧值。在这种情况下必须小心。

I/O信号

定时器I/O信号如表8-5所示。
系统中有两个三重定时器计数器(TTC0和TTC1)。每个TTC有三组接口信号:计数器/定时器0、1和2的时钟输入和波形输出。
对于每个三重定时器计数器,计数器/定时器0的信号可以使用MIO_PIN寄存器路由到MIO。如果MIO_PIN寄存器未选择时钟输入或波形输出信号,则默认情况下将信号路由到EMIO。计数器/定时器1和2的信号只能通过EMIO获得。

系统看门狗定时器I/O信号如表8-6所示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/748633.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

域名 Whois 检测:企业网络安全与品牌保护的利器

域名是企业在互联网上的重要标识,其安全性和合规性直接影响着企业的业务运营和品牌声誉。而域名 Whois 检测通过全面分析和监控域名的 Whois 信息,为企业提供了多方面的保障,帮助企业识别潜在的网络威胁、保护品牌资产、优化域名管理。 那么什…

向量数据库原理之向量索引

向量索引 在前面的文章中讲解了milvus的源码安装——向量数据库milvus源码剖析之开篇,向量数据库通常具备以下特点: 向量索引:用来支持高效的搜索,快速定位与查询向量相关的数据集。相似度搜索:支持余弦、欧式距离等的…

MySQL数据库基础练习系列:科研项目管理系统

DDL CREATE TABLE Users (user_id INT AUTO_INCREMENT PRIMARY KEY COMMENT 用户ID,username VARCHAR(50) NOT NULL UNIQUE COMMENT 用户名,password VARCHAR(255) NOT NULL COMMENT 密码,gender ENUM(男, 女) NOT NULL COMMENT 性别,email VARCHAR(100) UNIQUE COMMENT 邮箱 …

@PathVariable注解的使用及源码解析

前言 PathVariable 注解是我们进行JavaEE开发,最常见的几个注解之一,这篇博文我们以案例和源码相结合,帮助大家更好的了解PathVariable 注解 使用案例 1.获取 URL 上的值 RequestMapping("/id/{id}") public Object getId(Path…

Kubernetes Artemis系列 | 使用 ArtemisCloud Operator 部署 artemis

目录 一、ArtemisCloud Operator 介绍二、部署ArtemisCloud Operator三、使用 ArtemisCloud Operator 部署 artemis四、管理队列五、缩减规模时消息迁移 一、ArtemisCloud Operator 介绍 ArtemisCloud Operator 是一个用于管理和部署云端基础设施的工具。它基于 Kubernetes 平…

精益软件开发:从理念到实践

目录 前言1. 精益软件开发的起源与背景1.1 精益制造的起源1.2 精益思想在软件开发中的应用 2. 精益软件开发的核心原则2.1 消除浪费2.2 强调学习和持续改进2.3 快速交付2.4 尊重团队成员 3. 实施精益软件开发的方法3.1 精简流程3.2 持续反馈和迭代3.3 持续集成和持续交付3.4 建…

Vue 学习之 axios

目录 执行安装命令:npm install axios 使用的时候导入 axios以data,params,headers传参方式的区别 axios封装 是一个基于 promise 的 网络请求库,作用于浏览器和 node.js 中。使用Axios可以在前端项目中发送各种方式的HTTP请求…

chromium源码魔改思路

1.首先确定需要要改动的JS的API 比如要改动navigator.webdriver false 2.在官网查找JS的API https://developer.mozilla.org/zh-CN/docs/Web/Guide 3.在chromium源码官网查找源码 https://source.chromium.org/chromium/chromium/src 直接修改webdriver()返回值即可 4.然后…

idea常用配置 | 快捷注释

idea快速注释 一、类上快速注释 (本方法是IDEA环境自带的,设置特别方便简单易使用) 1、偏好设置->编辑器->文件和代码模版 | File-Settings-Editor-File and Code Templates 2、右下方的“描述”中有相对应的自动注注释配置格式 贴…

Actor-agnostic Multi-label Action Recognition with Multi-modal Query

标题:基于多模态查询的非特定行为者多标签动作识别 源文链接:https://openaccess.thecvf.com/content/ICCV2023W/NIVT/papers/Mondal_Actor-Agnostic_Multi-Label_Action_Recognition_with_Multi-Modal_Query_ICCVW_2023_paper.pdfhttps://openaccess.t…

Java研学-Shiro安全框架(二)

四 Shiro 鉴权 1 介绍 授权功能:就是为用户分配相关的权限的过程;鉴权功能:判断当前访问用户是否有某个资源的访问权限的过程。我们的权限管理系统是基于角色的权限管理,所以在系统中应该需要下面三个子模块:用户管理…

Theta方法:一种时间序列分解与预测的简化方法

Theta方法整合了两个基本概念:分解时间序列和利用基本预测技术来估计未来的价值。 每个数据科学爱好者都知道,时间序列是按一定时间间隔收集或记录的一系列数据点。例如,每日温度或经济指标的月值。把时间序列想象成不同成分的组合,趋势(数据…

观测云产品更新 | Pipelines、智能监控、日志数据访问等

观测云更新 Pipelines 1、Pipelines:支持选择中心 Pipeline 执行脚本。 2、付费计划与账单:新增中心 Pipeline 计费项,统计所有命中中心 Pipeline 处理的原始日志的数据大小。 监控 1、通知对象管理:新增权限控制。配置操作权…

PCL 使用列文伯格-马夸尔特法计算变换矩阵

目录 一、算法原理1、计算过程2、主要函数3、参考文献二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 1、计算过程 2、主要函数 void pcl

民用无人驾驶航空器运营合格证怎么申请

随着科技的飞速发展,无人机已经从遥不可及的高科技产品飞入了寻常百姓家。越来越多的人想要亲自操纵无人机,探索更广阔的天空。但是,飞行无人机可不是简单的事情,你需要先获得无人机许可证,也就是今天所要讲的叫民用无…

免费可视化工具为何成为数据分析新宠?

免费可视化工具为何越来越受欢迎?在当今数据驱动的时代,数据分析和展示已成为各行各业不可或缺的核心能力。然而,传统的数据处理和可视化工具往往价格昂贵,且使用门槛较高,这为许多中小企业和个人用户带来了不小的困扰…

微信浏览器自动从http跳转到https的坑

只要访问过同地址的https地址,就只能一直https了,无法再用https访问了,只能全站加上https才行。

电脑怎么设置锁屏密码?这3个方法你知道吗

在日常生活中,电脑已成为我们工作和娱乐的重要工具。为了保护个人信息和数据安全,设置锁屏密码是必不可少的一步。通过设置锁屏密码,您可以有效防止未经授权的访问,确保电脑上的隐私和数据不被泄露。本文将详细介绍电脑怎么设置锁…

【CSS in Depth 2 精译】1.5 渐进式增强

文章目录 1.5 渐进式增强1.5.1 利用层叠规则实现渐进式增强1.5.2 渐进式增强的选择器1.5.3 利用 supports() 实现特性查询启用浏览器实验特性 1.5 渐进式增强 要用好 CSS 这样一门不断发展演进中的语言,其中一个重要的因素就是要与时俱进,及时了解哪些功…

使用Python进行大数据处理Dask与Apache Spark的对比

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 使用Python进行大数据处理Dask与Apache Spark的对比 随着数据量的增加和数据处理需求的增长…