全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

PYNQ学习案例——Zynq中断应用及编程思路

时间:2020-12-20 12:12

人气:

作者:admin

标签: CPU  Zynq 

导读:作者:Mculover666 在实际玩Zynq中断之前,先扯一扯中断这个神奇的东西~ 实时性是一个嵌入式系统很重要的性能,实时性体现在一个系统对外部事件的响应能力和处理能力上,而CPU对一个...

作者:Mculover666

在实际玩Zynq中断之前,先扯一扯中断这个神奇的东西~

实时性是一个嵌入式系统很重要的性能,实时性体现在一个系统对外部事件的响应能力和处理能力上,而CPU对一个事件的响应及处理主要依托于 —— 中断。

通俗的来说,中断的一个基本过程就是:当一个事件发生时(比如按键按下),产生一个可以发送到CPU的中断信号(上升沿或下降沿无所谓,是个信号就行),当CPU接收到这个中断信号后,对这个中断信号所表示的事件进行处理(跳转去执行中断服务程序,对按键按下这个事件进行处理)。

对这个基本过程抽象出来一个中断系统模型如图所示:

pIYBAF9uG8-AZ8x5AAA14JbL5GY860.png

在上图中只是一个中断信号,那么当这个系统中存在很多中断信号时,群龙无首,整个系统就会乱套,CPU会像一只无头苍蝇一样到处去执行中断服务程序,结果可想而知,最后CPU肯定什么也干不了~

为了解决这个问题,需要派一个领导去管理这些各种各样的中断,这个管理者就是 —— 中断管理单元!所以,它只有一个功能 —— 管理这些中断信号!比如使能与失能 —— 让哪个中断信号通过或者让哪些信号不通过;“优先级” —— 谁先通过谁后通过,改进模型如下图:

o4YBAF9uG9GAYuULAABuv0SDfA8527.png

这样一来,CPU永远只能接收到一个中断信号,所以CPU可以很舒服的去做他该做的事情了~

总结一下中断的编程思路:

配置外设可以产生中断信号

配置中断管理单元,使能信号通过,( 配置信号优先级 )

配置中断服务程序 ,确保CPU接收到中断信号可以及时处理

接下来依托这个抽象的中断模型玩一玩Zynq的中断,具体化这个模型~

1.实验目的
探索Zynq中PL->PS的中断,按下按键产生一个中断,这个中断被通用中断管理单元所处理,然后传递给Zynq PS,将变量值递增然后将值显示在led上。

pIYBAF9uG9KAflbCAACerzGidfo465.png

2.实验步骤
2.1.新建基于Pynq-Z2的工程
2.2.创建硬件块设计
2.2.1.添加所用ip并自动连线
添加两个AXI_GPIOip核,一个连接板载4个按钮,一个连接板载4个led

o4YBAF9uG9eAE7OjAAYZVKlzrQg500.png

2.2.2.配置AXI_GPIO使能中断
这里因为4个按键是连接在axi_gpio_0上的,所以双击axi_gpio_0 ip核进行配置,如图,选择使能中断:

pIYBAF9uG9mANlpQAACryYB4UbM445.png

可以看到与未配置中断的axi_gpio_1有区别:

o4YBAF9uG9uAfIeLAAB7KVkm6Aw280.png

2.2.2.配置Zynq PS系统接收中断请求
在配置之前需要对Zynq中的中断信号有个大致的了解,其中PS和PL之间的中断信号如表所示:

pIYBAF9uG92ALQjVAAFFj6v43UM351.png

根据上图,双击zynq ip核进行配置,因为这里需要接收的按键中断是从PL端到PS端的,首先选中Fabric Interrupts中断组织,然后选中IRQ_F2P[15:0],使能16-bit的PL->PS共享中断端口,以便于来自PL端的中断可以连接到PS的中断控制器上:

pIYBAF9uG9-AC_KNAAFA9H-88Lk806.png

2.2.3.连接AXI_GPIO的中断请求和PS的中断端口
手动进行连线:

pIYBAF9uG-SAUOknAAVpTgf4rjA222.png

2.3.验证设计,创建HDL文件,生成Bitstream,导出硬件设计文件
至此,中断信号的硬件数据通路构建完成,接下来是软件中配置中断管理单元和中断服务程序。

2.4.过渡到SDK上的软件设计
2.4.1.Launch SDK

o4YBAF9uG-aADL51AAFz03DyxUI076.png

2.4.2.新建一个空的应用工程

pIYBAF9uG-iAOfE8AAGVqZ6S9WM154.png

2.4.3.导入已有C文件
因为在实际项目中需要分工协作,所以这里选择导入随书附带的C文件:

o4YBAF9uG-uAD1yBAAG-p3GYF7E430.png

pIYBAF9uG-yAPIMDAACgIOXJMbU840.png

2.4.4.配置运行设置,板级验证

o4YBAF9uG-6AQSK0AAFEpbKxXJE092.png

运行即可观察到现象。

2.添加定时器中断
2.1.实验目的
在已有一个按键中断的基础上,添加一个定时器中断,掌握添加多个中断到PS的方法。

2.2.实验步骤
2.2.1.添加AXI Timer IP核并自动连线
添加时搜索"timer",选择AXI Timer添加,然后点击自动连线,结果如图:

o4YBAF9uG_CAQOh4AADJLh0Bd40553.png

2.2.2.连接AXI Timer的中断到PS端
因为PS端的共享中断接口已经连接了一个AXI GPIO中断,所以如果要继续连接一个中断信号,要通过一个另外的ip核 —— Concat,在添加ip核时搜索添加,如图所示,将之前AXI GPIO 到ps的中断断开,然后将concat的dout信号连至PS端的IRQ_F2P[0:0],然后将AXI GPIO的中断信号连接至In0,将定时器的中断信号连接至In1,这样就完成了多个中断信号的共享。

pIYBAF9uG_GAan5WAABiZlsRGQE205.png

生成Bitstream,导出硬件文件

编辑:hfy

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信