DIY编程器网

标题: 基于FPGA和USB的高速数据传输、记录及显示系统 [打印本页]

作者: liyf    时间: 2014-10-5 10:15
标题: 基于FPGA和USB的高速数据传输、记录及显示系统
基于FPGA和USB的高速数据传输、记录及显示系统

摘要:提出了一种基于FPGA和USB的高速数据传输、记录及显示系统的设计方案,并对其中的低电压差分信号(LVDS)传输方式、FPGA功能模块以及USB传输模块等进行了介绍。该系统不但可以快速方便的传输、记录及显示雷达数据形成分机的数据,还具有判断数据帧头错误、帧长度错误的功能。    关键词:FPGA;USB;LVDS;数据传输
1 概述
雷达数据形成分机具有数据量大、传输速率高、帧格式固定等特点。目前用于雷达数据传输的一般有PCI总线和网卡,其中32位的PCI接口数据传输速率最大可以达到133Mbit/s,而目前广泛采用的以太网卡的最大传输速率达到100Mbit/s,虽然这两者的传输速度完全可以满足要求,但是它们存在安装繁琐,受计算机插槽数量和地址、中断资源限制等弱点。USB(Universal Serial Bus)是一种通用串行总线,具有即插即用、可热插拔,使用方便、成本低的特点,其USB1.0能提供12Mbps的全速速率或1.5Mbps的低速速率,而USB2.0 则可以支持480Mbps的高速传输速率。因此,在高速数据传输、记录及显示系统中,考虑到需要方便灵活地与计算机通信,可采用USB通讯方式来对雷达数据形成分机进行检测。

2 设计方案
整个系统主要由低电压差分信号(LVDS)接口电路、基于FPGA的高速数据缓存、判断数据错误模块、USB传输模块和计算机组成,其系统结构框图如图1所示。当低电压差分信号接口电路把接收的雷达数据形成分机数据送入FPGA缓存后,该信息便可通过USB接口进行传输、记录并在计算机上显示。该系统由低电压差分信号驱动芯片DS90LV31(发送器)、 DS90LV32(接收器)、控制芯片XC2V500、USB控制芯片C8051F320、总线驱动器芯片74HC244组成。

3 系统功能及硬件实现
本系统主要由低电压差分信号传输接口、FPGA功能模块和USB传输模块三部分构成。
3.1 低电压差分信号传输接口
低电压差分信号LVDS(Low Voltage Differential Signal)标准是一种用于高速数据传输的物理层接口标准。由于电压信号摆幅较低,而且可提供电流模式驱动输出,因此LVDS 技术只产生极低的噪音,而且功耗也极低,甚至不论频率高低,功耗几乎不变;此外,由于LVDS是以差分方式传送数据,因此不易受共模噪音影响。由于具有超高速(1.4Gb/s)串行传输、低功耗及低电磁辐射的特性,低电压差分信号传输是在铜介质上实现千兆位级高速通信的优先方案,可用于服务器、可堆垒集线器、无线基站、ATM交换机及高分辨率显示等,也可用于通信系统的设计。美国国家半导体公司的DS90LV31和DS90LV32是高性能的CMOS低功耗、低电压差分信号驱动器,采用3.3V供电,可支持大于400Mbps的数据率,满足ANSI/TIA/EIA-644标准。其中DS90LV31可实现四路低电压TTL信号转低电压差分信号,而DS90LV32则可实现四路低电压差分信号转低电压TTL信号。
3.2 FPGA功能模块
本设计采用Xilinx公司的FPGAField Pro-grammable gate array,现场可编程门阵列芯片XC2V500来实现高速数据缓存。XC2V500属于Vir-tex-II系列,是一种高密度、高性能的FPGA。XC2V500可通过JTAG接口实现在线编程;它采用0.15m和0.12m混合工艺设计;内核电压为1.5V,低功耗;可支持多种接口标准;内部时钟频率可达420MHz;采用专门的在系统可编程PROM芯片18V04进行配置。

    FPGA的主要功能是高速数据缓存及判断传输数据帧头错误、帧长度错误,具体说明如下:
