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

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

3天内不再提示

【ZYNQ Ultrascale+ MPSOC FPGA教程】第二十章PS端RTC中断实验

FPGA技术专栏 来源:芯驿电子科技 作者:芯驿电子科技 2021-01-26 09:57 次阅读

原创声明:

本原创教程由芯驿电子科技(上海)有限公司(ALINX)创作,版权归本公司所有,如需转载,需授权并注明出处。

适用于板卡型号:

AXU2CGA/AXU2CGB/AXU3EG/AXU4EV-E/AXU4EV-P/AXU5EV-E/AXU5EV-P /AXU9EG/AXU15EG

vivado工程目录为“ps_hello/vivado”

vitis工程目录为“ps_rtc/vitis”

1.RTC介绍

实时时钟(rtc)单元为系统和应用软件提供精确的时间基准。为了满足高精度的需要,实时时钟还包括校准电路,以补偿温度和电压波动。RTC 由 VCC-PSAUX 或 VCC-PSBATT 电源供电。当辅助电源可用时,RTC 使用它保持计数器活动。当辅助电源不可用时,RTC 自动切换到 VCC PSBATT 电源。RTC 功能如下:

1)系统掉电时,该单元自动切换至电池供电,实现时钟的不间断运行

2)支持报警设置和周期中断设置

3)校准电路以确保时间精准

4)三个计数器

时间秒计数器,32 位,可以计数约 136 年

32 KHz 参考时钟计数器,表示 1 秒的计数

用于校准的 4 位分数计数器

o4YBAGAKMQiABQ4uAACJabGpoXw935.jpg

RTC控制器结构图

pIYBAGAKMQiADN7jAACBFWj3pX4406.jpgRTC功能图

2. 中断介绍

1)ARM cortex-A系列处理器,提供了4个管脚给soc,实现外界中断的传递。分别是:nIRQ、nFIQ、nVIRQ、nVFIQ。arm系统中,会有多个外设,均有可能产生中断发送给core,因此就需要有一个中断控制器来作为中间的桥接,收集soc的所有中断信号,然后仲裁选择合适(高优先级)的中断,再发送给CPU,等待CPU处理。

2)这里中间的桥接,就是arm公司推出的大名鼎鼎的gic(general interrupt controller)。gic其实是一个架构,版本历经了gicv1,gicv2,gicv3,gicv4。

3)Ultrascale+中断框图如下

o4YBAGAKMQmAQlZ-AACnZk4inwk187.jpg

图中包含两个GIC:

RPU GIC:PL390(arm公司设计的对应GICv1 IP)

APU GIC:GIC-400(arm公司设计的对应GICv2 IP)

4)RPU GIC,其系统功能框图如下:

pIYBAGAKMQmALFVcAACf4RcNuCE113.jpg

从图中可以看到,中断源主要有三种:

PPI:private peripheral interrupt,私有外设中断,该中断来源于外设,只对固定的core有效。

SPI:shared peripheral interrupt,共享外设中断,该中断来源于外设,可以对所有的core有效。

SGI:software-generated interrupt,软中断,软件产生的中断,用于给指定的core发送中断信号

控制器功能框图如下:

o4YBAGAKMQqACPp-AACGkscayxg380.jpg

上图中, ICD的控制寄存器主要如下:

pIYBAGAKMQuARG8eAAEzML9bDxQ698.jpg

1)APU GIC,功能框图如下

o4YBAGAKMQuACHd7AABXKcQQ_TU392.jpg

GICv2,将中断分成了group0和group1。使用寄存器GICD_IGROUPRn来对每个中断,设置组。其中group0:安全中断,由nFIQ驱动,group1:非安全中断,由nIRQ驱动。支持最大1020个中断。其中断号分配如下:

pIYBAGAKMQuADXPNAAAeBXvK15E723.jpg

GICv2,主要由两部分组成:distributor及cpu interface。

distributor,用来收集所有的中断来源,并且为每个中断源设置中断优先级,中断分组,中断目的core。当有中断产生时,将当前最高优先级中断,发送给对应的cpu interface。其功能有:全局中断使能、每个中断的使能、中断的优先级、中断的分组、中断的目的core、中断触发方式、对于SGI中断,传输中断到指定的core、每个中断的状态管理、提供软件,可以修改中断的pending状态

cpu interface,将GICD发送的中断信息,通过IRQ,FIQ管脚,发送给连接到该cpu接口的core。其功能有:将中断请求发送给cpu、对中断进行认可(acknowledging an interrupt)、中断完成识别(indicating completion of an interrupt)、设置中断优先级屏蔽、定义中断抢占策略、决定当前处于pending状态最高优先级中断

