Zynq定时器系统(上)—全局和私有定时器
前言
定時(shí)/計(jì)數(shù)器是硬件系統(tǒng)運(yùn)行狀態(tài)的忠實(shí)記錄者,它不受CPU直接干預(yù),自己獨(dú)立運(yùn)行,可以完成計(jì)時(shí)、定時(shí)、中斷、實(shí)時(shí)時(shí)鐘等功能。常用功能:
(1)定時(shí)產(chǎn)生中斷信號
(2)用作產(chǎn)生延時(shí)函數(shù)delay()
(3)作計(jì)數(shù)器,用于檢測程序執(zhí)行時(shí)間(這個(gè)很好用)。
1.平臺說明
硬件平臺:ZYNQ7z202clg400-2的創(chuàng)龍核心板
官方參考文檔:《UG585 - Zynq-7000 SoC Technical Reference Manual (ver1.12.2)-技術(shù)參考手冊.pdf》,見附錄。
2.定時(shí)器系統(tǒng)介紹
首先,zynq 7000 soc芯片具有2個(gè)ARM核。每個(gè)Cortex-a9處理器都有自己的專用32位定時(shí)器和32位看門狗定時(shí)器.兩個(gè)處
理器共享一個(gè)全局64位定時(shí)器。
時(shí)鐘:這些定時(shí)器的時(shí)鐘頻率固定為CPU時(shí)鐘頻率(Cpu_6x2x)的1/2,即CPU_3x2x時(shí)鐘。
同時(shí),在系統(tǒng)級別上,有一個(gè)24位的看門狗定時(shí)器和兩個(gè)16位的三重定時(shí)器/計(jì)數(shù)器(TTC)。
時(shí)鐘:系統(tǒng)看門狗計(jì)時(shí)器的時(shí)鐘頻率為CPU頻率的1/4或1/6(即Cpu_1x時(shí)鐘),或是來自MIO引腳或PL的外部時(shí)鐘。兩個(gè)三重定時(shí)
器/計(jì)數(shù)器(TTC)的時(shí)鐘為CPU頻率的1/4或1/6(即Cpu_1x時(shí)鐘),或是來自MIO引腳或PL的外部時(shí)鐘。如下圖:
3.全局定時(shí)器(GT)
全局定時(shí)器在Cortex-A9 MPCore技術(shù)要求文檔中有完整的文檔,第4.3和4.4節(jié)(參見附錄A,附加資源)。全局計(jì)時(shí)器是一個(gè)64位
遞增的定時(shí)器。全局計(jì)時(shí)器與私有定時(shí)器映射在同一個(gè)地址空間中的內(nèi)存,僅在安全狀態(tài)下在重置時(shí)被訪問。所有Cortex-A9處
理器都可以訪問全局定時(shí)器。每個(gè)Cortex-a9核都有一個(gè)64位的本地比較器,用于在全局計(jì)時(shí)器達(dá)到比較器值時(shí)產(chǎn)生私有中斷。
(1)時(shí)鐘要求:
GTC總是以CPU頻率的1/2為時(shí)鐘,即為(Cpu_3x2x)。
根究前一章節(jié),可以知道CPU頻率(Cpu_6x2x)設(shè)置為666.666M,則Cpu_3x2x為333.333MHz。
(2)寄存器描述:
關(guān)于每個(gè)寄存器的詳細(xì)功能介紹,請閱讀UG585
相依介紹如下:
——>Global_Timer_Counter_Register0(全局定時(shí)器計(jì)數(shù)器低32位),地址0xF8F00200,復(fù)位值0,可讀寫。
——>Global_Timer_Counter_Register1(全局定時(shí)器計(jì)數(shù)器高32位),地址0xF8F00204,復(fù)位值0,可讀寫。
——>Global_Timer_Control_Register(全局定時(shí)器控制寄存器),地址0xF8F00208,復(fù)位值0,可讀寫;
其中[15:8]位即從低位數(shù)起的第二個(gè)字節(jié)為Prescaler(步距),該字節(jié)可用來延遲定時(shí)間隔,其計(jì)算公式為:(步距值+1)*(加載值+1)*(計(jì)數(shù)時(shí)鐘周期);
第3位為觸發(fā)模式位為0則為單次觸發(fā),為1則為自動遞增模式,該模式下每次計(jì)數(shù)器達(dá)到比較器的數(shù)值則比較器會自動加上遞增寄存器的數(shù)值,這樣就可以周期性的產(chǎn)生下一次中斷。
第2位為中斷允許位,默認(rèn)為0即不觸發(fā)中斷,為1時(shí)在中斷狀態(tài)寄存器置位時(shí)會觸發(fā)中斷;
第1位為比較允許位,默認(rèn)為0即不比較,為1時(shí)每當(dāng)計(jì)數(shù)器數(shù)值達(dá)到比較器數(shù)值則會置位事件標(biāo)志位;
第0位為定時(shí)器使能位,默認(rèn)為0,即不計(jì)數(shù),定時(shí)器停止,這時(shí)可以讀寫計(jì)數(shù)值;為1時(shí)計(jì)數(shù)器在計(jì)數(shù)時(shí)鐘下開始自動計(jì)數(shù),定時(shí)器運(yùn)行,不能寫入計(jì)數(shù)值(只能讀出)。
——>Global_Timer_Interrupt_Status_Register(中斷狀態(tài)寄存器),地址0xF8F0020C,復(fù)位值0,可讀寫;
其中第0位為事件標(biāo)志位,當(dāng)計(jì)數(shù)器達(dá)到比較器數(shù)值時(shí)該位置1,需要手動清零,向該位寫一個(gè)1就能清零(看清楚是寫1不是寫0)。
——>Comparator_Value_Register0(比較器低32位),地址0xF8F00210,復(fù)位值0,可讀寫;
——>Comparator_Value_Register1(比較器高32位),地址0xF8F00214,復(fù)位值0,可讀寫;
——>Auto_increment_Register(自動遞增寄存器),地址0xF8F00218,復(fù)位值0,可讀寫;
在自動遞增模式下,每當(dāng)計(jì)數(shù)器數(shù)值達(dá)到比較器數(shù)值,則比較器會自動加上自動遞增寄存器的值以便產(chǎn)生下一次中斷。
一共7個(gè)寄存器.
(3)使用注意事項(xiàng):
以下列舉的注意事項(xiàng)均是參考寄存器說明而來。
(3.1)使能定時(shí)器,步驟如下:
I:清除使能bit,即Global_Timer_Control_Register的bit[0]=0
II:寫低32bit,即Global_Timer_Counter_Register0
III:寫高32bit,即Global_Timer_Counter_Register1
IV:設(shè)置timer模式,即設(shè)置Global_Timer_Control_Register,是否使能
IV:使能timer,即Global_Timer_Control_Register的bit[0]=1
(3.2)讀計(jì)數(shù)器的當(dāng)前值,步驟如下:
I:讀高32bit,即Global_Timer_Counter_Register1
II:讀低32bit,即Global_Timer_Counter_Register0
III:再讀一次高32bit,如果此次讀取的值與 I 中的不同,則跳轉(zhuǎn)到 II;
IV:數(shù)據(jù)讀取成功
(3.3)如果想使用定時(shí)器的定時(shí)中斷功能,則注意:使用自動增量模式而不是單次觸發(fā)模式
官方說明:https://china.xilinx.com/support/answers/47545.html
(4)很好的例程
在這里推薦2個(gè)很好的連接,他們使用GT做了很好的案例說明:
第一個(gè):https://blog.csdn.net/kkk584520/article/details/10034679
第二個(gè):https://zhuanlan.zhihu.com/p/31061401
4.私有定時(shí)器
cpu專用計(jì)時(shí)器和看門狗計(jì)時(shí)器的完整文檔需要參看:?Cortex-A9 MPCore?Technical Requirements Document, sections 4.1 and 4.2,鏈接:http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0360e/BABIFIHD.html
(1)特性說明:
定時(shí)器和看門狗塊都有以下特性:
- 32位計(jì)數(shù)器,當(dāng)它達(dá)到零時(shí)可產(chǎn)生中斷,即定時(shí)器是遞減的方式。
- 8位預(yù)分頻器,以便更好地控制中斷周期。
- 可配置的單次模式或自動重裝模式。
- 計(jì)數(shù)器可配置起始值。
(2)時(shí)鐘要求:
所有的私有定時(shí)器和看門狗總是以CPU頻率的1/2為時(shí)鐘,即為(Cpu_3x2x)。
根究前一章節(jié),可以知道CPU頻率(Cpu_6x2x)設(shè)置為666.666M,則Cpu_3x2x為333.333MHz。
(3)寄存器說明:
私有定時(shí)器的寄存器和全局定時(shí)器的寄存器功能類似,這里略過介紹。
5.附錄
附錄
《UG585 - Zynq-7000 SoC Technical Reference Manual (ver1.12.2)-技術(shù)參考手冊.pdf》下載鏈接:
https://download.csdn.net/download/ye1223/10811782
?
’
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的Zynq定时器系统(上)—全局和私有定时器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Zynq器件的时钟系统
- 下一篇: 树莓派 系统的 启动与安装