AXI Timer v2.0定时器

您所在的位置:网站首页 timer模块 AXI Timer v2.0定时器

AXI Timer v2.0定时器

2024-06-29 09:37| 来源: 网络整理| 查看: 265

AXI Timer v2.0定时器

LogiCORE IP AXI Timer/Counter 是一个32/64位计时器模块,与 AXI4-Lite 接口接口。

特性 基于 AXI4-Lite 规范的 AXI 接口两个具有中断、事件生成和事件捕获功能的可编程间隔计时器可配置计数器宽度单脉冲宽度调制(PWM)输出定时器在生成和捕获模式下的级联操作在软件调试期间暂停计数器的冻结输入 方框图

在这里插入图片描述

AXI4-Lite Interface: AXI4-Lite 接口模块实现了一个 AXI4-Lite 从接口,用于访问内存映射的定时器寄存器。Timer Register: Register 块为每个计时器/计数器实现一组32位寄存器。这套寄存器包括载入寄存器、计时器/计数器寄存器和控制/状态寄存器。32-bit Counters: 计时器/计数器模块有两个32位计数器,每个计数器都可以配置为向上/向下计数,并且可以从load register中加载一个值。Interrupt Control: 中断控制模块根据操作模式生成单个中断。Pulse Width Modulation (PWM):PWM 块产生具有指定频率和占空比的脉冲信号 PWM0。它使用定时器0作为 PWM0周期,定时器1作为 PWM0输出宽度。 时钟工作模式 生成模式捕捉模式脉冲宽度调制模式级联模式 Generate Mode 生成模式 在 Generate 模式下,加载寄存器中的值被加载到计数器中。当计数器启用时,根据定时器控制状态寄存器(TCSR)中向上/向下计数定时器(UDT)位的选择,开始计数。在计数器执行的转换过程中,计数器停止或自动从负载寄存器重新加载生成值,在达到超时值后,继续按照 TCSR 中的 Auto Relload/Hold (ARHT)位选择的方式进行计数。定时器中断状态(TINT)位在 TCSR 中设置,如果启用,外部 GenerateOut 信号在一个时钟周期内被驱动为1。如果启用,当到达超时值时,计时器的中断信号被驱动到1。通过向定时器中断寄存器写入一个1来清除中断。使用此模式生成具有指定间隔的重复中断或外部信号。 Capture Mode 捕捉模式 在捕获模式下,当外部捕获信号被断言时,计数器的值存储在负载寄存器中。TINT 位也在 TCSR 中设置,用于检测捕获事件。根据 TCSR 中 UDT 位的选择,可以将计数器配置为此模式的向上或向下计数器。Auto Reload/Hold (ARHT)位控制是否在清除前一个 TINT 标志之前用新的捕获值覆盖捕获值。使用此模式对外部事件进行时间标记,同时生成一个中断。 Pulse Width Modulation Mode 脉冲宽度调制模式

在脉冲宽度调制(PWM)模式下,两个定时器/计数器作为一对,产生具有指定频率和占空比的输出信号(PWM0)。定时器0设置周期,定时器1设置 PWM0输出的高时间。

Cascade Mode 级联模式 在 Cascade 模式下,两个计时器/计数器被级联,作为单个64位计数器/计数器运行。级联计数器可以在生成和捕获模式下工作。TCSR0充当级联计数器的控制和状态寄存器。在此模式中忽略 TCSR1。当需要超过32位宽度的计时器/计数器时,请使用此模式。级联操作需要将 Timer0和 Timer1作为一对使用。计时器1的计数事件是当计时器0从所有的1滚动到所有的0,或者在倒计时时反过来。 Interrupts 中断

TC 中断信号可以通过 TCSR 中的 Enabel 定时器中断(ENIT)位来启用或禁用。TCSR 中的中断状态位(TINT)不能被禁用,并且总是反映计时器中断的当前状态。 在生成模式下,计数器中断是由计数器滚动引起的(与 ARHT 设置为1时重新加载计数器的条件相同)。在捕获模式下,中断事件是捕获事件。

寄存器地址

在这里插入图片描述 在这里插入图片描述### Control/Status Register 0 (TCSR0) 控制/状态寄存器 0 在这里插入图片描述

1. CASC: 在这里插入图片描述 在这里插入图片描述

Load Register (TLR0 and TLR1)负载寄存器

在这里插入图片描述在这里插入图片描述

Timer/Counter Register (TCR0 and TCR1)计时器/计数器寄存器

在这里插入图片描述

自我设计-根据上述寄存器

对Load寄存器设置需要计数值(baseaddr + 0x04,0x100000000);//100Mhz