gicv2,定义了自己的一些寄存器,这些寄存器,都是使用memory-mapped的方式去访问的,也就是在soc中,会留有一片空间,给gic。cpu通过访问这部分空间,来对gic进行操作。主要寄存器如下:

o4YBAGAKMQyAOKS8AAA0j87473E824.jpg

这里中断只是作简单介绍,需要详细了解的,请参照xilinx提供的文档:ug1085-zynq-ultrascale-trm.pdf。

软件工程师工作内容

以下为软件工程师负责内容。

3. Vitis程序编写

3.1 创建Platform工程

1)点击Tools->Launch Vitis

pIYBAGAKMQyAbnk4AABu2rrtFg0316.jpg

2) 与前面的Hello World实验不同,我们只建立Platform工程

o4YBAGAKMQyAf6QyAAAb4CnbLpw517.jpg

3) 填入工程名字,要与XSA文件的名字一样,点击Next

pIYBAGAKMQ2ABhzlAACGDUHbF-A543.jpg

4) 点击Next

o4YBAGAKMQ2AcMF0AABvI6_VwWc233.jpg

5) 选择XSA文件

pIYBAGAKMQ6ARisKAABMJ5fkDVI544.jpg

保持默认,点击Finish

o4YBAGAKMQ6AT4NuAAB06vYhAg8524.jpg

6) 点开platform.spr,并点开BSP

pIYBAGAKMQ-AcLXtAABtCt8ijIo047.jpg

7) 找到RTC驱动,并点击Import Examples

o4YBAGAKMRCAB_0jAABK2babjPc843.jpg

8) 非常幸运,有中断的例子,怎么就知道这个例子就是中断的例子呢?是通过“intr”猜测的,所以,基本功很重要,不然你连找例程都不会。

pIYBAGAKMRCAOUIhAABbzrKHJAQ082.jpg

9) 在这里就导入了example工程

o4YBAGAKMRGAV7zvAABiMHIhpVg375.jpg

下面就是阅读代码,然后修改代码了,当然,可能一下不能完全理解这些代码,只能在以后的应用中去反复练习

10)通过函数XRtcPsu_GetCurrentTime来获取系统秒计数器值,用函数XRtcPsu_SecToDateTime将计数值转换为我们能看明白的年月日时分秒。

pIYBAGAKMRGACY1UAAAp2xqK7SA341.jpg

11)设置中断时间,中断时间PERIODIC_ALARM_PERIOD宏定义为2,也就是2秒中断一次

pIYBAGAKMRKAHUCeAAB42KMdbiQ884.jpg

12)Build Project编译

o4YBAGAKMROAOuXPAAB8GoxXTtU218.jpg

13)了解一下中断控制器的使用,主要分为几个步骤,初始化中断控制器GIC初始化中断异常中断服务函数注册在中断控制器中使能中断使能中断异常。有两步需要注意,在中断控制器中使能中断是要根据中断号使能相应的中断,比如本章介绍的RTC,是在中断控制器GIC中的使能中断,而后面的使能外设中断是指在外设中打开它的中断,正常情况下是不打开的,打开之后就可以产生中断传递到中断控制器GIC。在以后的实验中可以借鉴这种写法。

pIYBAGAKMROAcADnAAGzjCfkg6U530.jpg

4. 下载调试

1)打开串口终端;

2)下载调试程序的方法前面教程已经讲解,不再复述;

3)和我们预期一样,串口每两秒会看断一次;

o4YBAGAKMROAN9GxAAAk--kCb9k310.jpg

5. 实验总结

实验中通过简单的修改Vitis的例程,就完成了RTC,中断的应用,看似简单的操作,但蕴含了丰富的知识,我们需要非常了解RTC的原理、中断的原理,这些基本知识是学习好ZYNQ的必要条件。

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

    关注

    1626

    文章

    21679

    浏览量

    602130
  • 实时时钟
    +关注

    关注

    4

    文章

    240

    浏览量

    65709
  • RTC
    RTC
    +关注

    关注

    2

    文章

    531

    浏览量

    66339
  • Zynq
    +关注

    关注

    10

    文章

    608

    浏览量

    47132
  • MPSoC
    +关注

    关注

    0

    文章

    198

    浏览量

    24252
