基于Zynq的高速数据记录仪的设计与实时性分析

2020-02-27 12:34杜金艳
计算机测量与控制 2020年1期
关键词:实时性串口传输

杜金艳

(天津津航计算技术研究所, 天津 300308)

0 引言

目前,在一些高性能、高可靠性的电子设备上,为了分析系统参数,查看产品的工作过程状态等原因,在大系统上通常都安装了数据记录仪。而作为无人机载数据记录仪,则是在无人机飞行过程中,实时监测并记录飞行数据及设备的状态信息[1],分析系统参数不可缺少的设备。

根据某型无人机系统的总体要求,在该无人机载系统的初期研制阶段,为了监测无人机的各设备的性能指标,在实际飞行试验过程中都要装有数据记录仪,然而对于无人机载系统,又由于结构复杂,各种器部件较多,各个系统又由于功能不同,所采用的通讯方式也不尽相同,使得各硬件接口通讯速率不一致,最终导致每个设备接口的数据量有所差别[2]。因此,开展了高速率、多接口、大容量并行结构的数据记录仪设计和研究,对加快无人机的研制进程、缩短研制周期、提高武器性能,具有十分重要的意义[3]。

1 系统架构及原理

实时性指标是作为数据记录仪的最重要的性能之一,即作为记录仪,要完整记录所有设备接口接收到的数据,且不允许记录时丢帧[4]。通常,在实际的设计系统中,系统的硬件平台设计和软件优化这两个方面则是影响系统实时性指标的主要因素。在工程设计阶段,有很多实际因素要需要考虑,其中包括设备的研制成本、研发周期及可靠性等诸多方面,所以,一般硬件平台的设计要选择成熟度高、设计简单的方案,而当硬件平台设计完成后,硬件接口通讯的处理方式、软件优化程度都会对系统实时性的提高起着决定性作用[5]。下面首先对硬件平台进行分析。

1.1 系统架构

Xilinx公司的Zynq芯片XC7Z045,集成了ARM Cortex A9 双核( PS,processing system)、以及可达最多相当于500多万个逻辑门可编程逻辑( PL,Programmable Logic)单元,它能够简单灵活地用于各种目的的应用[6]。Zynq-7000芯片系列的架构为用户提供了一个开放式的设计环境,在可编程逻辑中,丰富的接口便于双核Cortex-A9MPCore、及并行加速功能的开发,从而加速了产品开发进度。

本系统的数据处理部分设计采用了ARM + FPGA架构的Zynq-7000芯片,该设计是以ARM Cortex A9处理器为核心,FPGA可编程逻辑部分作为扩展子系统,实现各种硬件接口的通讯协议,两者之间使用高效的AXI( advanced extensible interface) 总线互接[10],DDR3作为接收数据存储的中间站,最终要通过SRIO高速通道转存至数据存储板,网络接口作为记录数据的回放通道;电源管理部分产生各器件所需的电压种类,并进行电源管理。这样,通过一起进行软硬件协同来实现系统各个接口数据的高速采集、传输,同时为缩短产品的研制周期,系统中的数据存储模块则采用成熟的技术,货架模块产品,在此不做过多描述。

图1 系统结构框图

1.2 系统原理

在图1的系统架构中,Zynq-7000芯片中的PS(ARM)端作为数据处理模块的主控制器,它负责管理和控制各个硬件接口数据的接收和转存工作,同时DDR3内存颗粒用来做接收数据的大容量缓存。数据处理模块的工作流程如下:Zynq-7000芯片中的PL(FPGA)实现与各个硬件外部接口通讯的功能,还要实现SRIO高速接口与数据存储板通讯,它与PS是通过AXI总线互联,AXI总线协议是基于冲突传输的,提供了单一的接口定义,地址通道携带了控制消息,用于描述被传输的数据属性,数据传输里实现“主”到“从”的传输是通过写通道,写响应通道来完成一次“从”使用写传输;读通道用来实现数据从“从”到“主”的传输,它可以很方便的实现几种典型的系统架构拓扑。PS(ARM)则根据接收数据的数据量和数据速度要进行分别处理,同时PS(ARM)端还要及时将PL(FPGA)缓存的接收数据搬移到DDR3中,避免缓存数据被覆盖;与此同时,PS(ARM)还要找到并利用接收数据的空闲时间,调度SRIO模块接口,及时的将数据转移到数据存储模块中,避免异常情况下的数据丢失。

