色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

剖析Zynq-7000系列全局定時器(GT)

FPGA開源工作室 ? 來源:ZYNQ ? 作者:小默 ? 2021-06-16 16:49 ? 次閱讀

每個 Cortex-A9 處理器都有自己的私有 32 位定時器和 32 位看門狗定時器,兩個處理器共享一個全局 64 位定時器,這些定時器始終以 CPU 頻率 (CPU_3x2x) 的 1/2 計時。

在系統層面,有一個 24 位看門狗定時器和兩個 16 位三重定時器/計數器。

系統看門狗定時器的時鐘頻率為 CPU 頻率 (CPU_1x) 的 1/4 或 1/6,或者可以由來自 MIO 引腳或來自 PL 的外部信號提供時鐘。

兩個三重定時器/計數器始終以 CPU 頻率 (CPU_1x) 的 1/4 或 1/6 計時,用于計算來自 MIO 引腳或來自 PL 的信號脈沖的寬度。

下圖顯示了系統定時器的關系

本文重點說一下全局定時器。

全局定時器

全局定時器是一個 64 位的具有自動遞增功能的遞增計數器。

全局定時器是內存映射到與私有定時器相同的地址空間。

所有 Cortex-A9 處理器都可以訪問全局定時器。

每個 Cortex-A9 處理器都有一個 64 位比較器,用于在全局定時器達到比較器值時聲明一個私有中斷。

計時

GTC 始終以 CPU 頻率 (CPU_3x2x) 的 1/2 計時。

寄存器概述

有關GTC的注冊概述如下表

411eb9ec-cac4-11eb-9e57-12bb97331649.png

全局定時器寄存器概述

怎么使用?

下面兩個函數是在bsp standalone中的xtime_l.c中。

void XTime_SetTime(XTime Xtime_Global)

{

/* Disable Global Timer */

Xil_Out32((u32)GLOBAL_TMR_BASEADDR +(u32)GTIMER_CONTROL_OFFSET, (u32)0x0);

/* Updating Global Timer Counter Register */

Xil_Out32((u32)GLOBAL_TMR_BASEADDR +(u32)GTIMER_COUNTER_LOWER_OFFSET, (u32)Xtime_Global);

Xil_Out32((u32)GLOBAL_TMR_BASEADDR +(u32)GTIMER_COUNTER_UPPER_OFFSET,

(u32)((u32)(Xtime_Global》》32U)));

/* Enable Global Timer */

Xil_Out32((u32)GLOBAL_TMR_BASEADDR + (u32)GTIMER_CONTROL_OFFSET, (u32)0x1);

}

void XTime_GetTime(XTime *Xtime_Global)

{

u32 low;

u32 high;

/* Reading Global Timer Counter Register */

do

{

high = Xil_In32(GLOBAL_TMR_BASEADDR + GTIMER_COUNTER_UPPER_OFFSET);

low = Xil_In32(GLOBAL_TMR_BASEADDR + GTIMER_COUNTER_LOWER_OFFSET);

} while(Xil_In32(GLOBAL_TMR_BASEADDR + GTIMER_COUNTER_UPPER_OFFSET) != high);

*Xtime_Global = (((XTime) high) 《《 32U) | (XTime) low;

}

官方已經把全局定時器自動初始化好了,其頻率為CPU頻率的一半。

定義全局定時器的7個寄存器全部按照地址進行了宏定義,采用xil_io.h里的out32和in32兩個函數進行讀寫操作:

#define Global_Timer_INTR XPAR_GLOBAL_TMR_INTR#define Global_Timer_Counter_Register0 XPAR_GLOBAL_TMR_BASEADDR+0x0U#define Global_Timer_Counter_Register1 XPAR_GLOBAL_TMR_BASEADDR+0x4U#define Global_Timer_Control_Register XPAR_GLOBAL_TMR_BASEADDR+0x8U#define Global_Timer_Interrupt_Status_Register XPAR_GLOBAL_TMR_BASEADDR+0xCU#define Comparator_Value_Register0 XPAR_GLOBAL_TMR_BASEADDR+0x10U#define Comparator_Value_Register1 XPAR_GLOBAL_TMR_BASEADDR+0x14U#define Auto_increment_Register XPAR_GLOBAL_TMR_BASEADDR+0x18U

接下來進行全局定時器的初始化和中斷函數綁定:

GT_Write_Reg(Global_Timer_Control_Register,0);//停止全局定時器

GT_Write_Reg(Global_Timer_Counter_Register0,0);//清空計數器低32位

