FPGA Xilinx Vivado 学习系列(一):创建Microblaze软核,使用AXILite建立PS与PL之间的数据通信,PS主,PL从
一、创建工程XC7S50二、创建工程文件创建完成后需要根据开发板的定义引入时钟与各种外设引脚。这里的LED用于后期检测PS与PL是否正常运行以及PS与PL之间的数据通信是否正常。三、创建约束文件四、创建Microblaze软核接下来需要自定义IP模块用于实现PS与PL之间的数据通信。五、自定义IP模块vivado会自动打开该IP工程接下来需要对两个verilog文件进行修改。针对MY_PS_PL_AXILite_v1_0模块的修改针对MY_PS_PL_AXILite_v1_0_S00_AXI模块的修改放入文末的github中其实也就是slave端的AXILite驱动。打开component.xml文件重新打包后可以关闭该工程。回到之前的工程中在模块设计中加入该自定义模块。加入之后进行连线这里为了简单起见FPGA所使用的时钟从软核中引出。最终连线图如下这里如果想要针对自定义IP模块进行修改可以右击选择Edit in IP Packager如下图所示还需要修改一下地址信息在这里的偏移地址以及所占内存大小根据需要设置。最后回到资源界面能够看到出现了该模块。接下来需要在顶层模块中使用该模块。六、创建并编写PS端程序在顶层模块中加入该模块后进行编译。完成之后点击取消勾选二进制流我这里使用的是vivado2018.3 配套的是SDK。SDK这里会自动出现硬件平台。创建Application Project创建main文件简单编写一下例程其中基地址为之前定义的偏移地址addr需要左移两位因为每个地址占8位但是需要按照32位对齐。保存后自动编译。七、编写PL端程序1、在PL端检测从PS端读取的数据是否变化若不变化则不闪烁蓝灯。2、在PL端加入每100毫秒增加1的变量并传入PS通过debug检测该变量的值是否会发生变化。具体见github。将ELF文件加入vivado后重新进行编译。重新编译八、程序烧写与验证连接硬件板子上代表PL的绿灯和代表PS的蓝灯正常闪耀PS中pl_ms的数值一直在增加以此表明PS与PL之间能够正常通信。如有错误或者不规范的地方感谢指出☺☺☺仓库https://gitee.com/syjjasper/fpga_ps_pl_AXILite.git