你的位置:EETOP 赛灵思(Xilinx) 社区 >> >> 全部 >> 详细内容

基于FPGA的AXI4总线时序设计与实现

发布者:jackzhang 时间:2015-07-20 18:15:00

  摘  要: 针对AXI4总线设备之间的高速数据传输需求,根据AXI4总线协议,设计实现了一种基于FPGA的AXI4总线读写时序控制方法。以FPGA为核心,采用VHDL语言,完成了满足AXI4总线协议的读猝发方式数据传输和写猝发方式数据传输时序控制模块的设计。利用FPGA内部嵌入式系统提供的高性能数据传输接口完成AXI4时序控制模块的功能验证。实际应用表明,依据提出的设计方法实现的读写时序控制模块能够满足AXI4总线协议规定的时序关系,实现数据的高速正确传输,总线数据传输速率能够达到1.09 GB/s。

    关键词: AXI4总线;时序控制;FPGA

0 引言

    高级微控制器总线结构(Advanced Microcontroller Bus Architecture,AMBA)是一种应用于片上系统的总线结构。AMBA总线协议是ARM公司制定的用于片上系统IP互联与管理的一种规范,由于它是一个开放标准的协议,所以自从出现之后,其应用领域就超出了微控制器设备,已经广泛应用于各种ASIC和片上系统器件中。高级可扩展接口4(Advanced eXtensible Interface 4,AXI4)总线规范是ARM公司与Xilinx公司共同制定的新一代用于片上系统内IP互联的总线规范,是第4版AMBA规范定义的7个总线接口之一,用以满足普遍情况下的元件接口要求,为互联结构的实现提供了灵活性[1]

    本文通过对AXI4总线协议的分析研究,在充分了解其工作原理与工作过程的基础上,采用VHDL硬件描述语言实现了AXI4总线读猝发方式数据传输和写猝发方式数据传输时序控制模块的设计与编写,实现了FPGA逻辑与AXI4从设备之间的高速数据传输。

1 AXI4总线协议简介

1.1 AXI4总线协议特性与优势

    AXI4总线协议规定的数据传输方式是猝发式的,使用首字节选通方式,在独立的读写数据通道采用独立的地址、控制和数据周期进行数据传输,支持非对齐方式的数据传输,能够发出多个未解析的地址,从而完成无序的数据传输交易。

    AXI4总线协议的上述特性,使得其与其他总线协议相比较,具有比较明显的优势。首先,AXI4总线协议简化了不同领域IP的集成,将不同接口整合到一个接口中,简化了用户熟悉与开发的难度,从而提高了生产效率;其次,AXI4总线协议支持嵌入式、DSP以及FPGA各种电子设计领域的用户使用,具有很大的灵活性;最后,由于第三方EDA厂商与IP开发厂商普遍接受并采用了AXI4总线协议标准,从而使得基于AXI4总线协议的目标平台具有广泛的IP可用性[1-4]

1.2 AXI4总线协议信号集与时序关系

    AXI4总线协议规定5个不同的通道,分别是读地址通道(Read Address Channel,AR)、写地址通道(Write Address Channel,AW)、读数据通道(Read Data Channel,R)、写数据通道(Write Data Channel,W)和写响应通道(Write Response Channel,B)[5-6]。其中,读、写地址通道传输数据交互过程中需要的地址和控制信号;读数据通道传输从从设备到主设备的读数据以及相应读信息;写数据通道传输从主设备到从设备的写数据;写响应通道用于标识从设备响应主设备的写操作。主设备与从设备之间的数据传输分别用到从主设备到从设备的写数据通道和从从设备到主设备的读数据通道,从主设备到从设备的写数据交易过程中,从设备会通过响应通道向主设备反馈写操作是否完成。读地址通道与写地址通道都是从主设备到从设备。其读通道结构如图1所示,写通道结构如图2所示。

qrs1-t1.gif

