0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

AMD MicroBlaze中通過AXI Timer獲取時(shí)間戳

Hack電子 ? 來源:博客園 ? 2023-06-08 09:21 ? 次閱讀

作者:付漢杰 hankf@amd.com

1. 硬件的Vivado Block design設(shè)計(jì)中,添加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”中導(dǎo)入。

5. 通過XTmrCtr_GetValue獲取時(shí)間戳

通過XTmrCtr_GetValue獲取時(shí)間戳,是以時(shí)鐘周期為單位的??梢赞D(zhuǎn)化成微妙、毫秒、秒等單位。

    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)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • amd
    amd
    +關(guān)注

    關(guān)注

    25

    文章

    5376

    瀏覽量

    133382
  • MicroBlaze
    +關(guān)注

    關(guān)注

    3

    文章

    66

    瀏覽量

    21492
  • Timer
    +關(guān)注

    關(guān)注

    1

    文章

    63

    瀏覽量

    12738
  • AXI
    AXI
    +關(guān)注

    關(guān)注

    1

    文章

    127

    瀏覽量

    16514
  • 時(shí)間戳
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    2556

原文標(biāo)題:AMD MicroBlaze中通過AXI Timer獲取時(shí)間戳

文章出處:【微信號:Hack電子,微信公眾號:Hack電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    MicroBlaze串口設(shè)計(jì)

    本系統(tǒng),Basys3的MicroBlaze模塊調(diào)用基于AXI協(xié)議的UART IP核,通過AXI總線實(shí)現(xiàn)
    發(fā)表于 08-02 09:32 ?1269次閱讀
    <b class='flag-5'>MicroBlaze</b>串口設(shè)計(jì)

    esp32獲取時(shí)間的相關(guān)函數(shù)是哪個(gè)?

    esp32 獲取時(shí)間的相關(guān)函數(shù)是哪個(gè),我用了sntp_get_current_timestamp這個(gè)函數(shù),編譯的時(shí)候說找不到,有沒有相關(guān)的例程參考?
    發(fā)表于 06-11 07:26

    時(shí)間同步獲取時(shí)間

    新手一枚,對單片機(jī)原理還不是很清楚,求教:TinyOS時(shí)間同步首先要獲取本地時(shí)間,getStartTime(),想知道它是怎么
    發(fā)表于 03-20 10:37

    請問RX23T如何獲取系統(tǒng)時(shí)鐘,以便獲取類似時(shí)間,如何獲取此段代碼運(yùn)行時(shí)間?

    RX23T 如何獲取系統(tǒng)時(shí)鐘,以便獲取類似時(shí)間,如何獲取此段代碼運(yùn)行時(shí)間。 系統(tǒng)
    發(fā)表于 07-23 08:09

    請問如何通過MicroBlaze訪問BRAM?

    嗨,大家好,我正在研究Vivado 2014.4,Xilinx KC705。我需要通過Microblaze讀取存儲在BRAM(coe文件)的數(shù)據(jù)進(jìn)行計(jì)算。我是微博閱讀部分的新手。有人可以建議我
    發(fā)表于 05-20 08:38

    請問microblaze如何通過串口讀寫FPGA內(nèi)部axi4總線上的寄存器?

    microblaze通過串口讀寫FPGA內(nèi)部axi4總線上的寄存器
    發(fā)表于 12-23 06:16

    時(shí)間的簡介與實(shí)現(xiàn)

    時(shí)間時(shí)間簡介時(shí)間的實(shí)現(xiàn)時(shí)間
    發(fā)表于 02-28 06:23

    ulog里現(xiàn)在默認(rèn)的時(shí)間是從哪里獲取的呢?

    我現(xiàn)在用的外部RTC,想在ulog里的時(shí)間顯示外部RTC的時(shí)間,ulog里現(xiàn)在默認(rèn)的時(shí)間是從哪里獲取
    發(fā)表于 11-14 14:22

    如何在tilebox上獲取時(shí)間?

    你好我知道 tilebox 有一個(gè) RTC 模塊,所以我意識到獲取當(dāng)前時(shí)間來為數(shù)據(jù)生成時(shí)間是可行的??梢赃@樣做嗎?在給定的項(xiàng)目示例是否有
    發(fā)表于 01-05 08:59

    基于AXI總線的MicroBlaze雙核SoPC系統(tǒng)設(shè)計(jì)

    目的是利用嵌入在Xilinx FPGAMicroBlaze核實(shí)現(xiàn)基于AXI總線的雙核嵌入式系統(tǒng)設(shè)計(jì)以及共享實(shí)現(xiàn)LED燈的時(shí)控.
    發(fā)表于 03-09 14:17 ?91次下載
    基于<b class='flag-5'>AXI</b>總線的<b class='flag-5'>MicroBlaze</b>雙核SoPC系統(tǒng)設(shè)計(jì)

    Basys3開發(fā)板的MicroBlaze串口實(shí)驗(yàn)

    microblaze基本結(jié)構(gòu) 3.實(shí)現(xiàn)microblaze調(diào)用uart模塊,完成串口打印功能。 實(shí)驗(yàn)原理:本系統(tǒng),Basys3的Microblaze模塊調(diào)用基于
    發(fā)表于 02-08 15:05 ?931次閱讀
    Basys3開發(fā)板的<b class='flag-5'>MicroBlaze</b>串口實(shí)驗(yàn)

    AXI總線的MicroBlaze雙核SoPC系統(tǒng)設(shè)計(jì)

    AXI總線的MicroBlaze雙核SoPC系統(tǒng)設(shè)計(jì)
    發(fā)表于 10-31 08:54 ?8次下載
    <b class='flag-5'>AXI</b>總線的<b class='flag-5'>MicroBlaze</b>雙核SoPC系統(tǒng)設(shè)計(jì)

    如何使用MicroBlaze調(diào)用AXI IP核詳細(xì)解析

    在一個(gè)項(xiàng)目中,當(dāng)你使用microblaze作為控制器來進(jìn)行系統(tǒng)調(diào)度的時(shí)候,一般是建議將所有模塊封裝成AXI形式的IP核,這樣好管理,也容易調(diào)試。
    的頭像 發(fā)表于 04-27 11:17 ?6431次閱讀
    如何使用<b class='flag-5'>MicroBlaze</b>調(diào)用<b class='flag-5'>AXI</b> IP核詳細(xì)解析

    uCOS-III(2) 時(shí)間

    時(shí)間時(shí)間簡介時(shí)間的實(shí)現(xiàn)時(shí)間
    發(fā)表于 01-14 16:04 ?4次下載
    uCOS-III(2) <b class='flag-5'>時(shí)間</b><b class='flag-5'>戳</b>

    MicroBlaze大內(nèi)部存儲器(AXI BRAM)設(shè)計(jì)

    MicroBlaze可以使用AXI BRAM存放數(shù)據(jù)和指令。有些客戶軟件很大,需要把AXI BRAM的空間做到最大。AXI BRAM底層是Block RAM或者Ultra RAM。器件
    的頭像 發(fā)表于 08-02 10:09 ?3013次閱讀
    <b class='flag-5'>MicroBlaze</b>大內(nèi)部存儲器(<b class='flag-5'>AXI</b> BRAM)設(shè)計(jì)