0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AMD MicroBlaze中通过AXI Timer获取时间戳

Hack电子 来源:博客园 2023-06-08 09:21 次阅读

作者:付汉杰 hankf@amd.com

1. 硬件的Vivado Block design设计中,添加AXI Timer

2. 包含AXI Timer的头文件

#include "xtmrctr.h"

3. 定义timer的参数和全局变量

/*
* 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

调用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, __

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • amd
    amd
    +关注

    关注

    25

    文章

    5466

    浏览量

    134083
  • MicroBlaze
    +关注

    关注

    3

    文章

    68

    浏览量

    21548
  • Timer
    +关注

    关注

    1

    文章

    64

    浏览量

    12784
  • AXI
    AXI
    +关注

    关注

    1

    文章

    127

    浏览量

    16622
  • 时间戳
    +关注

    关注

    0

    文章

    15

    浏览量

    2593

原文标题:AMD MicroBlaze中通过AXI Timer获取时间戳

文章出处:【微信号:Hack电子,微信公众号:Hack电子】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    MicroBlaze串口设计

    本系统,Basys3的MicroBlaze模块调用基于AXI协议的UART IP核,通过AXI总线实现
    发表于 08-02 09:32 1471次阅读
    <b class='flag-5'>MicroBlaze</b>串口设计

    时间同步获取时间

    新手一枚,对单片机原理还不是很清楚,求教:TinyOS时间同步首先要获取本地时间,getStartTime(),想知道它是怎么
    发表于 03-20 10:37

    请问RX23T如何获取系统时钟,以便获取类似时间,如何获取此段代码运行时间

    RX23T 如何获取系统时钟,以便获取类似时间,如何获取此段代码运行时间。 系统
    发表于 07-23 08:09

    请问如何通过MicroBlaze访问BRAM?

    嗨,大家好,我正在研究Vivado 2014.4,Xilinx KC705。我需要通过Microblaze读取存储在BRAM(coe文件)的数据进行计算。我是微博阅读部分的新手。有人可以建议我
    发表于 05-20 08:38

    请问microblaze如何通过串口读写FPGA内部axi4总线上的寄存器?

    microblaze通过串口读写FPGA内部axi4总线上的寄存器
    发表于 12-23 06:16

    时间的简介与实现

    时间时间简介时间的实现时间
    发表于 02-28 06:23

    ulog里现在默认的时间是从哪里获取的呢?

    我现在用的外部RTC,想在ulog里的时间显示外部RTC的时间,ulog里现在默认的时间是从哪里获取
    发表于 11-14 14:22

    如何在tilebox上获取时间

    你好我知道 tilebox 有一个 RTC 模块,所以我意识到获取当前时间来为数据生成时间是可行的。可以这样做吗?在给定的项目示例是否有
    发表于 01-05 08:59

    基于AXI总线的MicroBlaze双核SoPC系统设计

    目的是利用嵌入在Xilinx FPGAMicroBlaze核实现基于AXI总线的双核嵌入式系统设计以及共享实现LED灯的时控.
    发表于 03-09 14:17 91次下载
    基于<b class='flag-5'>AXI</b>总线的<b class='flag-5'>MicroBlaze</b>双核SoPC系统设计

    Basys3开发板的MicroBlaze串口实验

    microblaze基本结构 3.实现microblaze调用uart模块,完成串口打印功能。 实验原理:本系统,Basys3的Microblaze模块调用基于
    发表于 02-08 15:05 994次阅读
    Basys3开发板的<b class='flag-5'>MicroBlaze</b>串口实验

    AXI总线的MicroBlaze双核SoPC系统设计

    AXI总线的MicroBlaze双核SoPC系统设计
    发表于 10-31 08:54 8次下载
    <b class='flag-5'>AXI</b>总线的<b class='flag-5'>MicroBlaze</b>双核SoPC系统设计

    如何使用MicroBlaze调用AXI IP核详细解析

    在一个项目中,当你使用microblaze作为控制器来进行系统调度的时候,一般是建议将所有模块封装成AXI形式的IP核,这样好管理,也容易调试。
    的头像 发表于 04-27 11:17 6817次阅读
    如何使用<b class='flag-5'>MicroBlaze</b>调用<b class='flag-5'>AXI</b> IP核详细解析

    uCOS-III(2) 时间

    时间时间简介时间的实现时间
    发表于 01-14 16:04 4次下载
    uCOS-III(2) <b class='flag-5'>时间</b><b class='flag-5'>戳</b>

    MicroBlaze大内部存储器(AXI BRAM)设计

    MicroBlaze可以使用AXI BRAM存放数据和指令。有些客户软件很大,需要把AXI BRAM的空间做到最大。AXI BRAM底层是Block RAM或者Ultra RAM。器件
    的头像 发表于 08-02 10:09 3186次阅读
    <b class='flag-5'>MicroBlaze</b>大内部存储器(<b class='flag-5'>AXI</b> BRAM)设计

    Java时间的使用

    Java时间的使用
    的头像 发表于 11-06 16:04 189次阅读
    Java<b class='flag-5'>中</b><b class='flag-5'>时间</b><b class='flag-5'>戳</b>的使用