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

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

3天内不再提示

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

454398 来源:CSDN 博主 作者:Mculover666 2020-12-20 12:12 次阅读

作者: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

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

    关注

    41

    文章

    3593

    浏览量

    129473
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10863

    浏览量

    211765
  • Zynq
    +关注

    关注

    10

    文章

    609

    浏览量

    47181
收藏 人收藏

    评论

    相关推荐

    PYNQ项目——Pynq开发板启动实验

    Python降低Zynq嵌入式系统开发门槛,有丰富的组件: 可编程逻辑的控制 Jupyter Notebook接口 预安装的Python库 网络/USB/UART接口 要使用Pynq,需要Py
    的头像 发表于 12-23 10:58 3771次阅读

    PYNQ案例(一):ZYNQ的PL与PS开发

    上一期的学习中,我们系统性地介绍了PYNQZYNQ地区别与联系。PYNQ = Python + ZYNQ,即将
    的头像 发表于 12-25 14:11 8196次阅读

    PYNQ案例(二):ZYNQPYNQ的区别与联系

    方法,软件编程模式与全功能的标准ARM处理SoC毫无二致。 与之相关和不同的是,PYNQ = Python + ZYNQ,即将ZYNQ部分功能的Python化,直接调用Python库和
    的头像 发表于 12-25 14:15 5971次阅读

    基于PYNQ-Z2开发板的PYNQ开源项目

    PYNQ项目是一个新的开源框架,使嵌入式编程人员在无需设计可编程逻辑电路的情况下充分发挥Xilinx Zynq All Programmable SoC(APSoC)的功能。 与常规方
    的头像 发表于 01-02 09:02 6486次阅读
    基于<b class='flag-5'>PYNQ</b>-Z2开发板的<b class='flag-5'>PYNQ</b>开源项目

    如何为自己的ZYNQ板卡创建Pynq镜像

    Xilinx Pynq 框架允许我们将 Python 和可编程逻辑结合起来。让我们看看如何为自己的ZYNQ板卡创建 Pynq 镜像。
    发表于 08-07 09:26 1725次阅读
    如何为自己的<b class='flag-5'>ZYNQ</b>板卡创建<b class='flag-5'>Pynq</b>镜像

    赛灵思PYNQ-Z2开发板免费试用

    PYNQ-Z2 开发板支持 PYNQ 项目,这是一个新的开源框架,使嵌入式编程人员能够在无需设计可编程逻辑电路的情况下即可充分发挥 Xilinx Z
    发表于 12-05 15:29

    PYNQ-Z2申请】基于pynq的语音识别和新闻报道系统

    项目名称:基于pynq的语音识别和新闻报道系统试用计划:申请理由本人在Zynq如那件无线电方向有三年多的学习和开发经验,曾设计过基于ZYNQ 7020的频谱监测和室内定位平台,对DMA
    发表于 12-19 11:38

    PYNQ-Z2试用体验】玩转PYNQ系列:一、板卡简介与资源整理

    PYNQ-Z2试用活动不期而遇,亦是缘分。 接下来进入正题。一、PYNQ简介 PYNQ 是一个开源框架,目标是使嵌入式编程人员能够在无需设计可编程
    发表于 12-31 10:53

    什么是PYNQ

    什么是PYNQPYNQ就是通过Python语言直接对FPGA进行编程吗?PYNQPYNQ-Z2是一回事吗?
    发表于 02-24 07:02

    ZYNQ学习笔记分享

    通过MIO(Multiuse I/O)模块对器件的引脚做观测(input)和控制(output)。ZYNQ的PS端上的GPIO也可以通过EMIO(Extra MIO)模块对PL端的IP以及引脚实现上述操作。GPIO可以独立且动态地编程,作为输入/输出以及
    发表于 02-08 07:30

    PYNQ 基于Zynq架构添加了对python的支持

    中集成了ARM处理器和FPGA可编程逻辑器件,旨在为视频监视、汽车驾驶员辅助以及工厂自动化等高端嵌入式应用提供所需的处理与计算性能水平。PYNQ希望能够借助python语言本身易用易学、扩展库多而全、社区活跃贡献度高等特性,有效降低Zy
    发表于 07-14 09:05 8849次阅读
    <b class='flag-5'>PYNQ</b> 基于<b class='flag-5'>Zynq</b>架构添加了对python的支持

    digilent支持Python编程Zynq开发板介绍

    PYNQ-Z1开发板支持PYNQ项目,这是一个新的开源框架,使嵌入式编程人员能够在无需设计可编程逻辑电路的情况下即可充分发挥Xilinx Zynq
    的头像 发表于 11-18 16:41 3545次阅读
    digilent支持Python<b class='flag-5'>编程</b>的<b class='flag-5'>Zynq</b>开发板介绍

    米尔PYNQ开发板来了

    PYNQ全称为Python Productivity for Zynq,即在Zynq全可编程ARM&FPGA融合处理架构的基础上,添加了对Python的支持。
    发表于 03-26 10:15 951次阅读

    使用Tensil和PYNQPYNQ Z1 FPGA板上运行机器学习

    电子发烧友网站提供《使用Tensil和PYNQPYNQ Z1 FPGA板上运行机器学习.zip》资料免费下载
    发表于 06-14 11:44 0次下载
    使用Tensil和<b class='flag-5'>PYNQ</b>在<b class='flag-5'>PYNQ</b> Z1 FPGA板上运行机器<b class='flag-5'>学习</b>

    基于PYNQ和机器学习探索MPSOC笔记

    新版本中,不仅仅介绍了MPSOC的体系结构和应用场景,更是结合当前应用最广的PYNQ框架和机器学习应用进行分析。作为一本不可多得的免费电子英文书籍,本书既是使用Zynq MPSoC的开发人员的实用指南
    的头像 发表于 11-16 11:32 318次阅读
    基于<b class='flag-5'>PYNQ</b>和机器<b class='flag-5'>学习</b>探索MPSOC笔记