Xilinx SDK 初学之——PS对PL寄存器的读写控制

对于FPGA编程时的v文件中的寄存器,在SDK编程时需要一些读写操作,以实现PS与PL部分的信息交换。下面用一具体例子记录所需要的步骤 。如若有误请指正。

首先需要将v文件代码封装为带有AXI总线的IP,才能实现PS与PL的通信。步骤如下:
1、vivado中打开工程,Tools->Create and Package IP,下一步;
2、选择封装带有AXI4总线的,如下图:

3、next,填写名称等信息,注意IP保存路径。
4、next,选择总线相关信息,Number of Registers选项为一共需要几个寄存器的信息交换,根据实际情况修改;
5、next,选择Edit IP选项,点击完成,自动打开Package IP界面。
6、此时打开了IP模板,主要有2个v文件,如下图:

7、添加需要封装的v文件到工程,需要注意的是源文件需要copy到第3条设置的路径中(我自己开始没有拷贝过去,后面出错了)
8、打开第二个v文件,在最下面(393行)例化需要封装的模块,时钟信号连接S_AXI_ACLK,复位信号连接S_AXI_ARESETN。需要PS端写操作的端口连接到slv_reg0,slv_reg1……(在此v文件中107行已有定义,如下图1),需要PS读操作的端口在365行修改,如下图2.


9、在7行和18行可以添加parameter和需要连接到PL引脚的端口。如果有添加,则在上一层v文件例化的地方需要对应添加端口。
10、重新完成封装(可参考其他文献)
11、新建调用工程,搭建ZYNQ最小系统,并添加该IP。
12、在SDK中,对于寄存器的读和写可通过Xil_Out32和Xil_In32函数操作,例如:
Xil_Out32(XPAR_LED2_IP_0_S_AXI_BASEADDR , data) ;
val = Xil_In32(XPAR_LED2_IP_0_S_AXI_BASEADDR);

或者包含生成IP对应的头文件,里面有定义读写操作的函数。头文件位置在ip_repo\led2_ip_1.0\drivers\led2_ip_v1_0\src文件夹中(我的IP名字为led2_ip)

本文转载自: https://blog.csdn.net/tangkunjyy/article/details/62045863

最新文章

最新文章