收藏 人收藏

    评论

    相关推荐

    ZYNQ Ultrascale+ MPSOC FPGA教程】第二十九章PLAXI GPIO的使用

    使用zynq最大的疑问就是如何把PS和PL结合起来使用,在其他的SOC芯片中一般都会有GPIO,本实验使用一个AXI GPIO的IP核,让PS
    的头像 发表于 02-01 10:06 6692次阅读
    【<b class='flag-5'>ZYNQ</b> <b class='flag-5'>Ultrascale+</b> <b class='flag-5'>MPSOC</b> <b class='flag-5'>FPGA</b>教程】<b class='flag-5'>第二十</b>九章PL<b class='flag-5'>端</b>AXI GPIO的使用

    如何调试Zynq UltraScale+ MPSoC VCU DDR控制器

      如何调试Zynq UltraScale+ MPSoC VCU DDR控制器  Zynq UltraScale+
    发表于 01-07 16:02

    如何调试Zynq UltraScale+ MPSoC VCU DDR控制器

    如何调试 Zynq UltraScale+ MPSoC VCU DDR 控制器?
    发表于 01-22 06:29

    ZYNQ Ultrascale+ MPSOC FPGA教程

    ZYNQ Ultrascale+ MPSOC FPGA教程
    发表于 02-02 07:53

    闲话Zynq UltraScale+ MPSoC(连载1)

    Zynq-7000,这款SoC功能显得更加强劲:最显著的变化是新加入了GPU和视频编解码器,PS的高速接口更加丰富。按照Xilinx官方的说法,Zynq
    发表于 02-08 08:24 728次阅读
    闲话<b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>(连载1)

    闲话Zynq UltraScale+ MPSoC(连载5)

    作者:Hello,Panda Part3 I/O资源 和Zynq-7000相比较,Zynq UltraScale+ 增强了PS的IO性能;
    发表于 02-08 08:29 703次阅读
    闲话<b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>(连载5)

    Zynq UltraScale+ MPSoC的发售消息

    Zynq®UltraScale+MPSoC,现已开始发售。视频向您重点介绍了Xilinx UltraScale +产品组合的第一位成员
    的头像 发表于 11-27 06:47 3578次阅读

    米尔科技Zynq UltraScale+ MPSoC技术参考手册介绍

    Zynq UltraScale+ MPSoC是Xilinx推出的第二代多处理SoC系统,在第一代Zynq-7000的基础上做了全面升级,在单
    的头像 发表于 11-18 11:03 3144次阅读
    米尔科技<b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>技术参考手册介绍

    如何调试 Zynq UltraScale+ MPSoC VCU DDR 控制器?

    Zynq UltraScale+ MPSoC VCU DDR 控制器是一款专用 DDR 控制器,只支持在 Zynq UltraScale+
    发表于 02-23 06:00 15次下载
    如何调试 <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b> VCU DDR 控制器?

    ZYNQ Ultrascale+ MPSOC FPGA教程】第二十章 PSRTC中断实验

    实时时钟(rtc)单元为系统和应用软件提供精确的时间基准。为了满足高精度的需要,实时时钟还包括校准电路,以补偿温度和电压波动。RTC 由 VCC-PSAUX 或 VCC-PSBATT 电源供电。当
    发表于 02-24 06:58 15次下载
    【<b class='flag-5'>ZYNQ</b> <b class='flag-5'>Ultrascale+</b> <b class='flag-5'>MPSOC</b> <b class='flag-5'>FPGA</b>教程】<b class='flag-5'>第二十章</b> <b class='flag-5'>PS</b><b class='flag-5'>端</b><b class='flag-5'>RTC</b><b class='flag-5'>中断</b><b class='flag-5'>实验</b>

    米尔电子zynq ultrascale+ mpsoc底板外设资源清单分享

    米尔电子推出的国内首款zynq ultrascale+ mpsoc平台核心板(及开发板):MYC-CZU3EG吸引了人工智能、工业控制、嵌入式视觉、ADAS、算法加速、云计算、有线/无线通信等
    发表于 01-07 15:20 3次下载
    米尔电子<b class='flag-5'>zynq</b> <b class='flag-5'>ultrascale+</b> <b class='flag-5'>mpsoc</b>底板外设资源清单分享

    ZYNQ Ultrascale+ MPSoC系列FPGA芯片设计

    基于 Xilinx 公司ZYNQ Ultrascale+ MPSoC系列 FPGA 芯片设计,应用于工厂自动化、机器视觉、工业质检等工业领域
    发表于 11-02 14:35 1564次阅读

    Zynq UltraScale+ MPSoC中的隔离方法

    电子发烧友网站提供《Zynq UltraScale+ MPSoC中的隔离方法.pdf》资料免费下载
    发表于 09-13 17:11 1次下载
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>中的隔离方法

    Zynq UltraScale+ MPSoC的隔离设计示例

    电子发烧友网站提供《Zynq UltraScale+ MPSoC的隔离设计示例.pdf》资料免费下载
    发表于 09-13 11:28 3次下载
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>的隔离设计示例

    Zynq UltraScale+ MPSoC验证数据手册

    电子发烧友网站提供《Zynq UltraScale+ MPSoC验证数据手册.pdf》资料免费下载
    发表于 09-15 10:13 0次下载
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>验证数据手册