基于AXI4的卫星接收机DDR3多端口存储的设计*

2016-08-18 01:46张宇嘉杨晓非姚行中
电子器件 2016年3期
关键词:端口总线控制器

张宇嘉,杨晓非*,姚行中

(1.华中科技大学光学与电子信息学院,武汉430074;2.第二炮兵指挥学院精确制导技术实验室,武汉430012)

基于AXI4的卫星接收机DDR3多端口存储的设计*

张宇嘉1,杨晓非1*,姚行中2

(1.华中科技大学光学与电子信息学院,武汉430074;2.第二炮兵指挥学院精确制导技术实验室,武汉430012)

针对卫星图像实时接收与处理系统提出的实际应用需求,采用Xilinx Virtex 6系列FPGA为平台设计了一种基于AXI4总线结构的多端口DDR3 SDRAM存储控制器。允许多模块实时对单一DDR3存储器进行访问,满足现有系统中不同模块需同时缓存各阶段卫星图像的需求。实际功能验证和ChipScope采样读写信号证明了系统的可行性与可靠性,计算得出最大传输带宽达6.0 Gbit/s、最高带宽利用率在70%~93%之间。应用AXI4总线结构,本多端口存储控制器在高速数据读写系统中具有很高的拓展应用价值。

存储控制器;多端口;AXI4;DDR3 SDRAM;FPGA;卫星图像接收处理

基于FPGA的卫星图像实时接收与处理系统中,需要采用多级流水线处理模块对卫星图像连续处理,流水线的每一级实现其中一项功能(例如:解扰、帧接收、包处理、解密、解压、辐射校正等[1]),并且多级流水线大都需要使用内存来缓存一次卫星图像。遥感卫星CCD图像巨大,片上存储难以满足需求。虽然Xilinx的Virtex 6系列开发平台外扩了容量较大、速度较快的DDR3 SDRAM存储器,解决了存储容量问题,但外扩的DDR3 SDRAM数量有限,而且通常只有一套数据访问端口,不能满足多个模块对DDR3存储器的同时(或准同时)访问需求。此前的SDRAM多端口解决方案中[2-4],较多使用NPI总线和UI接口,比如曹一江等[5]设计的基于NPI总线的片外存储器通信接口IP核最大带宽可达743 Mbit/s,但在传输数据单元块减小时带宽下降明显;樊博等[6]使用UI接口,相对容易操作,与DDR3通信时最大带宽可达3.8 Gbit/s,但带宽利用率尚有待提高。以上方法结构上较为简单直观,但由于没有成熟协议支持,不能很好地兼顾速度与可靠性,对主控模块数据输入限制性要求较多,系统鲁棒性较弱。为解决这些问题,本文设计了基于最新的AXI4总线的多端口DDR3存储控制器,完成多个模块与DDR3间的实时通信。Xilinx在Spartan 6和Virtex 6系列FPGA中首先使用AXI4协议的知识产权(IP)核,并在之后的7系列FPGA中大量应用,让开发过程更加高效灵活,并使设计拥有更强的可移植性。因此,采用AXI4总线,以分时复用的方式解决多模块同时访问存储器的问题。

项目来源:第二炮兵预先研究基金项目(EP121007)

收稿日期:2015-07-23修改日期:2015-08-18

1 系统设计

1.1AXI4总线

AXI4是ARM公司开发的第四代AMBA总线中新加入的一种总线协议,适合高带宽、低延时、多部件接口。AXI4是一种多通道结合突发传输的总线,允许最长256位突发长度的数据传输,拥有分离的写地址、写数据、写响应和读地址、读数据通道,如图1所示。另外,这种结构也支持非对齐数据传输和乱序传输。

图1 AXI4总线五通道结构图

AXI4总线采用单向分离通道的并行体系结构,统一了通道内数据流向,降低了各信号间的耦合,可以同时进行读写,大大减少了延时。AXI4总线数据传输过程中,地址通道握手延时2时钟周期,读写命令延时1周期,在时钟频率为200 MHz、突发长度为16的情况下,每个通道数据率理论上可达168.4 MT/s,在读写数据位宽256 bit时,带宽可达5.4 Gbyte/s。比较本卫星图像接收处理系统使用的理论总带宽6.4 Gbyte/s的DDR3存储器,AXI4总线完全能够满足多端口控制器中每个端口的带宽需求。通过提高时钟频率、增加突发长度和拓宽读写数据位宽,还可以进一步增加带宽。