GT_Write_Reg(Global_Timer_Counter_Register1,0);//清空計數器高32位

GT_Write_Reg(Global_Timer_Interrupt_Status_Register,1);//清除中斷標志位

GT_Write_Reg(Comparator_Value_Register0,TIMER_LOAD_VALUE);//加載比較器低32位

GT_Write_Reg(Comparator_Value_Register1,0);//加載比較器高32位

GT_Write_Reg(Auto_increment_Register,TIMER_LOAD_VALUE);//加載遞增寄存器數值

Status = XScuGic_Connect(IntcInstancePtr, Global_Timer_INTR,

(Xil_ExceptionHandler)TimerIntrHandler,

0);//綁定全局定時器中斷服務函數

if (Status != XST_SUCCESS)

{

return Status;

}

XScuGic_InterruptMaptoCpu(IntcInstancePtr,1,Global_Timer_INTR);//將27號全局定時器中斷映射到CPU1

XScuGic_Enable(IntcInstancePtr, Global_Timer_INTR);//打開全局定時器中斷(27號)

主程序中打開全局定時器開始計時

GT_Write_Reg(Global_Timer_Control_Register,//啟動全局定時器

Auto_Increment_Bit|IRQ_Enable_Bit|Comp_Enable_Bit|Timer_Enable_Bit);

總結

全局定時器一共7個寄存器,打開SDK再想看看對應的BSP文檔時就會發現還是很復雜的。

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19535

    瀏覽量

    231859
  • 寄存器
    +關注

    關注

    31

    文章

    5390

    瀏覽量

    121901
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10947

    瀏覽量

    213900
  • 計數器
    +關注

    關注

    32

    文章

    2278

    瀏覽量

    95422
  • 定時器
    +關注

    關注

    23

    文章

    3259

    瀏覽量

    115892

原文標題:Zynq-7000系列全局定時器(GT)詳解

