摘要:为了满足对高速串行数据长时间实时显示存储的要求,提出了一种采用
FPGA+ARM作为主控制器结合大容量 Flash缓冲的设计方案;系统前端采用FPGA串并转换并控制 Flash进行数据采集,后端采用 ARM进行实时显示存储;该系统采集速率高,能够采集高达8.45 Mbps 的输入数据,存储容量可扩;系统是针对两路输入速度高达460 800 bps的串行数据而设计的,经测试验证,数据存储可靠稳定,可广泛应用于飞行装置上。
该U盘记录仪是应用于某飞行装置上,主要用来采集来自POS 机的两路波特率高达 460 800 bps 的高速 422 串行数据,并可以对采集的数据进行实时存储和现场分析。只针对ARM 开发的 U 盘记录仪虽然可以实现实时数据采集及完全脱离 PC进行可靠的数据现场分析,但由于串行接口
芯片及驱动速率的限制,串口所能达到的最高采集速率为 235 kbps,无法满足系统所需的 460 800 bps 速率要求。系统通过采用 FPGA进行串并转换,配合大容量 Flash 缓冲,可以将采集速率提高到 8.45 Mbps,弥补了嵌入式开发的不足。系统的实时显示部分则由ARM完成,系统采用了U 盘作为存储介质,使得存储容量具有可扩性。通过持续采集来自 POS机的两路波特率高达 460 800 bps 的8位高速 422 串行数据,从而验证系统可靠存储数据的时间不少于 40小时,能够满足大多数飞行装置上数据实时显示存储需求。
1
硬件设计
系统由 ARM 模块、FPGA 数据采集模块、存储模块、LCD显示模块、USB接口模块和电源转换模块组成。
FPGA数据采集模块通过控制信号线和数据线与 ARM 模块并行通信,当 FPGA接收到处理器控制线发送的读写命令后将 Flash存储器中的数据传输给 ARM,ARM处理器通过 USB接口模块在 U盘准备好的情况下对 U盘进行读写。为了防止 U盘中的数据因外界因素损坏而丢失,系统选用了Flash作为备份。ARM处理器一方面与 FPGA构成的数据缓存部分进行通信,另一方面监测 U 盘的状态。并在系统层建立可靠的数据分析软件使系统完全脱离 PC机对存储的数据进行现场分析处理,如图1为系统硬件结构图。
1.1 核心控制部分设计
FPGA选用
Xilinx 公司的 XC3S500E芯片,该芯片的I/O 接口多达108个兼容多种电平标准,有利于FPGA与 ARM处理器和 Flash存储介质并行通信,360 Kb的 Block RAM 缓存资源,通过 FPGA内核自带的高速异步
FIFO,可方便地为数据读写提供缓冲空间。
ARM处理器选用
三星推出的
S5pv210 芯片。主频可达1 GHz,64/32 位内部总线结构,32/32 kB的数据/指令一级缓存,512 kB的二级缓存,可以实现 2000 D
MIPS(每秒运算2亿条指令集)的高性能运算能力,适合高速数据采集。FPGA与 ARM的并行通信硬件连接如图2 所示。
为了满足系统长时间对海量数据的可靠存储。系统选用了三星公司的 K9MDG08U5M作为大容量的缓存介质,芯片的存储容量为16 GB,与U盘容量相当,满足海量数据缓冲所需空间。写入速度最高可达8.45 Mbps,该速度也是本系统整体可达到的最高读写速度,Flash 的引入提高了系统的整体性能。
1.2 USB通信接口模块
本文采用的 USB接口芯片是 Fel.1s,其最大的特点是使用了MTT技术,该技术的 USB HUB 会让每一个USB 接口独享带宽,不出现数据拥堵、速度下降的情况,符合通用串行总线 2.0规格。FEl.1S提供4个USB Port,丰富的外接口除了可以控制 U盘外还可以连接鼠标,从而更加灵活的进行系统层界面操作。
Fe1.1s芯片的DM、DP引脚分别为下游端口的 D-、D +双绞线各接一个15 k 下拉电阻分压,可以使得在没有设备插入的时候,D-、D+上始终保持低电平。DPU、DMU为上游端口的 D+、D-双绞线与ARM 连接,实现上游集线器的通讯。USB总线速度通过 USB2.0通信协议识别,由 U盘内置的上拉电阻决定。
2、系统的软件设计
系统软件部分由上位机和下位机组成。上位机软件主要是ARM处理器控制实现,通过移植WinCE 操作系统,并在系统层开发相关的应用软件,完成了两路数据的分数及单路数据波形显示。下位机软件主要通过在 FPGA 中编写硬件逻辑,从而实现数据的串并转换、仲裁、编帧、控制 Flash大容量缓冲的读写及实现与 ARM处理器的并行通信。
2.1上位机部分设计
作为后端数据显示,系统在 ARM处理器控制平台上移植了具有友好操作界面的 WinCE 系统,该系统具备实时采集、即时显示、自动存储、自动处理、自动传输等功能。为现场数据的真实性、有效性、实时性、可用性提供了保证,较适用于工业数据采集。
WinCE的应用软件开发及其他的一些服务都是通过Win32 CE API函数来支持,通过 API 函数与内核空间对话,达到控制硬件的目的。而一般由硬件厂家提供的 BSP,保证了嵌入式操作系统可以在硬件平台上运行。WinCE操作系统就是采用硬件抽象和 BSP底层结构的设计思想。
如果说 BSP包与开发操作系统映像相对应,那么 SDK 包就与开发应用软件相对应。系统在 WinCE6.0平台上,利用VS2008+SDK 搭建的开发环境使用C#语言编制了数据分析软件。操作系统的 API函数丰富,驱动资源易获取,这样就大大减轻了软件开发的难度。
2.2 FPGA内部逻辑设计
作为前端数据接收部分,系统主要围绕 FPGA实现,内部逻辑全部采用 VHDL 语言实现,如图 3为 FPGA 内部RTL级。
Clk_div模块通过8分频主频为29.4912 MHz的系统以8 倍于串行数据波特率的时钟进行采样保证了数据接收的可靠性。
更多详细内容请下载附件查看