1.2基于AXI4总线的多端口存储控制系统总体架构

多端口存储控制器的总体系统架构如图2所示。

图2 系统架构图

系统主要由DDR3 SDRAM和MIG、AXI4互联体、AXI4读接口和写接口3部分组成,各部分功能如下:

(1)DDR3 SDRAM和存储接口生成器(MIG)IP核。主要负责将用户对DDR3的读写请求转化为DDR3能直接处理的命令,并保证DDR3稳定可靠地工作。在DDR3工作前,需要对其初始化,而且在读写DDR3的过程中,除了接收读写请求并进行译码外,还需完成任务调度、时序同步、自动刷新等功能,所以,这部分电路的设计较为复杂,开发时间较长[7]。为此,Xilinx提供了MIG IP核[8],它经过了严格的测试,可高效稳定地工作,开发者只需将MIG嵌入自己的代码中即可,大大减少了工作量。MIG 3.6版本首次提供了AXI4用户逻辑接口,相较之前的Native和UI接口,其拥有规范的协议,提高了通用性,更适合对外扩DDR3的多端口控制。

(2)AXI4互联体。由于DDR3只有一套数据访问端口,因此,MIG也只提供一套AXI4总线接口。然而,本文的一个核心问题是要求多个模块对同一存储器的不同区域进行同时(或准同时)地读写,AXI4互联体可以将多个读写控制模块与一个MIG相连,在其内部完成事务仲裁,从而实现了单个MIG能处理多端口读写请求的功能。这样的N-1互联结构是实现多处理模块同时(或准同时)访问唯一的DDR3存储器的基础[9]。

(3)AXI4读接口和写接口。图2中共有N个写接口和N个读接口,它们的功能是按用户逻辑读写要求,生成符合AXI4协议时序的地址、控制和数据信号。由于本设计中采用分离的只读、只写接口,每个接口面向AXI4互联体和用户逻辑时只有单向的数据流,不仅精简了接口逻辑,而且提高了带宽。读接口和写接口均使用双口RAM作为缓存,用以解决可能存在的跨时钟域问题,并能满足卫星数据预处理中的随机读写需求。

图2中,各模块之间的信号流向用箭头标出。实心箭头表示控制信号,空心箭头表示地址和数据。MIG与AXI4互联体之间、AXI4互联体与读接口和写接口之间的粗空心箭头表示这些信号符合AXI4协议。用户逻辑将数据写入 DDR3或从DDR3中读出时,向读、写接口发出读写请求信号。读、写接口接到请求后,将用户逻辑准备在双口RAM缓存中的数据按AXI4协议要求封装后,发送给AXI4互联体,或按AXI4协议要求向AXI4互联体发送请求,并将AXI4提供的DDR3读出数据解封后存入双口RAM缓存,备用户逻辑读出。AXI4互联体在收到读、写接口请求后,仲裁决定某一路信号取得当前总线控制权,将其接入MIG的AXI4用户逻辑接口,最终由MIG完成直接控制DDR3读写的任务。

2 设计实现中的关键问题

2.1读接口和写接口模块设计

读接口和写接口模块是本设计中的关键部分。按照AXI4协议封装好的地址、控制和数据信号才能被AXI4互联体正确接收和处理。为保证传输的可靠性,AXI4协议要求地址和数据通道都需确认握手成功后才开始工作[10]。表1列举了所有五条通道的握手信号对,均为一个 VAILD信号和一个READY信号。通道源端生成VAILD信号指示地址、数据或应答等通道信号已准备好,而通道靶端生成READY信号表明可以进行通道信号接收。当握手对READY和VAILD均有效时,开始传输。图3为几种握手成功的时序图。在情况1中,T1时刻通道信号已准备好,源端置位VAILD;靶端在T2时刻置位READY;源端必须保证T3时刻传输开始前通道信号保持稳定。情况 2中,T1时刻靶端置位READY,表示靶端准备好接收通道信号;源端在T2时刻准备好通道信号并置位VAILD,传输在T3时刻开始。情况3中源端和靶端在T2时刻同时分别准备好了通道数据、置位VAILD和READY信号,则传输在T2时刻即开始。需要注意的是,为防止产生死锁,通道源端不能在置位VAILD前等待READY信号置位,而靶端可以在置位响应信号READY前等待VAILD置位。

表1 各通道握手对信号