(1)高速数据缓存
雷达数据形成分机以10MHz的频率,每秒发送2000~3000帧、每帧6400字节的数据,将如此高速、大量的数据进行准确无误的缓存是本系统的技术难点之一。本方案将数据形成分机送过来的数据先放在FPGA的异步FIFOFirst In First Out存储器里,FIFO存储器同时要有与数据形成分机及USB的接口,且两接口操作互不干涉,以提高数据吞吐率。根据FIFO存储器的Full和Empty标志可判断存储器全满或空。FIFO存储器的特点是:不需要地址寻址,可简化控制信号;数据写入和读出不依赖于数据速率,可以慢写快读、也可快写满读;进行数据宽度和存储深度的扩展不会增加额外的时间延迟,因此满足了上述要求。
数据形成分机发送的数据包括16 Bit并行数据信号Data、数据有效标志信号Flag、时钟信号Clk及复位信号Reset。图2为数据形成分机与FPGA数据传输接口时序图。其中Reset为清零信号,除T1时间外均保持低电平;Flag信号高电平持续时间为320μs;Clk为10MHz的读时钟。FPGA接收到数据形成分机发来的数据有效标志信号Flag后,将首先确定数据帧头,然后以10MHz的时钟频率Clk读16 Bit并行数据信号Data并存储在FIFO存储器中,以等待USB控制芯片取走。
(2)判断帧数据错误
数据形成分机发送过来的每帧数据的帧头、帧长度是固定的。FPGA对接收的每一帧数据都需要判断帧头及帧长度是否错误。每出现一次错误,FP-GA会对其进行一次累加,对应产生一个脉冲,然后将其用74HC244驱动后分别接LED显示灯,就可以二进制方式显示错误次数。
3.3 USB传输模块
通过USB传输模块可把存在FIFO存储器里的数据传送给计算机并记录下来,本设计采用Cygnal公司的C8051F系列USB控制芯片C8051F320。C8051F320是将微控制器和USB控制器集成在一起的芯片,完全符合USB1.1规范,最大传输速度可达12Mbps。C0801F320的运行指令采用流水线结构,机器周期由标准8051的12个系统时钟周期降为一个系统时钟周期,处理能力大大提高。它还内嵌JTAG调试电路,可在系统编程和调试等。FPGA与C8051F320之间的具体连接控制框图如图3所示。
当PC机向C8051F320发出接收数据的命令后,C8051F320便可给FPGA发控制信号,以使FPGA在下一帧数据开始时打开FIFO写使能;数据形成分机通过写操作不断将数据存入FIFO存储器。当FIFO存储器中的数据达到一帧时,Full标志有效,向C8051F320请求中断,并将写使能关闭,读使能打开;C8051F320响应中断后将以CLK时钟频率读FI-FO存储器中的数据DATA;每读完一帧,FIFO存储器的读使能关闭,写使能打开,同时接收下一帧数据,直到PC机发停止命令或接收完要求的帧数。

4 软件设计
C8051F320中的8051内核不但与MCS-51指令完全兼容,而且Cygnal公司的工具包还为其提供了基于Windows的USB总线驱动程序和功能驱动程序,这样,用户就可以从烦琐的驱动程序开发中解脱出来,从而大大减少开发时间、风险和成本。
本系统软件设计由两部分组成:动态链接库和应用程序。动态链接库负责与内核的USB功能驱动程序通信并接收应用程序的各种操作请求,而应用程序则负责对传输数据进行记录、显示并实时显示数据传输的状态。
动态链接库的工作原理如下:当它收到应用程序的数据传输请求后,会创建两个线程:数据传输线程和记录、显示线程。其中数据传输线程负责将数据写到应用程序要提交的内存;而记录、显示线程则负责给应用程序发送记录和显示消息。当应用程序接收到此消息后,便从它提交的内存中读取数据并存盘和显示。
用户态应用程序的主要功能是开启或关闭USB设备、检测USB设备、设置数据传输帧数、通过USB接口传输、记录并显示数据、实时显示数据传输的状态包括帧数、字节数等,其应用程序主流程图如图4所示。
本设计的应用软件基于Windows系统,并采用VC作为软件开发环境,这样可以利用现有的软件资源来缩短软件开发周期,同时可提供一个友好、美观清晰、操作简单的图形使用界面。访问USB接口时,调用Windows API函数能及时方便地与系统的USB控制芯片进行通信,并且可以将传输来的数据保存并显示在计算机上。

5 结束语
本文设计的基于FPGA和USB的高速数据传输、记录系统不但具有体积小、功耗低、成本低、使用灵活方便、硬件电路简单、可在线更新等特点;而且还充分利用了微机的资源,因而易开发且扩展性好。目前,本系统已投入实际应用之中,基本能达到高速数据传输、记录及显示的要求,具有较高的实用价值。
作者: 李小路    时间: 2021-6-23 14:58
谢谢分享!




欢迎光临 DIY编程器网 (http://diybcq.com/) Powered by Discuz! X3.2