文章出處:【微信號:leezym0317,微信公眾號:FPGA開源工作室】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    dac3174與xilinx zynq7000系列連接,fpga的案例參考代碼有沒有?

    dac3174與xilinx zynq7000系列連接,fpga的案例參考代碼有沒有? tsw1400_lvds_dac_sample_wise_restored的代碼寫的實在太難度了,一句注釋都沒有
    發表于 11-25 06:04

    當ADC3663的LVDS輸出給到ZYNQ-7000的LVDS接收這兩者之間可以直連嗎?

    ADC3663的LVDS差分輸出與xilinx的ZYNQ-7000的LVDS輸入的電平匹配問題 ADC3663的供電是1.8V,ADC3663的LVDS輸出給到ZYNQ-7000的BANK12
    發表于 11-14 07:43

    Xilinx ZYNQ 7000系列SoC的功能特性

    本文介紹下Xilinx ZYNQ 7000系列SoC的功能特性、資源特性、封裝兼容性以及如何訂購器件。
    的頭像 發表于 10-24 15:04 ?1636次閱讀
    Xilinx <b class='flag-5'>ZYNQ</b> <b class='flag-5'>7000</b><b class='flag-5'>系列</b>SoC的功能特性

    zynq7000 BSP無法在u-boot加載運行怎么解決?

    1、硬件配置zynq7000 zedboard 2、下載git,回退到支持zynq7000 的bsp包 3、采用xilinx sdk工具可以運行thread-zynq7000.elf 4、采用u-boot tftp下載到板子th
    發表于 09-27 09:26

    正點原子ZYNQ7015開發板!ZYNQ 7000系列、雙核ARM、PCIe2.0、SFPX2,性能強悍,資料豐富!

    本帖最后由 jf_85110202 于 2024-9-14 10:33 編輯 正點原子ZYNQ7015開發板!ZYNQ 7000系列、雙核ARM、PCIe2.0、SFPX2,性能
    發表于 09-14 10:12

    [XILINX] 正點原子ZYNQ7035/7045/7100開發板發布、ZYNQ 7000系列、雙核ARM、PCIe2.0、SFPX2!

    正點原子FPGA新品ZYNQ7035/7045/7100開發板,ZYNQ 7000系列、雙核ARM、PCIe2.0、SFPX2! 正點原子Z100
    發表于 09-02 17:18

    定時器的工作方式介紹

    定時器是計算機和嵌入式系統中常見的一種硬件模塊,用于實現定時和計數功能。定時器的工作方式通常由一組寄存來控制,這些寄存定義了
    的頭像 發表于 07-12 10:29 ?1262次閱讀

    定時器相關的寄存有哪些類型

    ,微控制通常提供了一系列定時器寄存,用于配置和控制定時器的行為。 以下是一些常見的與定時器
    的頭像 發表于 07-12 10:25 ?1165次閱讀

    簡談Xilinx Zynq-7000嵌入式系統設計與實現

    今天給大俠帶來簡談Xilinx Zynq-7000嵌入式系統設計與實現,話不多說,上貨。 Xilinx的ZYNQ系列FPGA是二種看上去對立面的思想的融合,ARM處理的串行執
    發表于 05-08 16:23

    Xilinx ZYNQ 動手實操演練

    。可編程邏輯可由用戶配置,并通過“互連”模塊連接在一起,這樣可以提供用戶自定義的任意邏輯功能,從而擴展處理系統的性能及功能。不過,與采用嵌入式處理的FPGA不同,Zynq-7000產品系列
    發表于 05-03 19:28

    如何實現一個軟件定時器

    在Linux,uC/OS,FreeRTOS等操作系統中,都帶有軟件定時器,原理大同小異。典型的實現方法是:通過一個硬件定時器產生固定的時鐘節拍,每次硬件定時器中斷到,就對一個全局的時間
    的頭像 發表于 04-29 11:00 ?849次閱讀

    Zynq-7000為何不是FPGA?

    Zynq-7000可擴展處理平臺是采用賽靈思新一代FPGA(Artix-7與Kintex-7FPGA)所采用的同一28nm可編程技術的最新產品系列
    發表于 04-26 11:30 ?1471次閱讀
    <b class='flag-5'>Zynq-7000</b>為何不是FPGA?

    簡談Xilinx Zynq-7000嵌入式系統設計與實現

    今天給大俠帶來簡談Xilinx Zynq-7000嵌入式系統設計與實現,話不多說,上貨。 Xilinx的ZYNQ系列FPGA是二種看上去對立面的思想的融合,ARM處理的串行執
    發表于 04-10 16:00

    定時器在STEP 7V5.x及STEP 7(TIA Portal)的不同處理步驟

    基于STEP 5的兼容性,仍然可以使用STEP7 S5定時器與計數定時器和計數全局的且基于編號尋址,當啟動
    的頭像 發表于 04-07 11:35 ?2284次閱讀
    <b class='flag-5'>定時器</b>在STEP 7V5.x及STEP 7(TIA Portal)的不同處理步驟

    ?PLC定時器介紹

    定時器是PLC中重要的編程元件,是累計時間增量的內部器件。大部分自動控制領域都需要定時器進行延時控制,靈活地使用定時器可以編制出復雜的控制程序。
    發表于 03-22 12:36 ?2664次閱讀
    ?PLC<b class='flag-5'>定時器</b>介紹
    主站蜘蛛池模板: 成 人 网 站免费观看 | 草莓AV福利网站导航 | 在线看片韩国免费人成视频 | 中文中幕无码亚洲视频 | 国产亚洲999精品AA片在线爽 | 国产成人精品男人的天堂网站 | 亚洲福利天堂网福利在线观看 | 免费乱理伦片在线观看八戒 | 2012中文字幕手机在线 | 猪蜜蜜网站在线观看电视剧 | 国产欧美国日产在线播放 | 美女直播喷水 | 第九色区av天堂 | 秋葵app秋葵官网18在线观看 | 久久这里只有精品国产99 | 亚洲理论片在线中文字幕 | 在线观看免费小视频 | 国产成人精选免费视频 | 亚洲视频网站欧美视频网站 | 国内精品自线在拍2020不卡 | 成人在线免费观看 | 亚洲黄色三级视频 | 快播电影网址 | 久久精品国产在热亚洲完整版 | 少妇高潮A片特黄久久精品网 | 年轻漂亮的妺妺中文字幕版 | 色婷婷综合激情中文在线 | 川师 最美老师 | 九九热视频在线观看 | 97亚洲狠狠色综合久久位 | 正在播放黑人杂交派对卧槽 | 一本之道高清在线3线观看 一本之道高清视频在线观看 | 亚洲国产第一区二区三区 | 无限资源在线完整高清观看1 | zoovideo人与驴mp4 | 三级黄色在线看 | 女子初尝黑人巨嗷嗷叫 | 少妇高潮久久久久7777 | 曰产无码久久久久久精品 | 国产亚洲日韩另类在线观看 | 91热久久免费频精品动漫99 |