图3 握手信号时序图

读、写接口模块通过读、写状态机来控制产生符合AXI4协议的各通道信号。AXI4协议采用基于突发的数据传输方式,主设备只需要提供突发传输的首地址,剩下的数据就会依次写入后续地址,具体数据量由突发长度和数据端口位宽决定。突发传输降低了地址通道占用率,减少了传输过程中的冗余周期,极大地提高了数据传输效率。图4是读写接口的状态转移图。当用户逻辑提出写DDR3请求时,写状态机开始突发写,进入SET_ADDR状态,在写地址通道中准备好要写入DDR3的地址,并置位握手信号AWVAILD。等待握手响应信号AWREADY有效后,写地址设置完成,准备打开写数据通道,进入AXI_WRITE状态,并在写数据通道内准备好要写入的数据,同时置位WVAILD信号。每个WVAILD和WREADY信号共同有效的周期表示当前写数据通道内数据已写入,这时需要按同样方式准备下一个数据写入。当一次突发写操作完成时,状态机生成WLAST信号标识一次突发的最后一个数据。如果单位数据片(本设计中为一帧图像数据)写入尚未完成,则状态机进入IDLE状态准备进行下一次突发写操作。如果已经完成单位数据片的写入,则进入NEXT_FRAME状态,等待写接口与用户逻辑之间的RAM缓存准备好下一个数据片后,进入IDLE状态继续完成写操作,直到所有的数据都写入完成。读状态机和写状态机的结构类似,在收到读数据请求后,读地址的控制与写过程完全相同,但由于读数据通道方向与写数据通道方向相反,所以读状态机只需要检测RVAILD信号和RLAST信号来判断读通道数据是否准备好和单次突发是否完成。类似写操作,在完成单次突发后,再判断是否完成单位数据片读出,如果是,则进入NEXT_FRAME状态等待用户逻辑完成对读接口RAM缓存中数据的读取后继续读操作,否则直接进入IDLE状态准备进行下一次突发读操作,继续突发读过程,直到所有数据读取完成。

图4 读、写接口状态转移图

2.2总线仲裁

因为DDR3存储器只有一套数据访问端口,所以同时只能有一个主设备能取得DDR3控制权。因此在多端口控制下,需要仲裁决定哪个主设备取得总线控制权,并完成总线切换。AXI4互联体在事务仲裁机制方面,可以选择固定优先级或轮循优先级。固定优先级的仲裁方式事先为每个主设备指定了确定的优先级,多个主设备同时提出访问请求时,总线控制权将会交付给拥有最高优先级的设备。在轮循优先级的仲裁方式中,每个主设备的优先级在其访问请求被接收后降至最低,其他主设备的优先级则会递增一位,总线上的主设备最多等待所有其他主设备完成一次突发传输后,就可以得到总线的控制权。相比而言,固定优先级原理简单易懂,适合简易灵活的小系统,但优先级一经确定无法更改,如果高优先级主设备占用总线时间过长,则无法保证较低优先级主设备的读写延时和带宽,影响多端口访问的实时性。轮循优先级虽然在某个时刻各个主设备有不同的优先级,但由于优先级不断循环,整体上看是一种公平的仲裁机制,符合实际应用中每个端口需要实时访问DDR3的要求。本设计对使用两种仲裁机制下系统的表现做了测试,结果表明在有效读写带宽接近DDR3理论带宽时,固定优先级仲裁下低优先级端口数据需等待高优先级端口数据传输完全结束后才进行,无法保证实时性。最终本设计选择了使用表现更好的轮循优先级仲裁方式。

3 实验方法和结果

3.1实验方法

实验目的:(1)基于AXI4的单DDR3多端口存储在卫星接收处理系统中读写的正确性和实时性;(2)读写速度。

实验平台:本设计选用Xilinx的Virtex 6系列ML605评估板作为硬件开发平台,FPGA型号为XC6VLX240T。DDR3 SDRAM选用一片Micron公司的SODIMM封装的MT4JSF6464H芯片,容量为512 Mbyte,物理数据线宽64 bit,系统工作频率200 MHz,理论数据率800 MT/s[11]。系统中所有的模块均使用Verilog HDL语言在Virtex 6 FPGA上实现。

