PS与PL之间AXI-Lite通信

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日
  • 0
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: axi-stream和axi-lite是两种不同的传输协议,它们在数据传输的方式和控制号上有所不同。在将axi-stream转换为axi-lite时,需要进行一些改变和调整。 首先,axi-stream是一种流式传输协议,它主要用于高速数据传输,没有固定的地址和控制号。而axi-lite是一种基于地址和控制号的传输协议,适用于低速数据传输和对外部设备的读写控制。 要将axi-stream转换为axi-lite,需要定义一个寄存器(或寄存器组),用于接收从axi-stream传输过来的数据。通过定义该寄存器的地址和控制号,可以对其进行读写操作,并将数据传输到外部设备。 其次,需要根据具体的应用场景,对数据的格式和处理进行调整。axi-stream一般通过数据流的方式传输,而axi-lite传输的数据需要按照特定的格式进行打包和解包。因此,在进行转换时,需要对数据进行格式转换和处理,以满足axi-lite的传输要求。 最后,需要修改相应的控制逻辑和状态机来适应axi-lite的读写操作。axi-stream主要通过数据流传输,而axi-lite需要定义读写控制号和状态机来实现读写操作。因此,在进行转换时,需要对控制逻辑和状态机进行修改,以实现axi-lite的读写功能。 总结起来,将axi-stream转换为axi-lite需要进行以下几个步骤:定义一个寄存器用于接收数据、调整数据的格式和处理、修改控制逻辑和状态机来适应axi-lite的读写操作。通过这些步骤,我们可以完成axi-stream到axi-lite的转换。 ### 回答2: 要将Axi-Stream转换为Axi-Lite,需要进行一系列的处理和转换。 首先,需要了解Axi-Stream和Axi-Lite之间区别Axi-Stream是一种高速数据传输协议,用于在数据流传输应用中实现高速数据传输。相比之下,Axi-Lite则是一种更简化、精简的协议,适用于低速、延迟敏感的访问要求。 要将Axi-Stream转换为Axi-Lite,需要将数据流转变为离散的数据包。可以通过添加一些额外的逻辑和寄存器来实现数据的提取和转换。 首先,需要添加一个接收缓冲区,用于接收Axi-Stream传输的数据。可以使用一个FIFO(First-In, First-Out)缓冲区来实现。将Axi-Stream输入端口连接到该缓冲区,并配置缓冲区的大小以适应数据传输的需求。 然后,可以使用状态机和控制逻辑从接收缓冲区中提取数据。根据Axi-Lite协议的要求,需要提取合适的数据字段,并将其放入适当的寄存器中。可以使用状态机来控制数据的提取和转换过程。 最后,在提取和转换数据后,可以使用Axi-Lite的地址端口和数据端口,将数据传输到Axi-Lite总线上。根据Axi-Lite协议的要求,需要设置地址、数据和控制号,以完成对寄存器的读写操作。 总体而言,将Axi-Stream转换为Axi-Lite需要添加接收缓冲区、状态机和控制逻辑,并通过Axi-Lite协议完成数据的提取和转换。这样可以实现从高速数据传输到低速数据访问的转换。 ### 回答3: Axi-stream和Axi-lite是两种不同的通协议,将Axi-stream转换为Axi-lite可以通过添加适当的逻辑和转换器来实现。下面是一种将Axi-stream转换为Axi-lite的方法: 1. 首先,需要添加一个转换器模块,该模块将负责将Axi-stream号转换为Axi-lite号。该转换器模块可以使用FIFO(First-In-First-Out)缓冲区来处理数据流,并将其转换为连续的数据列。 2. 转换器模块接收来自Axi-stream的有效数据包,并根据Axi-lite协议的要求生成对应的Axi-lite数据包。转换过程包括将Axi-stream的数据包拆分为Axi-lite的数据包,并提取有效数据和其他控制息。 3. 转换器模块还需要处理Axi-stream号的流速。由于Axi-stream的数据是连续流动的,而Axi-lite的数据包需要在时钟边沿进行传输,因此需要添加适当的时序逻辑来处理数据流速的差异。 4. 转换器模块还应该能够处理Axi-lite协议中的写入和读取操作。写入操作将由Axi-stream转换成Axi-lite写入操作,读取操作将由Axi-stream转换成Axi-lite读取操作。 5. 最后,通过适当的连接操作将转换器模块与Axi-lite总线连接起来,以实现从Axi-stream到Axi-lite的转换。 总结来说,将Axi-stream转换为Axi-lite需要添加一个转换器模块,该模块负责处理Axi-stream数据流的数据包和流速,并将其转换为符合Axi-lite协议的号。这样可以实现从Axi-stream到Axi-lite的数据通转换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值