2 设计需求分析

根据Zynq-7000芯片的强大的处理能力,在搭建的系统硬件平台上,如果采用ARM处理器配合FPGA按接口顺序完成数据采集,会由于硬件接口接收的数据量和传输速度不相同,导致系统接收丢失数据,从而实时性得不到保证。在此要求下,就要发挥FPGA并行处理的能力,对各个硬件接口并行处理数据,来实现对数据处理的提速。因此,这个系统设计对Zynq-7000芯片的PL并行设计和PS软件的数据处理设计均提出了较高的要求[7],同时要发挥软硬件协同的优势。

2.1 需求分析

在进行Zynq-7000芯片的PL设计时,首先要分析各个对外硬件接口的时序需求,才能保证设计实现能够满足系统的实时性要求。首先,对于接收数据的PCM同步串口,它的传输数据量中等,每帧64个字节,传输时钟为2.56 MHz,虽然传输速度不太高,但在产品加电期间一直会有数据传输,数据存储总量还是很可观的,因此,FPGA要对接收数据帧进行多包缓存,缓解ARM频繁读取该数据缓存,这样就不会过多占用ARM的处理时间;其次,对于同步串口传输的数据,传输的数据量大,每帧数据量4 K字节,8 Mbps的波特率,数据的传输周期为10 ms,同样在产品加电期间也一直进行数据传输,作为FPGA无法缓存太多的接收数据,因此,需要ARM及时将数据取走,避免丢失数据帧;最后,对于Cameralink图像传输接口,需要接收的图像数据量巨大,每幅图像数据为6 600*4 401*2字节,大小约为60 MB,数据传输周期为3 s,其中只有1 s有有效数据传输,其余2 s无数据传输,是空闲时间,在产品加电期间,图像数据传输时间约为200 s,因此Cameralink图像接口的数据是实时性要求最高的,系统要优先处理;对于SRIO高速接口要及时将数据传输到存储板,更要尽量少占用ARM的处理时间;对于1553等其他接口速度和数据处理实时性要求不高,软件正常处理即可。

2.2 时间剖面

通过以上对各个硬件接口需求进行分析,可以得到几个关键硬件接口传输数据时间维度,如图2,以时间为横轴,各个时间段的数据传输密度是不同的,通过图可以更清晰的看到在图像数据1 s的传输时间里,数据量达到最大。因此,要充分利用接口数据传输的各个空闲时段,关键是在图像传输的空闲2 s时间段,要把同步串口和PCM硬件接口的数据接收完成,如果有可能还要完成数据存储。在实际产品的工作过程中,由于同步串口数据的传输速度,在其接收和存储过程中会被图像数据流多次打断,这个情况从上图也可以看到。因此,最关键的是在保证图像数据优先接收的同时,要保证同步串口数据和PCM接口数据不丢失。

图2 接口传输数据时间框图

3 硬件设计

按照硬件接口数据传输的速度及实时性的要求,要进行数据处理优先级排队,根据上述分析,软硬件要优先处理接收的图像数据,当PS接收到完整的一帧图像数据时,SRIO高速接口要及时将数据传输到存储板;同时,PS要利用图像数据接收的空闲时间处理同步串口数据和PCM接口数据,最后,如果系统有需要,再利用空闲时间偶尔处理一下其他接口的数据。

3.1 图像数据

对于Cameralink接口传输的图像数据,由于一幅图像数据量太大,FPGA的内部缓存不能存储完整的一帧图像数据,因此,就要将一帧图像数据按照二维的“行”和“列”进行分解,FPGA设计按照图像的“行”来进行存储,每行数据为6 600*2个字节,因此,在FPGA内部开设8 K*16 bit的RAM空间作为一行数据缓存,同时还要防止丢失数据,设置A/B缓存来乒乓缓冲,当FPGA接收到一行图像数据时,放到A缓存,及时产生“行”中断信号通知ARM,ARM接收到“行”中断信号后,启动DMA把数据从缓存搬移到DDR3中,在这个过程如果再来图像数据,要放到B缓存;同时,PL还要记录图像数据的“行”和帧的各种状态,包括图像数据的行数、列数等参数供ARM来查询。

