摘要:
关于zynq的中断说明网上有很多的帖子,比如说一下的帖子就写的很不错。
https://blog.csdn.net/shangguanyunlan/article/details/53147587
关于中断的说明不想在多说,详细的可以看上面的博客。我这里主要将如何编程实现。关于中断的说明将会分两篇来说明,第一篇是直接在PL端通过逻辑来产生中断,第二篇是通过按键来产生中断。
本篇通过逻辑来产生中断信号,并将其接入ZYNQ的中断输入。产生的中断信号是一个周期方波,周期为2秒。
共享外设中断的触发方式有上升沿和高电平两种方式。上升沿触发,顾名思义就是在上升沿的时候触发中断。高电平触发就是在高电平期间触发中断,但并不是说在高电平期间的每一个时刻都会触发中断。比如说高电平的占空比是1秒的话,并不是在1秒内都会产生中断。为什么呢?我想主要的原因就是,当中断相应进入中断处理函数后,会关闭中断,然后再进行处理,处理完后才再次打开中断,因此并不是每一个时刻都会响应中断。
高电平触发的应用场景主要用于类似于报警系统,当报警没有接触的时候就一直给高电平,产生警报。当警报解除之后就可以拉低信号。
一、在vivado 中创建一个Block Design
Block Design的完整配置如下
1、配置ZYNQ
a、中断设置
b、时钟设置
2、创建三个端口
分别创建PL_intr、CLK_100M和FCLK_RESET_N端口,并把这两个端口分别连接到IRQ_F2P、FCLK_CLK0和FCLK_RESET_N。
3、选中中断信号线, 并debug。
3、按照第一张图完成连接,如下图。
4、Generate output product