AXI总线

一文了解Zynq里面的AXI总线

在ZYNQ中有支持三种AXI总线,拥有三种AXI接口,当然用的都是AXI协议。其中三种AXI总线分别为:

AXI4:(For high-performance memory-mapped requirements.)主要面向高性能地址映射通信的需求,是面向地址映射的接口,允许最大256轮的数据突发传输;

AXI4-Lite:(For simple, low-throughput memory-mapped communication )是 一个轻量级的地址映射单次传输接口,占用很少的逻辑单元。

AXI4-Stream:(For high-speed streaming data.)面向高速流数据传输;去掉了地址项,允许无限制的数据突发传输规模。

说AXI4总线和AXI4-Lite总线具有相同的组成部分:

(1)读地址通道,包含ARVALID, ARADDR, ARREADY信号;

(2)读数据通道,包含RVALID, RDATA, RREADY, RRESP信号;

(3)写地址通道,包含AWVALID,AWADDR, AWREADY信号;

(4)写数据通道,包含WVALID, WDATA,WSTRB, WREADY信号;

(5)写应答通道,包含BVALID, BRESP, BREADY信号;

ZYNQ-7000 AXI 总线相关介绍

1、AXI 总线通道,总线和引脚的介绍
AXI接口具有五个独立的通道:
(1)写地址通道(AW):write address channel
(2)写数据通道( W): write data channel
(3)写响应通道( B) : write response channel
(4)读地址通道(AR):read address channel
(5)读数据通道( R): read data channel

五个通道图为:

读地址通道和读数据通道

读地址通道和读数据通道

基于AXI总线的DDR仿真模型

在xilinx平台下,经常要进行基于AXI总线的IP开发。尤其是当要使用DDR时,仿真就存在很大的问题了。之前我们的解决办法是修改接口,然后连接到一个模拟DDR的寄存器组中。但这样做一方面频繁修改接口,相当麻烦;另一方面仿真行为与下板行为不完全一样,不方便找出bug。所以我就决定建立一个DDR AXI 仿真模型来用于AXI总线下的仿真。其思想和原来的方法一样,都是在testbench中建立一个寄存器组来模拟DDR。只不过不修改接口,而是直接用AXI总线的接口来进行行为模拟。

首先,我们先来了解下AXI总线的主要接口与行为:

AXI总线信号说明:


写数据信号图

【科普】AXI总线简介

AXI全称Advanced eXtensible Interface,是Xilinx从6系列的FPGA开始引入的一个接口协议,主要描述了主设备和从设备之间的数据传输方式。在ZYNQ中继续使用,版本是AXI4,所以我们经常会看到AXI4.0,ZYNQ内部设备都有AXI接口。其实AXI就是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)的一个部分,是一种高性能、高带宽、低延迟的片内总线,也用来替代以前的AHB和APB总线。第一个版本的AXI(AXI3)包含在2003年发布的AMBA3.0中,AXI的第二个版本AXI(AXI4)包含在2010年发布的AMBA 4.0之中。

AXI协议具有如下特点:
. 总线的地址/控制和数据通道是分离的;
. 支持不对齐的数据传输;
. 在突发数据传输中只需要首地址;
. 同时具有分离读/写数据通道;
. 支持显著传输访问和乱序访问;
. 更加容易进行时序收敛

AXI4包含三种接口:
. AXI4——For high-performance memory-mapped requirements.

ZC702-自定义AXI-IP核实验

目的:
自定义一个IP核,通过AXI总线与ARM系统连接

环境:
Win7 32bit
Vivado2014.4.1
Xilinx sdk2014.4
开发板:
Zc702

第一步:
新建一个自定义的HDL模块,本实验新建一个16位加法器,保存为test.v,代码如下
module test(
input [15:0] a,
input [15:0] b,
input clk,
output reg [15:0] sum
);
always@(posedge clk)
begin
sum <= a +b ;
end
endmodule

第二步:
新建一个IP核,打开vivado,在tools中选中新建IP核

点击Next,

基于Zynq的JPEG图像压缩系统设计

作者:胡灿,樊旭,何顶新 华中科技大学 自动化学院

摘要: 介绍了基于Zynq平台实现的JPEG图像压缩系统。该系统利用Zynq片上AXI总线实现了ARM与FPGA核间高吞吐率的数据交互操作,并结合了ARM和FPGA在嵌入式系统开发中各自的优势,对软硬件功能的实现进行了明确的划分。通过具体的实验测试,本系统的通用性及高效性得到了验证,并且该系统可方便地移植到不同的实际应用中。