实验过程:卫星图像接收处理系统进行目标识别、区域划分等处理前,需要进行去除条带噪声等图像预处理[12]。目前采用的条带噪声去除方法要求输入数据为纵向条带灰度数据,所以需要缓存整幅图像以将接收到的横向的RGB图像数据转化灰度数据后换纵向读出。之后的去噪过程中也需要暂存中间数据,最终将经过处理的图像通过PCIE接口传至PC上位机显示。图5是采用AXI4多端口存储控制器完成以上过程的系统框图。整个系统一共使用6个端口访问DDR3,其中转换为纵向图(从DDR3读数据)、转换为浮点数(数据写入DDR3)、调整像素值(从DDR3读数据)和完成去噪(数据写入DDR3)这4步需要访问DDR3的操作在4个读写端口上同时(或准同时)进行。

图5 卫星接收机系统框图

读写速度测试主要计算系统有效带宽和带宽利用率。一般分析中使用单次读写(比如一个突发)的数据量除以单次读写的时钟周期来计算最大有效带宽,并未考虑各次读写间的等待时间。但在多端口同时读写过程中,系统速率接近极限时,并不能保证各单次读写之间的等待时间相同。本设计中使用读写完成全部512 Mbit数据消耗的总时间计算有效带宽,如式(1),结果更符合实际情况。本设计中使用的DDR3工作列地址选通脉冲延时CL(CAS Latency)为6个时钟周期,对应数据率为800 MT/s,理论带宽为6.4 Gbit/s。实际带宽利用率为有效带宽与理论带宽的比值,如式(2)。

有效带宽=(读/写数据总量)/消耗总时间 (1)实际带宽利用率=(有效带宽/理论带宽)×100%(2)

在实验数据的采集中,采用Xilinx提供的在线逻辑分析仪(ChipScope),分别采集每个端口相关读、写通道的地址、数据和控制信号,其波形如图6所示。

图6 ChipScope采样结果

3.2实验结果分析

图6给出了ChipScope采样各通道信号的时序图。通过图片上部红框内连续不断的数据波形可知,处理过程中4个端口能实时读写数据,各个通道延迟大致平均。对比图6下部具体读写数据可知,S01和S03端口写入的数据(右边红框)能正确读出到对应S00和S02端口的数据线(左边红框)上。

基本读写功能测试中,将数据从一个端口写满DDR3,再将写入的数据全部读回。在读写接口数据位宽一定,单位数据片大小从64 byte倍增到512 kbyte的过程中,读写带宽变化低于4%,表明单位数据片大小基本不会影响有效读写带宽。分析认为这是由于读写接口均为单向(只读/只写),较为精简的读写状态机完成单位数据片转换逻辑过程的冗余周期很少(1个周期)所致。而读写接口数据位宽几乎与有效带宽成正比,因此可以通过增加读写接口数据位宽(面积)换取更高的有效带宽(速度)。

多端口竞争读写测试分多端口全写入、多端口全读出和多端口读写混合测试3部分进行。表2列出了系统有效带宽的测试结果。在写数据32 bit宽时,单端口写入有效带宽为581 Mbit/s,8端口同时写入时,总有效带宽达1.9 Gbit/s;写数据增加到256 bit宽时,单端口写入有效带宽即可达4.0 Gbit/s,超过2端口写入时,总有效带宽保持在4.5 Gbit/s,可认为达到实际最大写入带宽。多端口全读出测试中,读数据32 bit宽时,单端口读出带宽为226 Mbit/s,8端口时达1.8 Gbit/s;读数据256 bit宽时,单端口读出带宽为1.9 Gbit/s,超过4端口读出时,可达实际最大读出带宽6.0 Gbit/s。在多端口读写混合测试中,分别进行了2端口一读一写、4端口两读两写和8端口4读4写3种测试,在读写数据32 bit宽时,带宽分别为214 Mbit/s、845 Mbit/s和1.2 Gbit/s;而读写数据位宽增加到256 bit时,带宽分别达到3.4 Gbit/s、4.1 Gbit/s和5.1 Gbit/s。

在保证数据正确稳定的前提下,多端口存储控制器的实际带宽利用率在多端口写、多端口读和多端口读写混合测试中最高分别达到了70.3%、93.4% 和80.2%。测试表明,本设计实现的多端口存储控制器能够满足多个模块同时访问DDR3存储设备的速度要求,且拥有很高的带宽利用率。

表2 带宽测试结果

3 结果与讨论

本文设计实现的基于AXI4总线的多端口存储控制器解决了卫星接收机图像处理系统不能完成多模块同时访问DDR3的问题,在现有的基于Virtex 6