对 Control/Status Register打开生成模式:0比特位为0

对 Control/Status Register打开向下计数:1比特位为1

对 Control/Status Register打开外部生成信号计数:2比特位为1

对 Control/Status Register设置为自动加载模式:4比特位为1

对 Control/Status Register设置为加载计数:5比特为1

对 Control/Status Register设置为清楚:5比特为0 ####################################################

对 Control/Status Register定时器中断开始工作:6比特位为1

对 Control/Status Register打定时器开始工作:7比特位为1 ####################################################

其中2-8总结为,设置(baseaddr + 0x00,0xf6);

再变为(baseaddr + 0x00,0xd6);

对 Control/Status Register清楚定时器中断:8比特位为1(需要查看其是否有中断)

文档中设计 生成模式

在这里插入图片描述 对于向上计数和向下计数,其中断输出时间的计算。

捕获模式 当 ARHT 位设置为0并发生捕获事件时,捕获值被写入负载寄存器,该寄存器保存捕获值,直到读取负载寄存器。如果未读取负载寄存器,则后续捕获事件不会更新负载寄存器并丢失。当 ARHT 位设置为1并发生捕获事件时,捕获值总是写入负载寄存器。随后的捕获事件更新负载寄存器并覆盖以前的值,无论它是否已被读取可以设置计数器,根据 TCSR 中 UDT 位的选择决定是向上还是向下计数。 PWM模式 Timer0和 Timer1的模式必须设置为 Generate 模式(TCSR 中的位 MDT设置为0)。TCSR0中的 PWMA0位和 TCSR1中的 PWMB0位必须设置为1才能启用 PWM 模式。GenerateOut 信号必须在 TCSR 中启用(位 GENT 设置为1)。PWM0信号是由 Timer 0和 Timer 1的 GenerateOut 信号生成的,因此这些信号必须在两个定时器/计数器中都启用对中两个计时器的 GenerateOut 信号的断言级别必须设置为 ActiveHigh。 计数器可以设置为向上或向下计数。 在这里插入图片描述 级联模式

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

IP界面讲解

在这里插入图片描述

Enable 64-bit Mode:如果需要64位宽度的 Axl 定时器,请选中此框。此选项禁用 Timer2选项,因为64位 AxITimer 是通过在 IP 核内部级联2个计时器创建的。Width of the Timer/Counter (bits): 根据用户需求选择8、16、32位计数宽度。Capture Trigger:选择将此信号配置为高有效或低有效。默认为高有效。Generate Out:选择将此信号配置为高有效或低有效。默认为高有效。 自己代码尝试

在这里插入图片描述 在初始化定时器,把计数值加载到计数器中后,设置为向下减法,generateout输出一个脉冲信号。中断interrupt为常一。 在这里插入图片描述 在通过对状态控制寄存器中清楚中断,中断输出归零。 在这里插入图片描述 上图为不打断点,直接运行的结果。可知,每次中断产生和清除都是成功运行的。

官方例程代码-无中断

在这里插入图片描述 其中,

进行初始化,对结构体分配地址和设备ID自我测试,主要是先对load寄存器清零,对其重新赋值,启动计数器,再重新关闭计数器。比较启动计数器前后,计数寄存器中的值是否变化,若是变化,则计数器正常工作;若是不变,则计数器工作异常。设置自动加载模式获取计数寄存器中的值开启计数器获取计数寄存器中的值若是两次取值相同,则计数异常;相同则计数正常关闭计数器

需要注意的是,例程中计数器是从0开始加的。

官方例程代码-有中断

在这里插入图片描述

首先是计数器初始化,自我检测然后是进行中断的初始化,中断函数的连接,设置为外部中断,打开中断、异常中断处理三件套接下来就是中断处理函数 为什么和其他中断不一样,此处中断处理函数是单独写出来的 在这里插入图片描述设置计数器的状态控制寄存器模式为自动加载和计数器初始化的设置一个计数器初始值,该值会在计数器启动时被加载到计数器中开启计数器 需要注意,其中例程中计数器是向上加实现的 清除中断是通过中断控制器连接的中断函数完成的。 对于上述的问题,可以通过以下方法解决:

在这里插入图片描述 这样,就是向下计数,并且generatedout可以输出。 在这里插入图片描述 但是上述寄存器位和文档中似乎并不一一对应 在这里插入图片描述 这个寄存器位才和文档中的寄存器位一一对应 主要是上图和本图一一匹配,对于XTmrCtr_SetOptions(XTmrCtr * InstancePtr, u8 TmrCtrNumber, u32 Options)函数中的Options,若为1,则添加对应的mask;若不为1,则置为0。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3