涉及到进行高速数据传输时,主要是应用DMA功能。DMA主要采用的是PL侧的AXI CDMA核,ARM设置传输的源地址和目的地址、以及传输的数据长度,ARM通过AXI-lite接口(AXI-GP)向AXI CDMA发送指令,AXI CDMA则是通过Zynq的AXI-HP通路和DDR3交换数据,PL侧是通过AXI-S来读写DMA的数据。

由于传输的图像数据是16 bit,而ARM的总线宽度是32 bit[9],如果FPGA对图像数据不进行任何处理,这样在进行DMA传输时,传输总线的有效传输效率只有50%,浪费了一半的带宽,因此,FPGA还要将图像数据组合成32 bit,提高总线的DMA传输效率。具体实现框图如下。

图3 PL接收图像数据框图

3.2 串口数据

对于同步串口数据和PCM硬件接口的数据,经过上述需求分析,也需要对接收数据进行A/B乒乓缓存处理,ARM应用查询方式处理。PL侧同步串口数据及PCM接口接收数据框图如图4,两个接口的处理方法类似。

图4 FPGA接收串口数据框图

当串口电路工作在接收模式时,串行数据和串行时钟同时进入到串并转换器,FPGA自动检测帧起始标志,并判断帧头格式。当接收到正确的帧头后,控制CRC校验使能有效,并根据接收到的数据帧长度对数据进行接收,将接收数据缓存到FPGA内部RAM,同步串口和PCM接口开设的缓存大小均为4KB。数据接收完成后,进行CRC校验并记录相应硬件状态来供PS查询,当PS在空闲时间查询到接收数据完成标志后,把PL内部缓存数据搬移到DDR3中。发送模块工作原理也相似,当ARM想发送数据时,先把发送数据填充到发送缓冲区,然后启动发送命令,FPGA按照发送格式自动发送帧头和数据,发送完成进行CRC校验,置发送完成标志。

在实际系统工作时,同步串口数据在搬移到DDR3的过程中,在同步串口的10 ms周期里,可以计算得出,大约会传输图像数据约45行。因此,同步串口数据搬移过程会被图像数据流频繁打断,当该过程被接收图像数据打断后,PS主流程会先处理图像数据,当搬移完一行的图像数据后,再回来继续处理同步串口数据。因为同步串口是A/B乒乓缓存,若46行图像数据处理的时间小于同步串口一帧的数据传输周期,同步串口数据就不会丢失。

这个同步接口未采用FPGA内的DMA方式进行传输,主要是考虑到:如果同步接口的DMA和图像的DMA同时传输时,都会占用DDR3的总线,都会占用ARM的AXI-GP端口,这样不能保证图像数据存储的优先性,因此该接口未采用DMA。后续可以对此进行验证。

3.3 SRIO高速接口

SRIO互联技术是面向嵌入式系统开发的,它提出了高性能、同时基于包交换的新一代高速互联技术,它的数据传输过程是基于请求和响应机制的。SRIO传输能够在某种模式下扮演主模块的角色,即能够直接向处理器推送数据,而不需要产生中断。这样有一个好处,就是可以减少来中断数量,减少与中断的握手时间,并将DMA释放给执行其他任务。

在FPGA的SRIO模块设计过程中,由于ARM时序紧张,所以要尽量利用PL来完成SRIO的传输操作,不过多占用ARM的时间。在FPGA设计中采用AXI DataMover IP核设计来完成PL侧的DMA功能,DataMover IP核用来实现流接口(AXI4 STREAM)和存储器接口(AXI4 Memory Maped)的转换,是一个数据传输通道;DataMover的状态接口主要用来描述DMA的工作状态等信息;配置寄存器模块主要用来对AXI_DataMover IP核进行初始化的配置,以使其能正常的工作。PL侧的SRIO模块会根据系统的需要来主动发起不同的事务类型,设置一定的数据长度进行数据传输,从而不需要PS的参与,节省了ARM的时间开销。

在SRIO模块中,PS设置命令参数,SRIO模块会根据不同的参数,执行不同的事务类型,组织相关的请求事务的数据包。SRIO模块主要采用SRIO的IP核进行设计,SRIO的IP核实现了SRIO的链路层,在这个基础上FPGA进行了数据的打包和拆包功能,并解析SRIO的事务类型,经过SRIO的物理链路把数据包发送到目标端口,要是带有响应的事务,还要查询相应的响应端口,接收处理响应数据。图5是SRIO模块进行数据传输的示意图。

