基于USB2.0和DDR2的数据采集系统设计
引言
本文设计的高速数据采集系统是应用于芯片现场测试的实时数据采集系统,由于被测试芯片为250 MHz 8 bit的高速AD输出, 因此,该数据采集系统的数据采集率是2 Gbps。为了达到实时、高速、海量的数据采集, 该系统利用DDR2 SDRAM的高速数据传输能力和海量存储能力做为采集数据的缓存,然后通过具有即插即用、易扩展、传输速率较高等特点的USB2.0接口来将DDR2 SDRAM中的数据传输到计算机中进行存储和分析。
1 数据采集系统架构
该数据采集系统的总体架构由硬件部分、固件部分和计算机上的USB驱动及应用程序等几大部分组成, 本文完成了硬件和固件部分的设计。
该系统的硬件部分主要由USB2.0、DDR2SDRAM、MCU以及IF等核心模块组成, 图1所示是其系统架构图。
系统总体架构图
图1 系统总体架构图
USB2.0由控制器和物理传输层组成, 其中控制器是在FPGA上实现的Faraday公司的IP核, 物理层可选用SMSC公司的GT3200芯片, 控制器与物理层芯片之间可通过标准的UTMI接口相连。
DDR2 SDRAM控制器是基于Xilinx公司提供的IP核,工作频率是125~266 MHz, 与SDRAM之间的接口是64 bit SODIMM笔记本内存条接口。作为数据存储的SDRAM 是Samsung 公司的M470T5663QZ3-CE6 2GB 内存条。系统的控制核心MCU采用Mentor Graphics公司的增强型8051 IP核M8051EW, 该8051核采用两个时钟周期为一个机器周期的高性能架构,同时支持MWAIT信号来控制程序总线, 从而能够支持慢速的外部程序和数据存储器。IF模块是该系统设计的关键, 它相当于DMA的功能, 主要负责USB与DDR2、外部数据接口与DDR2之间的数据传输。
2 数据采集系统设计
本文中的数据采集系统采用USB2.0和DDR2SDRAM相结合的设计思路,从而打破了传统数据采集系统在实时数据采集中大容量和高速率不可兼得的瓶颈。在图1所示的系统架构的四个部分中, 由于USB2.0和DDR2控制器都是IP核,因此, 该系统设计的关键在于MCU和IF模块。
2.1 MCU的设计
MCU是数据采集系统的控制核心, 主要用于对USB2.0控制器进行配置、查询和处理USB事务, 以及解析USB设备请求, 同时, 还需配置IF模块, 处理与IF模块之间的控制信号等, 因此,MCU的设计包括数据接口及控制信号的设计以及固件设计两个部分。
MCU数据总线接口包括与USB2.0控制器和与IF模块的接口,这里的USB2.0控制器和IF模块相当于外部设备挂在MCU的外部存储器总线和ESFR(外部特殊功能寄存器) 总线上。控制信号主要用于计算机上的控制台控制IF模块数据传输的开始与结束,通常包含在USB的设备请求中。
整个固件的开发可在Keil C下完成, 并可通过JTAG进行调试。开发一般包括三部分:一是协助USB控制器完成总线列举过程, 让计算机识别USB设备;二是通过解析自定义USB设备请求,来对采集模式、深度等进行配置, 从而控制采集的开始与结束; 三是查询和处理IN、OUT事务中断, 并控制USB数据传输。[next]
2.2 IF模块设计
IF模块负责接口的转换和数据传输的控制,其结构如图2所示。其中, usb2ddr和eoc2ddr子模块分别控制USB2.0与DDR2 SDRAM、外部采集接口与DDR2 SDRAM之间数据的上下行传输。
上下行数据传输分别由usb2ddr_ctrl 和eoc2ddr_ctrl模块中的状态机进行控制和管理。其中采集模式和深度由MCU的ESFR总线配置, 而传输开始信号则使用MCU的PORT0 [0]、PORT0[1],结束信号连接在MCU的外部中断NINT0和NINT1上, 这样可使MCU能够及时响应。上行采集开始后, 首先使eoc2ddr_ctrl中的控制状态机处于写状态, 并不断地比较DDR2的地址与配置深度,直到采集完成。然后再使usb2ddr_ctrl中的控制状态机处于读状态, 同样也比较地址与深度,直到数据读取完成。下行传输过程则与之相反。
IF模块结构框图
图2 IF模块结构框图。
由于各个接口上数据传输的速率不同, 因此, 数据传输时, 要异步FIFO或者缓存。在本设计中, 由于各接口速率固定,因此, 可采用双端口RAM作乒乓缓存方式以提高效率并保证数据连续, 图3所示是乒乓缓存原理图。
乒乓缓存原理图
图3 乒乓缓存原理图。
当下行发出数据时, 从DDR2的125 M×128bit到50 M×8 bit所需要的最小深度为32×8 bit, 因为从SDRAM中读数据的最大延迟是26个DDR2时钟周期(即208 ns),而将DDR2读出的128 bit发出则需要16个时钟周期(即320 ns),因此, 为了保证发出的数据可连续进行乒乓操作, 需要2×128bit的深度。同理,在上行数据从DDR2的125
- 基于PCI-9846H的死区时间引起的电压波形畸变的研究(11-10)
- 基于FPGA的RS232异步串行口IP核设计(02-09)
- 一种多处理器数据采集系统方案(03-24)
- 基于MSP430和USB的数据采集系统(04-14)
- 基于LabVIEW的光谱数据采集与分析(02-12)
- 史上最牛:一款高性能低功耗数据采集系统的设计详解(07-22)