PS与PL之间AXI-Lite通信
最好的学习方法莫过于把自己当作老师来教会别人。
QQ邮箱:522420615@qq.com,有问题希望大家一起友好交流。
FPGA最重要的组成部分莫过于PS部分与PL部分。
PS: 处理系统 (Processing System) , 就是与FPGA无关的ARM的SOC的部分。
PL: 可编程逻辑 (Progarmmable Logic), 就是FPGA部分。
简单的讲就是PL部分直接用代码来写电子电路,直接使用电子电路来进行数据采集及控制可以极大的提高采集频率及控制精度。PS部分就是arm部分,可以裸机进行数据处理或者与上位机进行数据交互,再通过PL部分进行控制。也可以上操作系统上应用。
PS与PL之间的通信方式包括AXI4,AXI-Lite,AXI-Stream三种通信方式,今天着重讲一下低速的AXI-Lite这种通信方式。
目的:通信的目的很简单,PL部分的目的是BANK引脚直接输出不同占空比的波形。PS部分的目的就是通过SDK代码控制波形的占空比。AXI-Lite通信就是把PS部分写入的占空比数值在PL部分的电路中能够使用。接下来我们来分析下怎么构造这个工程整体结构。
既然设计的PS部分,那么ZYNQ肯定不能少,根据学习板的结构构造合适的ZYNQ。如下图所示。
接下来是核心关键部分,构造AXI_Lite通信IP核。事实上这一部分vivado公司已经为我们想好了。直接按正常情况新建一个工程,新建IP核,IP核中直接就有AXI_Lite通信IP核的专门的新建选项。
IP核生成之后我们先看设计文件。设计文件中我们需要定义的很简单。包括3个方面,
首先是IP核的名称。
其次是输出接口。IP核已经属于PL部分,因此其对外的输出接口包括发出波形的引脚接口
最后是输入接口。输出接口正常来说就是固定的slv_reg。在这里是8个输入。但是在做实验室做了一个PWM核的复用。导致此处有些混乱。
简单的说,这个IP核的输入除了时钟及重启外就是Slv_reg的输入,对应的输出就是PWM的输出。
到此为止,AXI_LiteIP核已经构造完成了,接下来就是打包生成可调用的IP核丢到第一个工程中进行自动连线生成设计文件,顶层文件,添加约束文件,综合应用后生成硬件平台,最后在SDK写软件。
总结:只要PS部分将值写入slv_reg寄存器,就可以产生对应的PWM波。而AXI_Lite的作用就是在某个时刻将PS部分的值写入该寄存器,PL部分再来读取该寄存器的值。或者PL部分将该值作为输出,由总线进行写入后PS部分通过函数读取。
该文混入了一个PWM的IP核的复用。对于AXI_Lite的理解造成了很大的误解。因此读者就姑且看之,笔者姑妄言之。
2020年12月1日