图5 SRIO模块传输示意图

4 软件设计

PS中的ARM软件处理和PL遵循同样的优先级处理原则,实现系统实时接收的目标。ARM软件的处理流程为:ARM软件初始化并设置中断使能,在主程序中处理各种数据及流程,当接收到图像数据中断后,ARM软件要立即响应,启动DMA搬移图像数据到DDR3中,在此过程中ARM不响应任何其他的操作,当接收到完整的一行数据后,ARM可以继续执行被打断的任务,直到下次中断的到来;当接收到完整的一帧图像数据后,通知SRIO模块,SRIO模块启动PL中的DMA功能,设置事务类型,将数据转存到存储板;ARM软件在接收图像数据的空闲时间要查询同步串口和PCM接口的数据的标志,当查询到串口的接收数据满后,ARM将数据陆续搬移到DDR3中,而在此过程中,要实时响应图像数据的中断并进行数据处理,当中断处理完成后,ARM再继续搬移串口数据,由于各个接口之间的速度差异性,并不会导致同步串口及PCM接口丢失数据。ARM利用空闲时间启动SRIO及时将数据转存到存储板。流程图如图6所示。

图6 软件流程框图

5 实验结果与分析

完成系统设计后,要对系统的指标进行测试,验证系统是否满足设计需求。首先进行各个硬件接口数据采集时间和转存时间进行测试,测试各时间指标时发现,同步串口和PCM接口的ARM处理时间开销太大,而图像数据处理的时间是足够的。经分析,原因为2个串口的数据都是8 bit,ARM软件在处理数据时,采用FOR循环语句进行字节读取,这样处理的效率非常低,因此更改为采用memcpy内存拷贝函数指令,而memcpy指令是4字节对齐的,因此,要在PL中将串口数据都拼接为32 bit,这样memcpy函数指令的源地址和目的地址都为4字节对齐,就可以通过双字赋值的方式来完成数据拷贝的,这样提高了总线传输效率。ARM软件按照上述更改完成后,同步串口和PCM接口数据的处理时间都得到了很大的提升。系统模拟实际的工作状态并对其进行性能测试,PCM接口是40包数据缓存,测试的时间指标如表1。

5.1 时间指标测试

表1 数据记录仪接收数据详情

5.2 软件系统测试

产品设计完成后,应用测试设备对产品进行测试,开发了测试程序,测试环境框图如图7。

图7 系统结构原理框图

在对产品测试的过程中发现,由于图像数据的DMA搬移过程是在ARM软件的主流程中进行的,图像数据还是受到了同步串口和PCM接口数据流的影响,当其串口搬移时间过长(超过220 μs*2)时,就会导致接收的图像丢失了某行数据。最后经过分析,将ARM软件的处理改为:在中断程序中搬移每行图像数据,这样会占用ARM的中断时间90 μs,90 μs时间对同步串口和PCM接口的数据影响不大,因为串口是10 ms一帧的周期,PCM接口每帧传输是200 μs,且40包缓存,所以串口不会丢帧。经过更改后,测试结果正常,数据记录仪工作可靠,实时性高,已满足实际应用要求。

6 结束语

针对ZYNQ芯片的异构处理器结构特征,通过对外部接口设备的时序分析,设计并实现了一种基于ZYNQ芯片的数据记录仪方案,仔细研究了实时性的关键因素,并详细介绍了PL可编程部分及PS软件的实现过程及软硬件协同处理方法,最后并对其进行了优化。最后实验结果表明,此设计满足系统要求。此方案提高了数据记录的可靠性和实时性,同时也提高了系统扩展的灵活性。

猜你喜欢
实时性串口传输
特斯拉的接班人:电力可以通过空气传输
基于EM9000工控板高性能双串口通信模型设计与实现
广播电视信号传输的技术分析
浅谈垂直极化天线在地面数字电视传输中的应用
MCS—51单片机中的多串口通讯技术的应用
4K传输
计算机控制系统实时性的提高策略
可编程控制器的实时处理器的研究
基于B/S的实时用户行为检测管理系统设计与实现
微机串口的测试诊断