在上一个篇章中,我们已经能把一个自己写的在FPGA上的设备挂在AXI总线上了,这时,其实在vivado中软件回帮你自动连接并且分配了基地址。例如,我们现在有这样一乘法器设备,它的地址对应如下:
0X43C0_0000~0X43C0_0001 | A[15:0] |
0X43C0_0002~0X43C0_0003 | B[15:0] |
0X43C0_0004~0X43C0_0007 | C[31:0] |
其中每个地址都是可读可写的。做过ZYNQ裸跑开发的一定知道 Xil_In8(),Xil_In16(),Xil_In32(),Xil_Out8(),Xil_Out16(),Xil_Out32(), 这些函数的存在,他们的作用就是对指定地址进行读写,虽然这些是宏函数效率也很高但是代码很不友好,可读性很差。但是既然这些挂在总线上的东西与内存无异,我们自然可以用对应大小的指针来访问他们:
unsigned short *A = 0x43C00000;
unsigned short *B = 0x43C00002;
unsigned int *C = 0x43C00004;