开发板环境:vivado 2017.1 ,开发板型号xc7z020clg400-1,这个工程主要功能是使用拔码开关 U20 的三个开关来触发 PL 中断,并且通过串口打印出已经触发的中断按键。
Step1 这是已经新建好的vivdao 工程
Step2 点击Flow Navigator 下的Create Block Desion新建一个Block Desion
在弹出的对话框中可以自己填写新建的Block Desion名称,我这里选择默认名称不更改,点击OK
已经新建好的Block Desion如下图所示
Step 3 点击工作区的Add IP添加IP核,在弹出的搜索栏Search中输入zynq,发现可以搜到ZYNQ IP核,
双击这个ZYNQ核添加到工作区内
添加好的ZYNQ核如下图所示
Step4 双击ZYNQ IP核添加tcl配置文件,然后点击OK(如果不知道怎样添加请参考hello_world工程里面有详细步骤)
配置后的ZYNQ核如下图所示
Step 5 点击Run Block Automation进行自动布线
在弹出的对话框中点击OK
自动布线完成后如下图所示
Step 6 再次点击工作区的Add IP添加IP核,在弹出的搜索栏Search中输入concat,将搜到的concat核
双击这个ZYNQ核添加到工作区内
添加好的concat核如下图所示
双击这个concat核将Number of Ports设置为3,然后点击OK(这里只有三个中断输入所以设置为3)
用同样的方法在搜索栏Search中输入vector,将搜到的vector核双击添加到工作区内
所要的核添加完成如下图所示
双击这个vector核将C_SIZE设置为1,然后点击OK
用同样的方法添加另外两个vector核,添加完成后如下图所示
按照下图中的接法将这几个IP核连接起来
再在这个OP引脚上右击选择Make Extermal将OP1的引脚引出来
用同样的方法将其它两个OP的引脚引出来,如下图所示
将第一个OP1引脚改名为SW1,将第二个OP1引脚改名为SW2,将第三个OP1引脚改名为SW3
引脚改完后如下图所示
Step7 右击 design_1->Generate Ouput Products 生成综合文件
在弹出的对话框中点击Generate
Step8 右击 design_1->Create HDL Wrapper 生成顶层文件
在弹出的对话框中点击OK
顶层文件生成后如下图所示
Step9 将我提供网盘提供的工程的xdc文件复制到当前这个工程里面,如下图所示
Step10 点击Generate Bitstream产生bit文件
点击Yes
点击OK
在弹出的对话框中可以看出bit文件生成成功 ,点击Cancel关闭对话框
Step11 点击菜单栏上的 File->Export->Export Hardware 导出硬件配置文件
在弹出的对话框中勾选Include bitstream ,然后点击OK
Step12 点击菜单栏上的 File->Launch SDK->OK启动SDK
点击OK
Step13 点击菜单栏上的 File->New->Application Project新建工程新建一个fsbl
在弹出的对话框中填写fsbl
在工程模板中选择Zynq FSBL
Step14 再次点击菜单栏上的 File->New->Application Project 新建工程
在弹出的对话框中填写工程名为pl_int
在工程模板中选择Hello World
将网盘里提供的工程代码复制到这个新建的hello_world里面如下图所示
按住ctrl键点击这个XPAR_PS7_SCUGIC_0_DEVICE_ID ,然后进入这个xparameters.h这个文件
在这个xparameters.h文件中添加将这三个 :
#define XPAR_FABRIC_UTIL_VECTOR_LOGIC_0_RES_INTR 61
#define XPAR_FABRIC_UTIL_VECTOR_LOGIC_1_RES_INTR 62
#define XPAR_FABRIC_UTIL_VECTOR_LOGIC_2_RES_INTR 63
中断添加进去,然后按ctrl+S保存
Step15 右击 pl_int工程->Create boot Image, 生成BOOT.bin启动文件
在弹出的对话框中点击Create Image
将生成的BOOT.bin文件拷贝到SD卡插到开发板运行
可以看到当我们拨动拨码开关就会产生中断,并且串口会打印出相应的按键