qrs1-t2.gif

    AXI4协议的5个通道分别有各自的信号集合,各个通道在主设备与从设备之间进行数据交互的过程中,使用VALID信号与READY信号的握手机制,即信息源通过VALID信号表示该通道存在可用的有效数据或者控制信息;信息接收方使用READY信号表示该设备具备数据接收的条件[6-8]。每个通道的信号名称都以该通道的标识字母开头,例如,读地址通道的VALID信号与READY信号分别为ARVALID与ARREADY,其他通道同理。

    读猝发方式数据传输过程中的时序关系如图3所示。其中,ACLK是全局时钟信号,所有信号在时钟上升沿采样;ARADDR是读地址信号,该信号给出读猝发方式数据传输一次猝发操作的第一个传输地址;ARVALID为读地址有效信号,高电平表示读地址可用;ARREADY为读地址准备信号,该信号为高时表示从设备准备好接收地址和相关的控制信号;RDATA为读数据;RVALID为读有效信号,该信号为高表示读数据信号可用;RLAST为一次猝发操作中最后数据的指示信号,高电平表示一次猝发传输中最后一个传输数据;RREADY为读准备信号,该信号为高时表示主设备能够接收读取的数据。

qrs1-t3.gif

    写猝发方式数据传输过程中的时序关系如图4所示。其中,BVALID信号为高时表示一次写猝发操作完成;BREADY为高表示主设备可以接收响应信息;其余信号功能与读猝发方式类似,不再赘述。

qrs1-t4.gif

    需要注意的是,各通道内部的信号要严格满足相应的时序关系,但是各个通道之间的信号之间是异步关系,没有严格的时序要求。以图4为例,WVALID信号与WDATA信号可以出现在AWVALID信号和AWADDR信号之前,但是WVALID信号与WDATA信号之间、AWVALID信号与AWADDR信号之间必须满足图4中的时序关系。通道之间的信号对应是通过ID信号实现的,具有相同ID的读通道、写通道和响应通道传输的是一次猝发的数据,从而能够确保各个通道之间信号的异步性。

2 逻辑设计实现

    在充分分析AXI4总线协议的信号集合与时序关系的基础上,使用VHDL语言完成读猝发模块和写猝发模块的逻辑设计。

    读猝发模块逻辑设计流程如图5所示。模块接收到读操作开始信号后,通过对ARREADY信号与读地址个数的检测,判断是否可以进行读操作,从而生成读地址信号ARADDR及其有效信号ARVALID;通过对RREADY信号以及RVALID信号的判断实现读地址与读数据个数的计数操作,从而判断已经读出的地址及数据个数;数据读出后,通过写RAM信号将数据写入RAM中,从而完成对AXI4总线的读猝发操作。

qrs1-t5.gif

    写猝发模块逻辑设计流程如图6所示。模块接收到写操作开始信号后,通过对AWREADY信号与写地址个数的检测,判断是否可以进行写操作,从而生成写地址信号AWADDR及其有效信号AWVALID;同时通过对WREADY信号以及写数据个数的判断,生成写数据有效信号WVALID;待写入AXI4总线的数据事先存储在双口RAM中,通过生成读RAM的控制信号,从RAM中读出数据,与WVALID信号配合以后送给AXI4总线从设备,从而完成对AXI4总线的写猝发操作。

qrs1-t6.gif

