古 月,姜 威,刘跃泽,洪应平
(1.中国运载火箭技术研究院 研究发展部,北京 100076;2.北京宇航系统工程研究所,北京 100076;3.中北大学 仪器科学与动态测试教育部重点实验室,山西 太原 030051)
随着测试技术的发展,飞行器在飞行状态中需要记录的传感信息也更加复杂多样,记录器需要记录的数据量不断增多,对记录的速度和时间等要求也不断提高[1-4]。传统航天、航空记录器应用的RS485、RS422、CAN等总线已无法适应高速数据记录以及传输等要求[5-7],且常规的存储介质如NAND Flash裸片、SPI Flash等,也无法满足高速存储需求。为了能更快、更准确地记录数据,本系统提出一种新型可靠解决方案,选用高速的千兆以太网接口,应用TCP作为通信协议[8-11],即保证数据通信的完整性和可靠性,又具备高速数据传输功能;同时选用eMMC作为存储介质,该存储介质与传统记录器的NAND Flash 相比,具备更大的存储容量、存储速度,可完成长时间高速记录[12-13]。丰富航天航空领域高速传感信息数据记录手段,为高过载下提供了可行性解决方案。
本系统需要对飞行器的大量传感数据进行实时记录,飞行过程中任何传感信息都会对后期设备的优化和改良提供重要依据,所以对数据完整性、准确性的要求极高,必须保证无丢帧、误码等异常情况。所以本系统采用可靠性极高的基于以太网的TCP交互协议,通过不断的握手、校验信息,保证每帧数据准确接收。常规存储器采用FPGA作为主要控制器,无法应付TCP协议的复杂交互进程,所以本系统选用异构ARM+FPGA体系处理器,应用ARM处理器保证TCP协议交互正常,同时具备高性能FPGA,满足后续处理高速、大量数据,并可满足严苛时序约束用以驱动高速存储芯片。
笔者设计了一种基于ZYNQ的千兆以太网数据记录器,在兼容性能和成本需求下,本系统选用了Xilinx公司推出的一款低成本、低功耗的ZYNQ7020系统处理方案。该芯片内集成了ARM处理器及FPGA,也就是PS(Process System)端及PL(Progarmmable Logic)端,采用PS端实时处理TCP数据流,发挥ARM嵌入式平台处理优势。PL端做高速数据编码、写入操作,为系统高速时序处理提供性能保障。两端共享DDR3作为数据缓存单元,用于数据高速交互;选用eMMC作为存储单元,其内部集成了 NAND Flash 和控制器,由控制器对NAND Flash进行读写控制,同时,还具备坏块管理、损耗均衡以及ECC校验等较为复杂的功能,相对于传统存储介质,eMMC容量大、读写速度快,能够满足本系统千兆以太网数据流的高速存储需求。
系统采用电脑上位机模拟数据源,直接向记录器写入数据,并通过软件实时监控写入数据流情况。同样采用以太网接口回读数据,通过软件查看数据,验证数据准确性。预期可完成任务,为航天航空领域传感信息数据记录提供可靠方案[14-16]。
针对记录器存储需求及TCP千兆网高速传输等难点要求,设计了一款可满足TCP千兆以太网传输及高速数据存储的新型记录器。记录器设计如图1所示,因TCP协议用FPGA纯逻辑实现会浪费大量资源,且实现效果不理想,所以本记录器选用Xilinx 公司的ZYNQ7020芯片作为主控,其内部集成了ARM Cortex-A9处理器,其内部包含以太网硬核协议栈,可以保证高速、可靠地实现千兆以太网TCP通信,同时该芯片内部还包含基于Artix-7的逻辑资源,实现eMMC的高速时序控制。
图1 记录器设计框图
系统采用模块化设计,分为存储模块、缓存模块、主控模块、稳压模块和以太网接口模块,如图2所示。为保证存储单元的抗过载要求,将主板与存储单元分离,采用小型化设计便于保护存储单元,在记录器经过载冲击后回收存储单元,读取数据。同时采用PCIE作为存储介质接口,在保证系统传输稳定的情况下,可更灵活地更换存储单元,更方便在测试时和后期回收时进行操作。以太网模块选用Microchip Technology公司的KSZ9031千兆网PHY芯片;存储单元选用三星公司的KLMCG2KERM-B041,具备64 GB的存储容量用于数据存储;DDR缓存模块选用具备512 MB缓存的MT41K256M16JT-125芯片,为本系统长时间记录提供了可靠保障。
图2 实物图
兼容存储单元稳定性及小型化设计的需要,如图2所示,存储单元尺寸设计为4.3 mm×3 mm。设计卡槽用于固定线缆,同时将过载结构设计为椭圆,用以抵抗更高的冲击,抗过载结构实物如图3所示。在灌封后可经受高强度过载,为试验过程中和试验后的数据回收提供强有力的保障。
图3 抗过载结构实物图
系统上电后,首先由主控处理器对底层PHY芯片复位,并通过系统与以太网PHY芯片实现交互,确定MAC及IP地址,并协商通信速度,保证PHY芯片在千兆模式下正常工作。
通信链路建立完成后,通过PHY芯片接收以太网数据信息,直接用PS端调用LwIP库,实现传输层通信。系统解帧处理后判断数据类型,当收到存储指令,将内部数据信息提取经DMA直接操作存入DDR3缓存单元中,并等待写完成中断,中断触发后开始存入下一帧数据。因存储器存在写入时间延迟特性,所以采用DDR3作为中介缓存,保证不会因为后级溢出导致丢数。因PS与PL可以独立运行,当PL端判断出缓存单元内有数据,且后级缓存单元数据没有满,则将数据通过DMA提取出DDR3,编帧写入eMMC存储控制单元的FIFO,用以数据位宽转换和跨时钟域处理,保证写入存储单元数据准确、有效。写控制流程如图4所示。
图4 千兆以太网接收数据存储流程图
回读流程与存储流程相似,当PS端接收到回读指令后,通过AXI总线向PL端发送回读指令,将eMMC切换到回读状态,通过DMA直接将数据写入DDR3缓存单元,DMA中断信号触发PS端提取数据工作,数据处理后经PHY芯片通过以太网接口直接传入电脑,用于后期数据解析、判读。如图5所示。
图5 千兆以太网数据回读流程
存储芯片选用三星公司的KLMCG2KERM-B041,该芯片存储容量为64 GB,在HS400模式下工作时钟200 MHz存储速度最大可达到400 MB/s。时钟速率太高必然会对链路信号质量及逻辑资源消耗等提出更高要求,因本系统设计记录器是为了长时间稳定工作,考虑在兼容系统性能和系统稳定的情况下,本记录器选用High Speed DDR模式,该模式工作时钟为0~52 MHz,采用双沿数据传输,数据传输位宽8 bit,则瞬时最大传输速度为104 MB/s。因系统接收TCP数据最大速度为500 Mbit/s,数据包最大速度不超过60 MB/s,所以系统选择50 MHz时钟作为eMMC芯片的存储时钟。因存在写入延迟的情况,采用DDR3作为缓存单元,用以缓存写入的数据信息,保证数据可以及时处理写入存储单元。为记录器实时记录千兆以太网TCP数据包提供保障。
存储芯片eMMC上电复位后,首先要对芯片以低速400 kHz时钟进行初始化操作,包含识别器件、配置芯片等工作。该模式下芯片I/O工作电压可配置为3 V、1.8 V、1.2 V,在综合考虑器件功耗、工作性能及主控芯片的选型后,选用1.8 V为工作电压,保证主控芯片PL端可以使用高性能Bank。初始化流程如图6所示,配置完成后,进行总线测试,测试成功后将存储芯片切换进传输模式,进行读、写、擦等操作。
图6 初始化流程图
进入传输模式后,芯片有3种工作模式:存储模式、回读模式和擦除模式。通过以太网收回的数据指令经PS端处理后发送给PL端,转化成逻辑端可以识别的指令,并将指令下发给eMMC控制模块,通过控制指令实现模式切换。eMMC操作流程如图7所示。
图7 eMMC操作流程
在存储模式下首先向eMMC芯片发送CMD23指令设置多块存储并设置单次存储块数,因eMMC芯片每块容量为512 B,每次发送后,需要写入申请的多块数据量才可以开始编译到芯片内部存储空间。因eMMC芯片特性,每次编译时间存在编译延时,延时因器件批次及编译区域不同导致时间不定,但基本时间相差不大。所以每次申请的块数越多,单次编译的数据量越大,存储速度越接近最大速度。在考虑到写入速度与逻辑资源消耗的情况以及缓存资源的占用情况,经多次实际测试,本系统工况下将申请存储块数设置为2048块,也就是每次申请1 MB存储空间下,既可以保证写入速度稳定,又可以将缓存资源快速释放,速率平均,效果最稳定。
设置好单次存储容量后,发送CMD24命令,设置存储起始地址。即存储开始地址,每次申请固定存储块数后,eMMC内部存完当前的块会自行切入下一块空间继续写,所以每完成一次申请的块数存储后,只需将下次的写入起始地址设置为上次写入最后一块地址的下一块,再申请写入块数,以此循环申请,保证连续存储。配置芯片时可以读出该芯片共有多大的地址用于存储,当存到最后一片地址时将起始地址清零,重新开始循环记录,本系统在没有外部指令触发的情况下,存储器会一直停留在存储模式下,并且循环覆盖记录数据。
在擦除模式工况下,eMMC芯片也是对每块地址空间进行操作。因为在配置阶段,可以从寄存器中获取该芯片的容量,得到该芯片的最大地址,即芯片时间可用容量。本记录器工况不需要部分擦除操作,所以接收到以太网擦除指令后,进行全空间擦除。首先发送CMD35将起始设置为0地址;发送CMD36将结束地址设置为最大地址;发送CMD38执行擦除操作;擦除完成后退出该模式。
在回读模式工况下,用电脑对记录器直接进行回读,与存储模式相似。首先发送CMD16设置读取块数,在发送CMD18设置读取起始地址,同时将数据通过以太网TCP协议将数据传回到电脑,用于数据判读。如果外部控制命令没有更新,系统会读取所有容量的数据后自动停止,当其他控制命令输入,则退出回读模式。
为验证记录器的可靠性以及记录数据的准确性。系统采用电脑上位机作为模拟数据设备,模拟数据格式00-FF循环4次,包总长1078 B,其中内部数据量共1024 B,发送速率为500 Mbit/s,在存储模式下持续写入数据,通过Wireshark监控数据流,如图8所示,可以看到电脑端发送的TCP数据包和记录器的应答包。单帧数据信息如图9所示,可以看到内部数据,用Wireshark实时抓取数据流,经长时间测试,无误码、丢包等异常现象。
图8 数据流监控图
图9 单帧数据信息图
通过电脑回读数据,将数据存储为.dat格式,用hexedit打开后可见如图10所示的回读数据。将数据帧长设置为1024,即代表单帧数据量,整体数据对齐,并通过数据判断软件分析,千兆以太网TCP数据接收无误码现象。本记录器连续进行超过100次试验,在记录模式下每次记录容量大于30 GB,均无丢包误码现象,则可验证本系统记录数据的准确性。
图10 回读数据图
分别从硬件、软件及结构方面介绍了基于ZYNQ的千兆以太网数据记录器设计方法,并通过实验验证了系统的稳定性和可靠性。实现了单路千兆网TCP协议数据记录,以太网传输平均速率可达500 Mbit/s,并可实时将解码后数据存入eMMC存储单元,平均速度达到60 MB/s,瞬时最大存储速度为100 MB/s。通过优化硬件设计和FPGA时序约束实现了eMMC存储单元的长线传输,为保护存储单元提供可行的手段。
同时系统在测试阶段可以通过TCP回传数据到电脑端,用以数据判读及验证,并将存储单元结构设计为接插模式,为记录器在经受高过载后主板损坏提供有效的回读手段。在兼容成本及性能的情况下对整体系统进行小型化设计,同时将存储单元与主板分离,使存储单元更适用于弹上狭小空间安装,有利于设计抗高过载结构,用以抵抗高过载冲击。
综上,系统满足了航天航空飞行器的高速传感信息数据的存储、回收及设备抗高过载需求,为航天航空高速记录器的设计提供了一种有效的解决方案。