AXI Timer是提供定时技术功能的集成IP核,具有时间生成、事件捕获、产生PWM波以及产生中断的功能,下面具体讲述Timer IP核的使用说明。
1 Timer组成结构
Timer定时器计数器的组成结构框图如图所示:
主要有4部分组成
1 定时寄存器:包含2个状态/控制寄存器,加载寄存器;
2计数器:2个32位计数器;
3 中断;
4 PWM波形产生。
Timer可以配置的应用模式有:
1 生成模式;
2 捕获模式;
3 PWM脉宽调制模式;
4 级联模式。
1 生成模式
生成模式下,设置加载寄存器 (load register)为初始值,递增或者递减计数,计数值溢出后,依据定时器控制寄存器(TCSR)中的自动重载/保持(ARHT)位执行重新加载 load regster寄存器中的值或者保持不变。如果TCSR中的TINIT中断使能为1,则产生一个中断,generate out一个周期置位1,需要手动清除中断标志,
2 捕获模式
外部捕获触发(capture trig)置位1时,计数器加载 load regieter,根据TCSR寄存器的递增递减标志 UDT 相应计数,同时中断标志TINT置位1,捕获模式标定时间同时产生一个中断。
3 PWM模式
用于产生PWM波形,计数器0产生脉宽周期,计数器产生占空比,两者共同产生PWM。
4 级联模式
级联模式下,两个32位计数器合并为一个64位的计数器。可用于时间生成和事件捕获模式,由TSCR0寄存器控制。
5 中断
中断的使能位是TCSR中的ENIT位,ENIT控制中断的使能和禁用。中断状态位TINT不能写入,其根据计数值自动置位。
2 接口资源
AXI Timer IP核接口资源如下所示:
接口 | 输入输出 | 描述 |
---|---|---|
s_axi_aclk | 输入 | 时钟 |
s_axi_aresetn | 输入 | 复位 |
s_axi_* | 输入 | axi总线 |
capture trig0 | 输入 | 捕获模式下的输入 |
capture trig1 | 输入 | 捕获模式下的输入(级联模式下,不使用) |
freeze | 输入 | |
generate out0 | 输出 | 当计数值为全0(递减)或者全1(递增)时,置位一个周期 |
generate out1 | 输出 | 当计数值为全0(递减)或者全1(递增)时,置位一个周期 |
interrupt | 输出 | 中断使能下,产生中断信号 |
pwm0 | 输出 | PWM输出 |
Timer使用时需要根据功能配置相应模式,需要配置寄存器,Timer寄存器的地址空间如下所示:
寄存器地址 | 寄存器名称 | 描述 |
---|---|---|
0h | TCSR0 | Timer 0 控制/状态寄存器 |
04h | TLR0 | Timer 0 加载寄存器 |
08h | TCR0 | Timer 0 计数寄存器 |
0Ch-0Fh | RSVD | 保留 |
10h | TCSR1 | Timer 1 控制/状态寄存器 |
14h | TLR1 | Timer 1 加载寄存器 |
18h | TCR1 | Timer 1 计数寄存器 |
1Ch-1Fh | RSVD | 保留 |
下面详细介绍个寄存器含义
1 控制/状态寄存器0(TCSR0)
TCSR0寄存器对应位表示含义如下图所示:
相应含义如下:
bit位 | 名称 | 访问类型 | 描述 |
---|---|---|---|
31 - 12 | Reserved | N/A | 保留 |
11 | CASC | 读/写 | 0表示非级联模式,1表示级联模式 级联模式下,load register0表示低32位值,load register1表示高32位值 需要在使能定时/计数前使能CASC 位 |
10 | ENALL | 读/写 | 使能time0和time1 0对定时器没有影响,值1会使能ENALL、ENT0和ENT1 |
9 | PWMA0 | 读/写 | 0不使能PWM,1使能PWM, PWM模式需要time0如何timer1共同使用, PWM模式下,MDT0和MDT1必须为0,C_GEN0_ASSERT和C_GEN1_ASSERT必须为1 |
8 | T0INT | 读/写 | 中断产生标志 写0没有任何影响,写1表示清除中断标志 |
7 | ENT0 | 读/写 | 0不使能timer0,1使能timer0 |
6 | ENIT0 | 读/写 | 0禁止中断,1使能中断 |
5 | LOAD0 | 读/写 | 0不加载TLR0值,1加载TLR0值,设置该值时,需要将ENT0 位清0 |
4 | ARHT0 | 读/写 | 重载/保持选择,0保持,1表示重载 |
3 | CAPT0 | 读/写 | 0 不使能外部事件捕获,1使能外部事件捕获 |
2 | GENT0 | 读/写 | 0 不使能外部事件生成,1使能外部事件生成 |
1 | UDT0 | 读/写 | 递增递减计数选择,0递增计算。1递减计数 |
0 | MDT0 | 读/写 | 模式选择,0表示生成模式,1表示捕获模式 |
2 Load Register (TLR0 and TLR1)加载寄存器
计数时预先加载的值。
3 Timer/Counter Register (TCR0 and TCR1)计数计数器
计数时,计数的寄存器
4 控制/状态寄存器0 1 (TCSR1)
TCSR1寄存器相应位表示含义如下图所示:
TCSR1寄存器和TCSR0寄存器唯一差别是,没有CASC 标志位,级联模式的选择使用TCSR0即可,不需要再使用标志位。
使用说明该
1生成模式
1) 启动是,第一步将LOAD置位1,加载TLR中的值,ARTH自动加载或者保持位0或者1,LOAD置位是同样操作。ENT置位1时,计数器从TLR中的值开始递增或者递减,因此在ENT置位1之前或者同时,置位LOAD为1;
2) 如果ARTH置位1,则在递增下从全1转换到全0或者递减下从全0转换到全1,自动加载TLR中值。
如果GENT使能,则产生一个时钟周期的高脉冲;
3) 如果ARTH置位0,则在递增下从全1转换到全0或者递减下从全0转换到全1,当前值保持。
如果GENT使能,则产生一个时钟周期的高脉冲;
4) 如果设置为递减计数,则计数周期为
定时周期 = (TLRx + 2) * AXI_CLOCK_PERIOD
5) 如果设置为递增计数,则计数周期为
定时周期 = (MAX_COUNT - TLRx + 2) * AXI_CLOCK_PERIOD
2 捕获模式
1) 捕获信号可以设置为低有效或者高有效;
2) 捕获信号有效时,计数器中的值写入TLR中,称为捕获值;
3) 如果ARTH位为0,则TLR保持捕获值直到读取捕获值,捕获值未读取,则下一捕获信号触发时,丢到捕获值;
4) 如果ARTH置位为1,则捕获信号发生,TLR寄存器更新捕获值,不论之前捕获值是否已经读取;
5) 计数模式可以配置为递增模式或者递减模式;
3 PWM
1) PWM模式下,TCSR0和TCSR1的MDT为必须为0,表示生成模式,PWMA0位必须为1表示当前是PWM模式;
2) TCSR0和TCSR1中的GENT位必须置位为1;
3) generate out信号必须为高有效;
4) 计数模式可以配置为递增模式或者递减模式;
5) PWM的周期由TLR0中加载值确定,高电平周期由TLR1中加载值确定;
当配置为递增计数时
PWM周期 = (MAX_COUNT - TLR0 + 2) * AXI_CLOCK_PERIOD
高电平周期= (MAX_COUNT - TLR1 + 2) * AXI_CLOCK_PERIOD
当配置为递减计数时
PWM周期 = (TLR0 + 2) * AXI_CLOCK_PERIOD
高电平周期 = (TLR1 + 2) * AXI_CLOCK_PERIOD
4 级联模式
级联模式下,TCSR0作为控制/状态寄存器,TCSR1不起作用。
1) enable_timer2使能,表示使用级联模式;
2) 定时器的宽度设置为32,表示应用到每个定时器的宽度;
3) 使用到TLR0和TLR1,其中TLR1表示高32位,TLR0表示低32位;
4) TCSR0,generate out0,capture trig0有效,且TCSR0中的CASC位置位1,需要在ENT置位前为1,此时TCSR1,generate out1,capture trig1无效;
5) 如果设置为递减计数,则计数周期为
定时周期 = (TLRx + 4) * AXI_CLOCK_PERIOD
如果设置为递增计数,则计数周期为
定时周期 = (MAX_COUNT - TLRx + 4) * AXI_CLOCK_PERIOD
5 中断
1) 中断在中断发生时,且定时器使能后产生,产生高电平信号;
2) 具有两个定时器,中断信号或运算产生,如果检测到中断信号,轮询TCSR中的TINT位确定中断源;
3) TCSR中的TINT位写1清除中断,写0不起作用;
4) 级联模式下,只用定时器0中断有效。
4 AXI Timer IP核使用
AXI Timer IP核配置界面如下图所示:
经过上述介绍,AXI Timer IP核的配置可以说很简单。
1) Width of timer/counter 定时计数器的宽度,根据需要选择8、16或者32;
2) Active state of Capture Trigger 选择为低有效或者高有效;
3) Active state of Generate Out Singal选择为低有效或者高有效;
定时器2的配置和定时器1配置相同,根据需要选择相应配置。
以上为AXI Timer IP核使用说明。