系列FPGA平台的卫星接收机系统中取得了良好的应用效果。性能测试结果表明该多端口存储控制器能稳定高效的完成多模块对DDR3的访问,有效带宽高达4.5 GB/s-6.0 GB/s,带宽利用率高达70.3%~93.4%,能满足卫星图像接收与处理过程的实时性要求。作为最新的业界标准,规范的AXI4总线接口的使用也大大增加了系统的可扩展性,使之能适用于各种需要多设备访问DDR3存储器的应用中。

[1] 张允,杨晓非,符凌静,等.基于PCIE总线的卫星遥感图像传输系统设计[J].计算机测量与控制,2013,21(7):1874-1877.

[2] 刘洋,林争辉.视频解码芯片中DDR SDRAM控制器的设计[J].计算机工程,2006,32(1):240-241.

[3] 谢宜壮,龙腾.基于FPGA的SAR信号存储与预处理模块设计与实现[J].信号处理,2010,26(2):180-183.

[4] 范勇,舒保健,郝跃.多核共享存储控制器中AMBA-AHB总线接口的设计[J].电子器件,2011,34(3):312-315.

[5] 曹一江,马宁,王建民.MPMC高速存储器接口IP核设计[J].哈尔滨理工大学学报,2012,17(6):75-80.

[6] 樊博,王延东,孙宏海,等.FPGA实现高速实时多端口SDRAM控制器的研究[J].计算机工程与应用,2013,49(12):60-64.

[7] JEDEC.DDR3 SDRAM Specification[S].2010,JESD79-3E.

[8] Xilinx.Virtex-6 FPGA Memory Interface Solutions[S].2013,UG406.

[9] Xilinx.AXI Reference Guide[S].2012,UG716.

[10]Arm.Amba Axi and ACE Protocol Specification[S].2013,IHI 0022E.

[11]Micron.DDR3SdramSodimmFeatures[S].2007,MT4JSF6464H-512 MB.

[12]Carfantan,H.Statistical Linear Destriping of Satellite-Based Pushbroom-Type Images[J].IEEE Transcations on Geoscience and Remote Sensing,2010,48(4):1860-1871.

张宇嘉(1990-),男,汉族,华中科技大学光学与电子信息学院硕士研究生,主要研究方向为数字电路设计,zhangyujia.hust@gmail.com;

杨晓非(1963-),男,汉族,教授,华中科技大学光学与电子信息学院副院长,微电子学与固体电子学博士生导师,主要研究方向为微磁传感器、智能系统,yangxiaofei@mail.hust.edu.cn。

Implantation of Satellite Receiver Multi-Port Memory Access to Single DDR3 Based on AXI4 Bus*

ZHANG Yujia1,YANG Xiaofei1*,YAO Xingzhong2
(1.School of Optical and Electronic Information,Huazhong University of Science and technology,Wuhan 430074,China;2.Laboratory of Precision-Guided Technology,Second Artillery Command College,Wuhan 430012,China)

To meet the needs of real time satellite image receiving and processing system,we implanted the multiport DDR3 SDRAM memory controller based on AXI4 bus on the platform of Xilinx Virtex 6 FPFA.Different modules are available to access to the unique DDR3 memory in real time,which allows multiple processing modules to cache satellite images at different stages at the same time.Evaluated by Xilinx ChipScope software and the image processing results,feasibility and reliability of the system has been proved.Maximum bandwidth reaches 6.0 Gbit/s and maximum utilization rate up to 70%~93%according to calculation.The multi-port memory controller can be used in extended high speed read&write applications with this standard AXI4 bus structure.

memory controller;multi-port;AXI4 bus;DDR3 SDRAM;FPGA;satellite image receiving and processing

TP334.4

A

1005-9490(2016)03-0617-06

EEACC:6280G;642010.3969/j.issn.1005-9490.2016.03.023

猜你喜欢
端口总线控制器
工商业IC卡控制器改造为物联网控制器实践
一种端口故障的解决方案
一种基于CAN总线的误码测试方法
端口阻塞与优先级
系统网络端口安全防护
CAN总线并发通信时下位机应用软件设计
基于CAN总线的水下通信系统设计
卫星三端口DC-DC变换器技术综述
模糊PID控制器设计及MATLAB仿真
MOXA RTU控制器ioPAC 5542系列