3 测试分析

    对AXI4总线时序猝发读写操作逻辑模块的功能验证主要通过功能仿真和实际电路测试实现。

    首先进行功能仿真测试,功能仿真测试在ModelSim 6.4仿真环境下进行,利用VHDL语言编写测试用例,主要用来验证读写模块能否向从设备正确发出相关的信号。由于从设备反馈的信号不容易在测试用例中描述,所以从设备反馈的信号通过实际电路测试的方式完成。在实际电路中,利用ChipScope工具抓取从设备的反馈信号,同时与主设备发出的信号进行时序关系的对应,进而验证信号的时序关系是否符合协议规定。

    读猝发操作主要信号的波形如图7所示,从波形中可见,读地址通道与读数据通道之间是异步关系,两个通道通过ARID与RID两组信号确定同一次猝发操作。读地址通道主要信号波形放大后如图8所示,设置的初始读地址为0x10000000,每个猝发包含0x80个地址字节,从图中可见,读猝发模块能够正确将地址信息发送给从设备。从从设备中读出的数据写入主设备的RAM中,写RAM相关信号如图9所示,测试过程中,首先将从设备从0x10000000地址开始以4 B为单位写入初始数据,初始数据从0开始,每4 B数据加1。从图9中可见,读出的8 B数据正好是相邻4 B数据的拼接,即第一个数是0x0000000100000000,第二个数是0x0000000300000002,依此类推,从而能够验证数据能够正确从从设备读出到主设备。

qrs1-t7.gif

qrs1-t8.gif

qrs1-t9.gif

    写猝发模块的功能验证通过如下方式实现:利用写猝发模块向从设备的目的地址写入8 B固定数0xaaaa55555555aaaa,从设备将写操作之前的数据和写操作之后的数据反馈给上位机,通过反馈的数据判断是否正确从主设备写入从设备。

    上位机反馈的测试结果如图10所示,从设备的目的操作地址为0x10000000~0x10007fff,以4 B为一个操作单元。上电后首先读取目的地址的数据,其结果是随机的无规律数据;之后从设备将目的地址的数据进行初始化,写入从0开始的递增数据,写完后再读取目的地址数据,从而确认初始化数据已经正确写入;之后完成写猝发操作,将数据0xaaaa55555555aaaa写入目的地址,写操作完成后再读取目的地址的数据,已经从初始化的递增数据变成了写入的数据0x5555aaaa和0xaaaa5555,从而能够验证写猝发模块已经正确将数据写入从设备。

qrs1-t10.gif

    写猝发操作的信号波形如图11所示,从图中可见,写地址通道、写数据通道与写响应通道之间的信号之间是异步关系,各通道内部信号有严格的同步时序关系,与AXI4协议规定的时序关系一致。

qrs1-t11.gif

    在开始数据传输时,主设备将一个测试信号置为高,数据传输结束后将该信号电平拉低,利用示波器测量该信号的高电平宽度,即可确定数据传输的速率。通过测试可知,32 KB数据传输完毕需要约30 μs,传输速率为1.09 GB/s。

    通过上述测试分析可知,本文设计实现的数据传输模块满足AXI4总线协议的时序要求,能够正确实现AXI4总线主从设备之间的高速数据传输。

4 结论

    AXI4总线协议作为嵌入式系统内部的常用总线协议,得到第三方EDA厂商与IP开发厂商普遍接受与采用。为满足AXI4总线主设备与从设备之间的数据传输要求,本文通过对AXI4总线信号集合以及总线时序的分析研究,设计并实现了满足AXI4总线时序要求的读写控制模块,采用VHDL语言完成模块的编写。通过ModelSim仿真软件仿真验证和电路板实际测试分析表明,本文设计实现的AXI4总线时序模块符合总线规范,能够满足高速数据传输的实际需求,测试结果表明,数据能够在主从设备之间正确传输,传输速率能够达到1.09 GB/s,具有较高的工程应用价值。

最新课程

  • 深入浅出玩儿转FPGA

    本视频基于Xilinx公司的Artix-7FPGA器件以及各种丰富的入门和进阶外设,提供了一些典型的工程实例,帮助读者从FPGA基础知识、逻辑设计概念

  • 从零开始大战FPGA基础篇

    本课程为“从零开始大战FPGA”系列课程的基础篇。课程通俗易懂、逻辑性强、示例丰富,课程中尤其强调在设计过程中对“时序”和“逻辑”的把控,以及硬件描述语言与硬件电路相对应的“

  • Verilog基础及典型数字

    课程中首先会给大家讲解在企业中一般数字电路从算法到流片这整个过程中会涉及到哪些流程,都分别使用什么工具,以及其中每个流程都分别做了