引言
随着多媒体技术以及通信技术的迅猛发展,高质量数字图像的应用越来越广泛,然而未经压缩的数字图像的数据量非常大,势必会给图像的存储和传输都带来很大的困难,因此对数字图像的有效压缩是不可或缺的。在现有图像压缩编码技术中,静态图像压缩编码标准JPEG以其显著的压缩效率、较低的图像质量损失以及较低的实现复杂度得到了广泛应用,是常用的国际标准。

基于MicroBlaze的AXI总线实时时钟IP核设计

作者:萨其日娜 内蒙古鲁电电力工程有限公司

摘要: 应用MicroBlaze软核作为CPU的硬件平台,在此平台上设计了基于AXI总线的通用实时时钟IP核。给出了创建IP核的过程和导入IP核的方法。介绍了实时时钟的IP核结构,给出了IP核的结构框图。介绍了实时时钟的原理,给出了实时时钟各个模块的核心代码。

引言
  MicroBlaze是可以嵌入到FPGA中的RISC处理器软核,具有运行速度快、占用资源少、可配置性强等优点,广泛应用于通信、军事、高端消费市场等领域。Xilinx公司的MicroBlaze 32位软处理器核是支持CoreConnect总线的标准外设集合。MicroBlaze处理器运行在150 MHz时钟下,适合设计针对网络、电信、数据通信和消费市场的复杂嵌入式系统。

基于Zynq的PMSM驱动控制系统设计

本文介绍了基于ZynqSoC的PMSM驱动控制系统,该控制系统使用ARM和FPGA相结合的形式实现了高性能、高集成度的控制算法。本系统中FPGA部分实现了计算并行度高、计算性能要求高的PMSM电流环矢量控制算法,ARM部分实现了可移植性强、算法种类多的速度控制算法、位置控制算法等。实验结果表明,该系统具备高性能和可扩展性,能够方便地应用到不同的实际项目中。

在机器人、机械臂和数控机床等工业控制系统中,永磁同步电机(PMSM)的驱动控制一直是此类控制系统的核心。而随着工业技术的发展以及PMSM应用的越来越广泛,PMSM的驱动控制系统对性能和精度的需求也越来越高。为了满足高性能、高精度等需求,有学者采用高性能的DSP作为软硬件解决方案,也有学者使用ARM微控制器作为系统解决方案,例如使用STM32实现的控制系统[3]。由于PMSM控制算法愈加复杂化、控制算法对控制器性能的要求不断提高,国外学者提出了使用FPGA作为PMSM的驱动控制系统解决方案[4],且效果显著。

Xilinx VDMA 24位流输出与32位AXI总线的内存流数据关系

测试方法采用了VDMA仅有MM2S通道, 内存中的图像帧是用MicroBlaze核写入的一个colorbar.

VDMA的mhs部分如下, 因为我的输出用了Digilent的HDMI核,而这个HDMI核是32位的,我自己写了个axis_24_32的位宽转换的ip,这个暂且按下不表:
BEGIN axi_vdma
PARAMETER INSTANCE = axi_vdma_0
PARAMETER HW_VER = 5.04.a
PARAMETER C_USE_FSYNC = 0
PARAMETER C_M_AXIS_MM2S_TDATA_WIDTH = 24
PARAMETER C_MM2S_LINEBUFFER_DEPTH = 4096
PARAMETER C_MM2S_LINEBUFFER_THRESH = 2048
PARAMETER C_INCLUDE_S2MM = 0
PARAMETER C_BASEADDR = 0x7e220000
PARAMETER C_HIGHADDR = 0x7e22ffff
BUS_INTERFACE S_AXI_LITE = axi4lite_0
BUS_INTERFACE M_AXI_MM2S = axi4_0
BUS_INTERFACE M_AXIS_MM2S = axi_vdma_0_M_AXIS_MM2S
PORT s_axi_lite_aclk = clk_100_0000MHzPLL0
PORT m_axi_mm2s_aclk = clk_100_0000MHzPLL0
PORT m_axis_mm2s_aclk = axi_hdmi_0_S_AXIS_MM2S_ACLK
PORT mm2s_fsync_out = axi_vdma_0_mm2s_fsync_out
PORT mm2s_buffer_almost_empty = axi_vdma_0_mm2s_buffer_almost_empty
PORT mm2s_buffer_empty = axi_vdma_0_mm2s_buffer_empty_to_chipscope_ila_0
END

问题:xps下构建的microblaze平台,使用AXI总线。芯片为spartan6 lx45,搭建的microblaze平台默认的时钟输入为差分时钟输入。能否将输入设置为单端的时钟输入?

同步内容