作者:付漢杰 hankf@amd.com
1. 硬件的Vivado Block design設計中,添加AXI Timer
2. 包含AXI Timer的頭文件
#include "xtmrctr.h"
3. 定義timer的參數(shù)和全局變量
/* * The following constants map to the XPAR parameters created in the * xparameters.h file. They are only defined here such that a user can easily * change all the needed parameters in one place. */ #define TMRCTR_DEVICE_ID XPAR_TMRCTR_0_DEVICE_ID /* * This example only uses the 1st of the 2 timer counters contained in a * single timer counter hardware device */ #define TIMER_COUNTER_0 0 // #define XPAR_AXI_TIMER_0_CLOCK_FREQ_HZ 100000000U 100 000 000U #define TMRCTR_DEVICE_FREQ_MS (XPAR_TMRCTR_0_CLOCK_FREQ_HZ/1000) #define TMRCTR_DEVICE_FREQ_US (TMRCTR_DEVICE_FREQ_MS/1000) #define TMRCTR_DEVICE_PERIOD_NS ( (1000*1000*1000)/XPAR_AXI_TIMER_0_CLOCK_FREQ_HZ ) XTmrCtrTimerCounter;/*TheinstanceoftheTmrctrDevice*/
4. 初始化AXI Timer
調(diào)用TmrCtrPolledInit()初始化AXI Timer, 也初始化了全局變量TimerCounter。
TmrCtrPolledInit(TMRCTR_DEVICE_ID,TIMER_COUNTER_0);
其中TmrCtrPolledInit()來自于xtmrctr_polled_example.c中的TmrCtrPolledExample(),可以在BSP中從AXI Timer的“Import Example”中導入。
5. 通過XTmrCtr_GetValue獲取時間戳
通過XTmrCtr_GetValue獲取時間戳,是以時鐘周期為單位的。可以轉化成微妙、毫秒、秒等單位。
time_begin = XTmrCtr_GetValue(TmrCtrInstancePtr, TmrCtrNumber);
for (i=0; i<100000; i++ ) {
g_iLoopTest++;
}
time_end = XTmrCtr_GetValue(TmrCtrInstancePtr, TIMER_COUNTER_0);
if( time_end < time_begin ){
time_diff = 0xffffffff - time_begin;
time_diff = time_diff + time_end + 1;
} else {
time_diff = time_end - time_begin;
}
time_diff_us = time_diff/TMRCTR_DEVICE_FREQ_US;
xil_printf("100K loop: %x : Timer diff: 0x%08x = %d Cycles, %d us, %d ms at %s : %d
",
????????????g_iLoopTest,?time_diff,?time_diff,?time_diff_us,?time_diff_us/1000,?__
審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
amd
+關注
關注
25文章
5667瀏覽量
139420 -
MicroBlaze
+關注
關注
3文章
68瀏覽量
22268 -
Timer
+關注
關注
1文章
64瀏覽量
13504 -
AXI
+關注
關注
1文章
145瀏覽量
17866 -
時間戳
+關注
關注
0文章
15瀏覽量
2805
原文標題:AMD MicroBlaze中通過AXI Timer獲取時間戳
文章出處:【微信號:Hack電子,微信公眾號:Hack電子】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
熱點推薦
MicroBlaze串口設計
本系統(tǒng)中,Basys3的MicroBlaze模塊調(diào)用基于AXI協(xié)議的UART IP核,通過AXI總線實現(xiàn)
發(fā)表于 08-02 09:32
?2479次閱讀
請問RX23T如何獲取系統(tǒng)時鐘,以便獲取類似時間戳,如何獲取此段代碼運行時間?
RX23T 如何獲取系統(tǒng)時鐘,以便獲取類似時間戳,如何獲取此段代碼運行時間。 系統(tǒng)
發(fā)表于 07-23 08:09
請問如何通過MicroBlaze訪問BRAM?
嗨,大家好,我正在研究Vivado 2014.4,Xilinx KC705。我需要通過Microblaze讀取存儲在BRAM(coe文件)中的數(shù)據(jù)進行計算。我是微博閱讀部分的新手。有人可以建議我
發(fā)表于 05-20 08:38
請問microblaze如何通過串口讀寫FPGA內(nèi)部axi4總線上的寄存器?
microblaze通過串口讀寫FPGA內(nèi)部axi4總線上的寄存器
發(fā)表于 12-23 06:16
ulog里現(xiàn)在默認的時間戳是從哪里獲取的呢?
我現(xiàn)在用的外部RTC,想在ulog里的時間戳顯示外部RTC的時間,ulog里現(xiàn)在默認的時間戳是從哪里獲取
發(fā)表于 11-14 14:22
如何在tilebox上獲取時間戳?
你好我知道 tilebox 有一個 RTC 模塊,所以我意識到獲取當前時間來為數(shù)據(jù)生成時間戳是可行的。可以這樣做嗎?在給定的項目示例中是否有
發(fā)表于 01-05 08:59
基于AXI總線的MicroBlaze雙核SoPC系統(tǒng)設計
目的是利用嵌入在Xilinx FPGA中的MicroBlaze核實現(xiàn)基于AXI總線的雙核嵌入式系統(tǒng)設計以及共享實現(xiàn)LED燈的時控.
發(fā)表于 03-09 14:17
?91次下載
Basys3開發(fā)板的MicroBlaze串口實驗
microblaze基本結構 3.實現(xiàn)microblaze調(diào)用uart模塊,完成串口打印功能。 實驗原理:本系統(tǒng)中,Basys3的Microblaze模塊調(diào)用基于
發(fā)表于 02-08 15:05
?1320次閱讀
如何使用MicroBlaze調(diào)用AXI IP核詳細解析
在一個項目中,當你使用microblaze作為控制器來進行系統(tǒng)調(diào)度的時候,一般是建議將所有模塊封裝成AXI形式的IP核,這樣好管理,也容易調(diào)試。
MicroBlaze大內(nèi)部存儲器(AXI BRAM)設計
MicroBlaze可以使用AXI BRAM存放數(shù)據(jù)和指令。有些客戶軟件很大,需要把AXI BRAM的空間做到最大。AXI BRAM底層是Block RAM或者Ultra RAM。器件
AMD MicroBlaze中通過AXI Timer獲取時間戳
評論