当前位置:首页 >> 信息与通信 >>

基于数据采集的数据采集


基于 FPGA 数据采集系统的设计方案
The design of multichannels high speed data acquisition system 摘要 文中结合数据采集在雷达数据采集的应用,采用 AD9432,高速 FIFO,基于 FPGA 设计数 据采集系统的方案。此种设计方案结构灵活、控制简单、可靠性较高。针对高速电路中易出现的 噪声和干扰, 讨

论了抑制干扰的一些措施。 关键词 A/D 转换 现场可编程门阵列 高速采集 干扰 Abstract Combined with applications of data acquisitions in,a method for desighing the data acquisitions system based on FPGA,FIFO and AD9432 is described.It is easily modified and controlled,and has high reliability.The technique of anti interference is also discussed while the noise is common in high speed circuit. Key words ADC FPGA; high speed data acquisition ; interference 1 引言 在雷达、气象、地震预报、航空航天、通信等领域里,现场信号具有重要的作用,这些信号的主 要特点是实时性强,数据速率高,数据量大,处理复杂,运算量大。因此,高速数据采集的研究 一直是工程实践中一项倍受人关注的领域。 目前由于数字信号的快速发展, 对信号采集的要求也 不断的提高,特别是在参数方面的要求越来越高,如精度、速度、采样通道数等。鉴于此,本文 会介绍一种基于 FPGA 来控制高速 A/D 转换器 AD9432 实现高速采集,从而满足在系统中的 应用。 2 系统结构 系统对输入的两路模拟信号采样率为 60MHz,每路 1K 的采样周期(前 100 微秒进行采样,后 900 微秒进行数据转换,放入 FLASH 中) ,量化精度为 12bit。转换后的数据经过 FPGA 的控制 送到乒乓 FLASH 中。再以 140Mbps 的数据率平稳输出,利用 FPGA 对数据进行帧结构处理, 最后经数据采集卡送入电脑中通过软件进行显示。数据采集系统的结构如图 1 所示。

3 硬件设计 常用的高速多通道数据采集的设计方案有两种: (1)以单片机 MCU 为控制核心,控制多通道数据采集与处理。因为单片机本身指令周期及处理 速度的影响,同时随着程序量的增加,如果程序的健壮性不理想的话,可能会出现“程序跑飞” 和“复位”现象。因此对于高速多通道数据采集,普通单片机很难满足系统对数据采集实时性和同 步性的要求。 (2)以 FPGA 作为数据采集的控制核心,实现多通道模拟信号的采集和处理。由于 FPGA 采集采 样控制、处理、缓存、传输控制、通讯于一个芯片内,编程配置灵活,开发周期短,系统简单, 具有高集成度、体积小、低功耗、高速、I/O 端口多、在线系统编程等优点,尤其在只需要简单 数据处理的情况下,FPGA 能够提供比专用高速 DSP 更好的解决方案,并且特别适用于对时序 有严格要求的高速多通道数据采集系统。

针对雷达实时监测系统对实时性和同步性的要求,选择第二种方案设计高速多通道数据采集系 统。 本设计中采取了高速模数转换器 AD9432+高速 FIFO+大规模可编程逻辑器件 FPGA+FLASH 存储芯片的方案。根据之前相关系统的经验,此方案的可实现性高,系统可靠性大。关键器件的 选择目的如下: 1.高速 AD 转换器的选择 信号采集的核心是模数转换技术。模数转换包括采样、保持、量化和编程四个过程采样就是将一 个连续变化的信号 X(t)转换成时间上离散的采样信号 X(n)。 由于本系统时钟频率为 60MHz,分辨率要求又较高,所以积分型、顺次逼近型、闪烁型无法使 用本次设计,在本次设计中采用了 ADI 公司生产的 AD9432 模数转换器。它是单片、12 位精 度、采用带有误差校正逻辑的多级差分流水结构的、105Msps 高速模数转换器,片内集成高性 能的采样保持放大器和参考电压源。同时,AD9432 还具有较低的功耗(850mw)和较高的信 噪比(66dB) 。 2.固态存储介质的选择 可作为固态记录器件的半导体件有多种,其中主要包括 SRAM,DRAM,FRAM,FLASH 等几 种器件;其中 SRAM 和 DRAM 为易失型(断电后数据不能保持) ,FRAM 和 FLASH 为非易失 型(断电后数据能保持) 。由于 DRAM 和 FLASH 两种器件的特速工艺结构,能实现较高的位密 度,因而得到广泛应用。 SRAM 和 DRAM 均为易失型器件,需要一个后备电池提供连续的电源,同时,它们的电源功耗 相当大。在 EEPROM 的基础上发展起来的闪烁(Flash)PROM,解决了上诉问题。FLASH 为 非易失型器件,当断电后,数据仍保持在 FLASH 存储芯片中,因而不需要后备电源,同时它的 功耗非常低。由于半导体技术的迅速发展,FLASH 存储芯片的密度不断提高,容量越来越大, 所以本设计采用了 SAMSUNG 公司生产的 K9F1G08U0M 型 FLASH。 3.可编程逻辑器件的选择 本系统采用了 Xilinx 公司生产的 XC2S100E 型 FPGA。 XC2S50E 是 Spartan-IIE 系列产品中的一款,它采用了 1.8V 的内核电压,系统性能可达到 200MHz, 具有 50000 个系统门, CLB 数量为 16×24, 数量 1728, LC BlockRAM 容量 32Kbit, 拥有 182 个 I/O。由于这款 FPGA 采用了低内核电压,这将从根本上减小芯片功耗,从而解决 高速工作状态下发热量大的问题。 同时其丰富的门阵列资料, 也为复杂控制逻辑的实现提供了可 能。 3.1 ADC 转换以及控制 根据上述采样要求,ADC 转换芯片选用 ADC 公司的 AD9432,在使用 AD9432 时,本设计采 取了以下方法: 1.高速采集工作中,为满足抗干扰性强,传输数率快,电平稳定,采用外接 ECL 差分芯片来提 供差分时钟; 2.为满足对直流精度和温度漂移的要求,采用外接基准电压源的形式; 3.为满足对信号输入抗电磁干扰及信号放大采样输入端前加变压器; 4.从图 2 中可以看出,由于 AD9432 采用多级差分流水结构,其在每个时钟周期的上升沿捕获 一个采样值,10 个周期以后才可以输出转换结果,可以看出输出管道延迟 10 个采样周期,因 此采样时钟脉冲的个数必须比采样点数至少多 10 个才能保证采样的正确。

由于通道数有 2 路,因此直接取其数字量的高 12bit 先分别送入高速 FIFO 中,再送入 FPGA 中,利用 FPGA 内部的资源生成锁存器进行两路数据的合并,这样提高了集成度,可以减少外 围的器件数量。设定两路锁存器的时钟相差 1800,这样可以实时地把输入的数据转换为顺次输 入的数据。 3.2 ADC 控制时序说明 采集信号启动,开始采集数据,在 60MHz 频率下工作,如图 3。

因为两路是对称的, 所以两路控制 AD 是同时进行, 时序一致。 由于 ADC 的输出延时,启动 ADC 采集后,延迟 10 个 fosc,送出 FIFO 的写时钟 WCLK 和写使能信号/WEN,把 AD 采集的数 据送到 FIFO 中。在每个 fosc 的上升沿检查 FIFO 的/EF 引脚,若/EF=?1?,说明 FIFO 不空, 就启动对 FIFO 的读操作,否则,对 FIFO 的读操作无效。由 FPGA 送出 FIFO 的读时钟信号

RCLK 和读使能信号/REN,把 FIFO 中的 12 位数据读出, 进入 FPGA 片内进行乒乓 FLASH 数 据处理。 3.3 乒乓 FLASH 的结构及读写控制 由于需要同时输入和不间断输出数据,且数据量较大,因此选用乒乓 FLASH 来保证采样和传输 同时进行。乒乓传输部分包括两个开关控制(FPGA 中实现)以及两块高速 FLASH,如图 4。

部数据传输模块 将在 FPGA 中已经合并的数据再分为两路,流向由锁存器控制,当门控信号控制 FLASH1 时, FLASH1 则进行数据写入,锁存器 1 打开,锁存器 2 成高阻状态;与此同时,FLASH2 进行数 据读出,锁存器 3 成高阻状态,锁存器 4 打开。当满足切换的条件后,切换到 FLASH2 写入而 FLASH1 读出的模式,如此循环。 为了使各个通道的数据排列在同一个数据区、 读出时更加容易操作, 我们将同一个通道的数据放 在一片 FLASH,即在 1/60MHz 的时间内,写入 FLASH 的地址不变,其中两片 FLSAH 的片选 信号 CS 交替有效,而读出 FLASH 中只有一片 FLASH 的 CS 有效。这样,更具 FLASH 的容量 大小及读取速度,在一个 0.4s 的时间段中,正好读出一片 FLASH 的数据就是一个通道数据, 而下一个 0.4s 的时间段中,正好读出的一片 FLASH 的数据就是一个通道的数据,而下一个中 读出的就是另一个通道的数据。 4 抗干扰硬件设计 由于本系统的数据传输率比原有的设备提高了几倍,达到 120Mbps,此时电路板将面临噪声和 干扰问题。本系统采用了一下抗干扰措施。 1.高速数据采集系统把系统的电源分成模拟和数字两部分,把系统的地分成模拟地和数字地, 正确使用两者之间的单点接地或多点接地,尽量用真个平面作为地平面。 2.在电源接入 PCB 板和板上每对电源和地之间加上滤波和去耦电路,能够更好地消除有电源 引起的噪声。系统将数字电源和模拟电源分开供电,以免快速变换的数字信号干扰模拟信号。 3.去耦电容有两个作用:一方面是本集成电路的蓄能电容,提供和吸收该集成电路开门关门瞬 间的充放电能;另一方面旁路掉该器件的高频噪声; 4.时钟产生器尽量靠近到用该时钟的器件,时钟线要尽量短; 5.布线的方式尽量采用菊链法的方式,这种结构便于阻抗匹配; 6.印制板尽量使用 45 度折线而不用 90 度折线布线,以减小高频信号对外的发射与耦合; 7.任何信号都不要形成环路,如不可避免,必须让环路区尽量小; 8.用大容量的钽电容而不是电解电容作电路充放电能储电容,而使用电解电容须在每个电容边 上加一个小的高频旁路电容。 5 实验验证

通过上述方案,进行了硬件实现,图 5 显示了该设计的高速采集系统对 50Hz 的正弦波形采集, 并对采集后的波形实现了波形再现, 该图所显示的波形符合采集前设定的波形, 充分说明了该系 统的可行性。 6 结束语 高速数据采集系统的关键技术体现在合理的设计结构和对干扰的有效抑制, 本文对这两方面进行 了充分的考虑,接下来利用 FPGA 组织方式灵活的特点,根据实际情况设计合理的结构满足同 步实时高速数据采集系统的要求,因此,本文所介绍的是一种不失一般性的数据采集解决方 案。 本文作者创新点: 1.以 AD9432 为核心的高速数据采集系统, 最高采样率能达到 60MB/S; 2.利用 FPGA 编程设计乒乓 FLASH 结构; 参考文献: 1.沈 羽 ,齐 伟 民, 张 毅 . 实时 高 速数 据 采集 与 存储 系统 的 一种 实 现方 法 微 计算 机 信息 , 2007 ,1-1: 83-85 2.李圣昆. 高速数据采集记录装置 硕士学位论文,2006,3-24 3.周长程. 数据采集与处理技术[M].西安交通大学,2004 4.AD9432 Data Sheet , Analog Device , Inc, 2003 作者简介:杨英军,男,汉族,1982 年 5 月出生,山西太原人,中北大学硕士研究生;研究方 向:高速数据采集系统; Email:Yyj8205@hotmail.com。 通信地址:中北大学电子测试技术重点实验室,山西 太原 030051

摘 要: 介绍了一种用于汽车姿态测量的数据采集系统的设计,该系统基于 FPGA+USB 架构,采用 FPGA 控 制整个系统的采集时序, USB 芯片作为数据采集通道,上位机完成姿态解算和数据显示功能。 关键词: FPGA;USB;数据采集 现代化生产和科学研究对采集系统的要求日益提高。传统的采集卡速度慢、处理功能简单、采用分立 元件、电路非常复杂;而且可靠性差、不易调试、不能很好地满足特殊要求。现场可编程门阵列(FPGA)是 专用集成电路中集成度最高的一种,用户可对 FPGA 内部的逻辑模块和 I/O 模块重新配置,以实现用户所需 逻辑功能。用户对 FPGA 的编程数据放入芯片,通过上电加载到 FPGA 中,对其进行初始化;也可在线对其 编程, 实现系统在线重构[1]。 本系统设计采用 USB2.0 CY7C68013 通信接口芯片作为数据采集通道, FPGA 由 芯片 EP1C6Q240C8N 作为采集设备的控制单元,由 PC 机完成姿态的解算及结果的显示。 1 系统的组成及原理

该采集系统主要由前端调理模块、A/D 转换控制模块、SRAM 存储模块及 USB 接口模块组成,系统框图 如图 1 所示。

2 FPGA 主控器内部模块 2.1 A/D 转换控制模块 A/D 转换模块选用 AD7685 芯片。AD7685 是 Analog Device 公司生产的一款 16 位、电荷再分配、高速、 低功耗的逐次逼近型模数转换器(ADC),具有 250 kS/s 采样速率。芯片在 Verilog 编程语言的控制下,完 成模拟信号到数字信号的转换。 2.2 FIFO 缓存 调用 FPGA 片上资源实现片上 FIFO 缓存,由于 A/D 采样频率与 SRAM 的读写频率不一致,所以采用读写 时钟不同的 FIFO,达到数据缓存和转换时钟域的双重目的。 2.3 SRAM 乒乓缓存模块 选用 2 片 IS61LV25616 存储芯片,该芯片存储容量为 256K×16,采用 Verilog 硬件描述语言控制实现 乒乓缓存,控制过程如图 2 所示。从片上 FIFO 输出的数据经选择开关后,分别进入缓冲模块 1 和缓冲模块 2。当数据写入缓冲模块 1 时,USB 模块从缓冲模块 2 读取数据;当数据写入缓冲模块 2 时,USB 模块从缓 冲模块 1 读取数据以传到上位机进行处理。

2.4 USB 控制模块 USB 接口芯片采用 EZ-USB FX2(CY7C68013),FX2 作为 USB2.0 数据通道来实现与主机的高速通信。FPGA 能够满足 Slave FIFO 要求的传输时序[2]作为 Slave FIFO 主控制器。图 3 分别给出了 FX2 与 FPGA 的接口 图和状态转换图。

同步 Slave FIFO 写时序如下: IDLE:当写事件发生时,转到状态 1。 状态 1:指向 IN FIFO,激活 FIFOADR[1:0],转向状态 2。 状态 2:如果 FIFO 满标志为“假”(FIFO 不满),则转向状态 3;否则停留在状态 2。

状态 3:传送总线驱动数据,为 1 个 IFCLK 激活 SLWR,转向状态 4。 状态 4:如果有更多的数据要写,则转向状态 2;否则转向 IDLE。 3 USB 芯片固件程序及驱动程序 3.1 FX2 的固件程序设计 CY7C68013 芯片固件程序负责处理 PC 机发来的各种 USB 请求,以完成主机与外围电路间的数据传输。 写固件程序是比较复杂的,需要用到大量的函数,但其基本结构却相对简单,包括下面 3 个过程[3]: (1)初始化:处理器和外围电路的初始化。 (2)主函数:完成符合设备特定要求的代码。 (3)中断处理:处理各种中断的程序代码。 Cypress 公司的 EZ-USB FX2 开发套件提供给用户 1 个固件函数库(Ezusb.lib)和固件框架(Framework), 两者均是基于 KEIL C51 进行开发的。固件函数库提供了一系列的函数来加速 USB 固件程序的开发,使用时 只需在程序中包含 EZUSB.H 和 EZREGS.H 两个头文件,并在项目中链接 Ezusb.lib,就可以直接使用固件库 中的各个函数[4]。 在程序起始时,固件框架将执行如下步骤: (1)首先设置所有的内部状态变量,即设置起始的初值。 (2)调用用户的初始设置函数 TD_Init(),待返回后,固件框架会设置 USB 为未配置的状态,并且使能 中断。 (3)紧接着在 1 s 的间隔内,开始重新列举设备,并直到设置(SETUP)封包收到端点 0 为止。 (4)一旦 SETUP 包被检测到,固件程序结构框架就开始进行任务分配。任务分配就是依次重复地执行下 面的过程: ①调用用户函数 TD_Poll()。 ②检测是否有标准的设备请求,如果有,则执行指令并做出相应的操作。 ③检测 USB 核是否有 USB 挂起信号,如果收到,则调用用户程序 TD_Suspend(),从该函数成功返回后 (返回值为 TRUE),再检测是否发生 USB 唤醒事件。如果未检测到,则处理器处于挂起方式;如果检测到, 则调用用户程序 TD_Resume(),程序继续运行。如果从 TD_Suspend()返回为 FALSE 时,则程序继续进行。 标准请求和 vendor 专用请求由框架分析和执行。默认情况下,对标准请求执行 USB 规定的响应,无论 如何,框架提供交互的连接,以允许用户程序处理或覆盖指定的设备请求。EZ-USB 中断也交给框架进行处 理,任务循环的流程图如图 4 所示。

在 FX2 芯片的固件程序设计中,最关键的就是系统初始化 TD_Init(void)[3-5],下面是其部分代码。 void TD_Init(void) { CPUCS=((CPUCS & ~bmCLKSPD)|bmCLKSPD1); //设置 CPU 时钟频率为 48 MHz SYNCDELAY; //设置 68013 工作于 Slave FIFO 模式 REVCTL=0x03; //必须设置 REVCTL.0 和 REVCTL.1 为 1

SYNCDELAY; IFCONFIG=0x43; SYNCDELAY; EP2CFG=0xE8; EP2FIFOCFG=0x09; PINFLAGSAB=0x00; //工作于同步 FIFO 模式 //配置各个端点的工作状态 //端点 2,IN,块传输,1 024 B,4 倍缓冲区 SYNCDELAY; //配置端点 2 工作于 16 位模式,自动接收 IN 令牌包 SYNCDELAY; //定义 FLAGA 为可编程级标志,FLAGB:FIFO 满标志位 //定义 FLAGC 为满标志, PINFLAGSCD=0x00; SYNCDELAY; PORTACFG=0x00; //一般不需要 FLAGD SYNCDELAY; FIFOPINPOLAR=0x00; //设置所有 FIFO 接口引脚为低电平有效 SYNCDELAY; EP2AUTOINLENH=0x02; //端点 2 自动接收 512B 数据 SYNCDELAY; EP2AUTOINLENH=0x00; SYNCDELAY; //复位 EP2 的 FIFO 缓冲区 FIFORESET=0x80; FIFORESET=0x02; FIFORESET=0x00; SYNCDELAY; Rwuen=TRUE; } 3.2 USB 设备驱动程序 USB 设备驱动程序的主要功能是使 Win32 应用程序能正确访问本数据采集卡的硬件设备。本设计中将 CY7C68013 的固件代码存放在上位机上,当系统上电或 USB 连接时,再将它下载至芯片的 RAM 中,由增强 型 8051 执行。这一过程需要使用 2 个驱动程序:1 个用于下载芯片的固件程序,另 1 个用于实现本数据采 集卡的具体功能。也可以使用 EZ-USB 的通用驱动程序,很多 USB 芯片的厂商都为其 USB 芯片提供了通用驱 动程序,可以满足大部分系统的需求,用户可在此基础上直接进行固件程序的开发[6]。 4 主机应用程序 应用程序主要负责读取系统硬件所输出的数据采集结果,并实时显示波形,所使用的编程语言为微软 的 Visual C++6.0 语言编写的 Win32 应用程序。 主要控件包括:采集控制组按钮,USB 组按钮。采集控制组按钮负责控制硬件系统是否进行数据采集, 并使用 USB 块传输来读取采集结果。USB 组按钮主要负责读取该数据采集卡的 USB 设备描述符和配置描述 符。 在该数据采集系统的设计中,CY7C68013 芯片灵活的接口和 FPGA 可编程特性简化了外部硬件的设计, 提高了系统的可靠性,且利于设备的生产与调度。事实证明,本文设计的系统完全满足设计和使用要求。 参考文献 [1] 严雪萍.基于 FPGA 的高速数据采集系统[J].微计算机信息,2008(1-2):209-211. //使能远程唤醒功能 //不接收主机发出的命令 SYNCDELAY; //复位 EP2 的 FIFO 缓冲区 SYNCDELAY; //恢复正常工作 //用 PA7/FLAGD 作为端口引脚,不作为 FIFO 标志 SYNCDELAY;

[2] 华清远见嵌入式培训中心.FPGA 应用开发入门与典型实例[M].北京:人民邮电出版社,2008. [3] 钱峰.EZ-USB FX2 单片机原理、编程及应用[M].北京:北京航空航天大学出版社,2006. [4] 李英伟.USB2.0 原理与工程开发(第 2 版)[M].北京:国防工业出版社,2007. [5] 张弘.USB 接口技术[M].西安:西安电子科技大学出版社,2002. [6] 薛园园.USB 应用开发技术大全[M].北京:人民邮电出版社,2007. 基于 USB2.0 与 FPGA 技术的高速数据采集系统的设计 基于 USB2.0 与 FPGA 技术的高速数据采集系统的设计 近年来笔记本电脑迅速普及和更新,其中大部分已经不配置 RS232 接口,而 USB 接口已成为今后一段时 间 PC 机与外设接口的主流。本采集系统的设计构建了一个基于 USB 接口的多功能通用数据采集、传输平 台,将嵌入式系统的实时性、灵活性和 PC 机强大的数据存储、处理、显示功能结合起来。该采集系统在 智能仪器仪表、测控系统、工控系统等领域有广阔的应用前景。 1 系统总体结构设计 1.1 系统总体结构 系统总体结构框图如图 1 所示,系统包括:单片机与 USB 接口模块、FPGA 模块、信号调理及 A/

D 模块。其中,单片机外围电路相对简单,整个系统主要通过 PC 机的程序界面控制操作;USB 接口负责
与 PC 机通信;FPGA 模块负责完成数据的采集与缓存。

1.2 单片机与 USB 接口模块 本设计的目的是构建以 PC 机为平台的数据采集系统, 单片机的功能仅限于接收 PC 机的命令、 控制 F

PGA 工作。PC 机作为整个系统的人机界面,控制整个数据采集系统进行采集、存储和处理。由此单片机
可以选择低成本的 8XC51 系列。为了提高系统的灵活性,采用单片机与 USB 接口芯片分离的方案,选择 Philip 公司的 ISP1581 USB2.0 接口芯片。该芯片与 8XC51 系列单片机的接口非常简单,可以极大地降低 系统成本。 1.3 FPGA 模块

采用 FPGA 进行采样控制的最大特点是系统具有重构性和通用性。 设计中采用了 Altera 公司的低成本

FPGA 的 Cyclone 系列(实际试验时,在更便宜的 Acex1k 器件上也可以实现),控制高速 A/D 芯片以 20
MSPS 的速度采样。FPGA 模块的设计具体包括 FIFO、单片机接口、A/D 控制接口、DMA 控制模块和主 控制器等子模块的设计。 1.4 PC 机端软件平台 PC 机采集程序使用 VC++实现,直接调用 Philips 公司提供的驱动程序进行数据读写,大大降低了开发 难度与风险。本设计中,PC 机端软件设计包括应用程序的界面设计、多线程数据采集、存储与处理模块的 设计,以及与 USB 底层驱动程序的通信动态链接库的设计。 2 USB 接口模块设计 2.1 USB 接口芯片

USB 接口芯片 ISP1581 具有体积小、高速、与单片机的接口相对简单等特点。除了控制端点外,ISP
1581 还有 7 个输入(IN)端点和 7 个输出(OUT)端点。每个端点可以灵活配置数据传输方式以及数据缓 存区(FIFO)的大小,端点 FIFO 最大容量可以达到 2KB。ISP1581 芯片在配置枚举时需要单片机固件的 支持,一旦正确完成了配置和驱动加载,单片机对于 ISP1581 芯片就如同普通存储器一样可以进行读写操 作,以发送或接收数据。 2.2 固件编程

USB 通信完全由 PC 主机发起。在这种结构下,固件总是一直在等待主机命令,再根据命令去执行相
应的程序。固件的基本思想是采用模块化设计,分成 main.c 等 7 个模块。ISP1581 固件结构如图 2 所示。 图中,main.c 为主循环,isr.c 主要负责中断处理,Chap9.c 主要负责响应主机的请求。用户的应用程序将来 也可以包括在 main.c 循环中。

2.3 单片机端程序设计

单片机端程序主要包括初始化模块,外围 Flash、EEPROM、RAM、液晶显示器、按键等的读写控制
模块,USB 接口芯片固件模块,A/D 采样工作模式、速度以及采样数据的读写的 FPGA 硬件控制模块等。本 设计的指导思想是:充分利用 PC 机和嵌入式系统的优点,对 MCU 端的要求尽量简化。具体软件流程示意 图如图 3 所示。

USB 作为一个通信接口,首先必须完成配置,然后才能进行用户数据的发送/接收,在循环中必须随
时检查是否有主机的配置命令。配置枚举过程是 USB 固件编程当中较为复杂的部分,其流程如图 4 所示。

USB 设备接入到主机并被主机识别后,主机首先以默认的地址(00H)发送一个设置(SETUP)包,新接
入的设备必须接收此包并响应请求。然后主机会发送输入包读取设备描述符,初步判断设备的属性后,再 设置设备的地址,随后再用这个地址读取设备的各种描述符以识别并且配置设备。可见,在设备配置过程 中,主机读取的数据较多,设备一旦接收到一个 SETUP 包之后便会判断主机的请求类型,然后进入请求处 理循环等待主机的进一步命令, 如果再次收到一个 IN 令牌便会向控制端点中写入数据, 并且根据数据长度 再次写端点直到数据发送完毕。USB 的标准请求包括读取设备描述符、配置描述符、端点描述符、设置地 址、配置设备等,厂商请求由用户自行定义。

ISP1581 接收到主机的数据后,将根据相应的情况设置片内的中断寄存器标志中断源,然后向单片机申请 中断,中断服务程序流程如图 5 所示。单片机响应中断后,首先读取中断标志寄存器并判断中断源,然后 设置相应的标志。在用户的发送/接收程序中,将根据相应的标志产生相应的动作。例如,主机发送一段数 据给 ISP1581,ISP1581 接收、握手完毕后,设置中断标志并申请中断。在用户的任务中发现有数据接收的 标志,就可以读出 ISP1581 中的数据。而 ISP1581 向主机发送数据时,首先是主机发送一个 IN 类型的令牌 发起一次传输,如果此时 ISP1581 相应端点的 FIFO 非空,则立即发送数据,然后向单片机申请中断,响

应中断以后如果还有数据要发送,则应该向 ISP1581 的 FIFO 中写入数据,否则直接清空中断标志即可。主 机和数据采集器之间的握手配合要事先设计好。

根据输入传输要求, 在具体的设计中, 除了主数据传输端点外, 还配置了一个数据缓冲区为 64 字节的、 工作于中断传输方式的端点作为命令端口,负责与主机进行通信握手。如果主机想从设备读取数据,则首 先发送一个读取命令,单片机接收到该命令后,就向主数据端点的 FIFO 中写入数据,随后主机发出读数 据令牌,正好有数据可以发送。通过命令端口还可以发送各种命令,控制数据采集器动作。 3 FPGA 数据采集模块设计 3.1 模块划分

FPGA 模块划分为 A/D 接口、FIFO、单片机接口、DMA 接口控制、主控制器等模块,其中设置了一
些可以单片机写入的寄存器。A/D 的采集速度,FIFO 的空、满、数据写入、读出速度都可以灵活配置。 整个模块以 Verilog 语言写成,稍加修改可以同各种 A/D 芯片接口。整个设计在 Altera 公司的 Cyclone 系 列的 EP1C12 中完成。在 ACEX1K 系列 EC1K100 器件上也可以实现,工作时钟频率为 50MHz。 为了提高系统的灵活性,在信号的调理、滤波模块中使用了 Lattice 公司的 ispPAC80 可编程滤波器作 为输入滤波器,可以灵活地设定抗混叠滤波器的截止频率,最大截至频率可以达到 750kHz,完全可以满足 一般中、高频信号的滤波。FPGA 作为 A/D 控制器可以同多种 A/D 芯片接口,本设计中使用了 TI 公司的 10 位高速 A/D 芯片 TLC876。芯片工作于流水线方式,最高采样速率为 20MSPS。 3.2 与单片机及 ISP1581 的接口

FPGA 在与单片机信号的接口过程中, 使用了同步设计的方法。 即首先对单片机的 I/O 信号进行采样
同步化,获得各信号上升、下降沿的时刻,输出同步脉冲,然后在这些时刻点处根据同步脉冲的出现与否 来控制系统进行动作。这种设计的优点是可以在设计中采用同步状态机,以获得较高的运行速度和稳定的 工作性能。这也是 ALTERA、XILINX 等公司的 FPGA 数字系统设计中所推荐使用的方法。 为了提高 FPGA 中的 FIFO 与 ISP1581 中的数据存储器的数据交换速度,FPGA 与 ISP1581 之间采用 DMA 方式进行数据交换。 ISP1581 有两种工作方式,由 BUS_CONF、MODE0、MODE1 三根引脚控制:

(1)如果上电时检测到 BUS_CONF 引脚为低电平,则工作于分裂总线方式(Split Bus Mode)。ISP15 81 具有 8-bit 地址/数据复用总线和 16-bit 的 DMA 专用数据线。 此时 MODE1 引脚如果为低电平, 则可以将 芯片的 ALE/A0 引脚与 89X51 的 ALE 脚直接相连,进行地址/数据总线复用;而如果 MODE1 为高电平, 则 ALE/A0 脚要接其他的 89X51 引脚,由用户编程将 ALE/A0 脚拉高/低进行地址/数据复用,而 MODE0 脚在这种方式下没有使用或作为其他用途。 (2)如果上电时检测到 BUS_CONF 引脚为高电平, 则工作于通用处理器方式 (Generic Processor Mode) 。 此时 MODE1 脚没有使用(可接 Vcc),MODE0 引脚则可接低/高电平,这样可以使芯片的读/写引脚分别 符合 Motorola/89X51 微处理器的读写规范。所以让 ISP1581 芯片工作于分裂总线方式可以方便地与 8051 系列单片机接口,其 AD[7:0]作为数据/地址总线复用,RD、WE、ALE 分别为读、写、地址锁存线,DAT A[15:0]作为 DMA 数据总线使用。 ISP1581 芯片中与 DMA 相关的引脚有 DREQ、DACK、DIOR、DIOW。DMA 传输前必须设定工作模 式、初始化 DMA 相关寄存器,然后对 DMA 命令寄存器写入一个命令便可以启动 DMA 传输。传输模式有 主、从、IDE、ATA 等方式。通用数据采集系统比较适合采用从模式,在这种模式下,单片机接收到主机 发来的开始采集命令后,立即命令 FPGA 启动采样,然后命令 ISP1581 启动 DMA 传输,ISP1581 将 DRE Q 引脚拉高,表示请求数据,此时 FPGA 将数据准备好后,拉低 DACK 引脚,待准备好数据后,在 DIOR 线上产生读脉冲,供 ISP1581 将数据读入内部 FIFO。DMA 也可以使用主模式,此时读脉冲 DIOR 由 ISP1 581 产生。DMA 工作时序图如图 6 所示。

4 PC 机多线程数据采集程序设计

USB 的数据传输使用了虚拟管道的概念,可以同时接入 127 个设备。每个设备可以拥有若干个端点,
每个端点可以跟主机组成一个连接,构成一个通信的最小实体。在数据传输过程中,只要带宽允许,主机 可以同时跟几个端点通信,因此要求在主机的应用程序中开启多个线程进行通信。在本设计中,采用了命 令端点和数据端点分开的方式。命令端点配置成中断或批量传输方式,在主机应用程序中专门开启一个线 程同该端点进行通信,开启另外一个线程进行采样数据传输,而两个传输之间互相不影响。用户界面使用 另外的线程,这样在传输过程中,应用程序可以随时响应用户的命令。在具体的设计中,点击数据采集开 始命令即建立并且启动一个采集线程。在这个无限循环的线程函数中设置了一个标志变量,如果该变量为 真,则线程函数继续运行;否则线程终止,停止采集。这样用户界面线程可以通过修改线程运行标志变量 来控制线程的运行。采用多线程采集程序的一个问题是线程函数必须是一个全局函数,不属于任何一个类, 这样它就无法访问类的私有成员或保护成员,解决这个问题的方法是:因为线程函数在创建时允许传送一 个指针参数给它,于是可以构造一个结构数据类型,数据成员中包含一个指向类的指针。在创建线程时将 想要访问的类的指针包含在一个按前述定义的结构变量中,并将该结构的指针作为参数传给线程函数。这 样就可以在线程函数中定义一个类对象,并把前述的类指针赋给它,通过类指针就可以访问该对象中的所 有成员了。在本设计中采用多线程程序设计后,系统工作非常稳定。

目前,国内外的数据采集系统常用的接口方式有多种,如 RS232 串行口、并行口,ISA 总线、PCI 总 线等。这些总线接口虽各具优点,但也都有其难以克服的缺点而被逐渐淘汰。USB 接口具有连接方便、无 需外接电源、即插即用、支持热插拔、动态加载驱动程序等特有优点,在主机和数据采集系统之间可以实 现简单、快捷、可靠的连接和通信。本设计应用 ISP1581USB 接口芯片与 FPGA 技术,构建了一个使用灵 活的通用数据采集系统。该系统充分利用了 PC 机的大存储量,强大的数据处理能力,高清晰的大屏幕显 示(相对于嵌入式系统而言),以及嵌入式系统的实时与灵活性。目前正在使用此平台构建一个在消声室 环境中针对机械振动噪声的采集与分析系统。此系统在智能仪器以及工业自动化等众多领域中必将有广泛 的应用前景。 参考文献 [1] 萧世文. USB2.0 硬件设计[M].北京:清华大学出版社,2002. [2] 周立功.PDIUSBD12USB 固件编程与驱动开发[M].北京:北京航空航天大学出版社,2003. [3] 张念淮. USB 总线接口开发指南[M].北京:国防工业出版社,2001. [4] Philips Semiconductors. ISP1581 programming guide[Z].2004. [5] USB.org. Universal serial bus specification rev.2.0[Z].2006. http://www.usb.org/developers/docs/. [6] 倪明辉. USB 在 FPGA 控制的高速数据采集系统中的应用[J

呵呵,挺巧的!我也正在做一个基于 FPGA 的数据采集系统,跟你的结构差不多: 传感器->信号处理电路—>采样保持电路—>A/D 转换->FPGA 处理->USB 传输—>PC 机显示(控制) 我已经实现了一些功能了,想 FPGA 控制 AD 转换芯片、USB 传输等! 我现在想通过上位机发送指令改变 AD 的采样率,以适应不同信号的采样! 其实你想在 FPGA 中多实现些功能, 那还是比较多的方法的! 例如, 将采集到的数据在 FPGA 中进行信号处理(如滤波、求幅值、周期等),可以在数码管上显示结果、在 LCD 上显示 更多结果甚至画出图像(这个应该比较有挑战性,^_^),还要根据你有什么样的设备、根 据你试验开发板上的设备来决定你能实现什么功能咯! 当然还要看你的实际用途了、 如果做 出来没实用价值,那就只当是 数字信号处理是一门庞大的学科,你采集的是声音信号、视频信号还是其它的什 么,不同的信号会有不同的处理方法。用 FPGA 实现 FIR 这就足够你搞一个毕业设计了。 FPGA 搞数字信号处理相对于用 DSP 来说,难度要大一些,主要是起步较晚,成熟的方案 较少。不过 Altera 的推出的 DSPbuilder 倒是功能挺强大的,与 Matlab 集合起来,可以实 现很多复杂的算法。

基于 FPGA 的数据采集控制模块设计
时间:2009-12-25 09:18:30 来源:现代电子技术 作者:孙炎辉,丁纪峰 大连民族学院

0 引 言 数据采集和控制系统是对生产过程或科学实验中各种物理量进行实时采集、测试和反馈 控制的闭环控制,它在工业控制、军事电子设备、医学监护等许多领域发挥着重要作用。其 中,数据采集部分尤为重要,而传统的数据采集系统,通常采用单片机或 DSP 作为控制器, 用以控制 ADC、存储器和其他外围电路的工作,使得采集速度和效率降低。近年来,微电

子技术,如:大规模集成电路和超大规模集成电路技术的发展,为数据采集系统的发展提供 了良好的物质基础。 从而使器件向模块化和单片化发展, 使所用软件均向实时高级语言和软 件模块化发展,接口向标准化发展。由于 FPGA 时钟频率高,内部延时小,全部控制逻辑 均由硬件完成,速度快,效率高,同时它有非常强大的硬件描述语言和仿真工具,方便检验 结果的正确性。 基于以上考虑, 在设计中采用 FPGA 作为控制处理器。 VGA 接口的设计, 而 更突出了该模块的兼容性,更易于采集数据的直观表现。 1 系统总体设计方案 完整的数据采集过程通常由数据的通道选择、采样、存储、显示构成,有时也要对数据 进行适当的处理。其中,控制模块起到了核心作用,他作为控制信号产生和处理的中枢对这 些外围电路进行着实时的监控和管理。 设计过程中采用 FPGA 作为控制器, 完成对 A/D 转 换器的控制,并将采集到的数据存储到一定的存储单元.通过 VGA 接口协议,最后在显示 器上显示。具体涉及的外围电路中,数据采集部分主要应用 ADC0809 作为数据采集芯片, 对输入的模拟量进行 A/D 转换;数据缓存部分应用 6116 作为存储芯片,用来缓存 0809 采 集的数据;按键控制部分利用 8 个按键来控制 0809 的转换通道选择;图形显示部分输出标 准的 VGA 信号,使用 CRT 显示器,以显示实时波形。由于在设计中对外部器件进行控制的 控制器都是由 FPGA 完成的,FP-GA 的工作量很大,因此所采用的 FPGA 芯片为 FLEX 系 列中 30 万门的 EPF10K30。 2 基于 FPGA 的主控模块的实现 主控制器的工作原理如图 1 所示。

通过一个 A/D 转换控制器产生对 ADC0809 的控制信号。启动 ADC0809 之后,随即 就会按照一定频率进行 A/D 转换。 同时通过一个数据锁存信号将数据锁存到 A/D 转换控 制模块中。这个锁存信号将作为 RAM 控制器写输入控制信号。当 RAM 读写控制器的写控 制信号有效之后,将开启 RAM 的写使能有效信号,将采集到的数据写入 RAM 的第 600 个 地址单元中,然后 RAM 控制器将 RAM 中的数据向上移动一位,移动完之后,产生一个数 据更新完毕信号,之后才通过内部的一个控制信号,允许从 RAM 读出数据。若 RAM 中读 数据使能, 每当 VGA 显示控制器发出一个读数据命令时, RAM 读写控制器便开启 RAM 的 读有效信号, 读出 RAM 中的数据, 并且通过 VGA 控制器的时序控制和输出信号进行显示。 外部的按键部分共有 8 个,这 8 个按键控制 ADC0809 的 8 路通道的选择。键盘控制器的功

能就是扫描所按下按键的行和列值,并且合成键值。转换成按键数值 0~7,最终控制 8 个 模拟输入通道的选择。 2.1 VGA 显示控制器的设计 常见的彩色显示器一般由阴极射线管(CRT)构成,彩色是由红、黄、蓝(R,G,B)三基色 组成的,用逐行扫描的方式解决图像显示。其引出线共含 5 个信号:R,G,B 三基色信号; HS;行同步信号;VS;场同步信号。 对于 VGA 显示器的这五个信号的时序驱动要严格遵循“VGA 工业标准”,即 640× 480× 60 模式,否则会损害 VGA 显示器。在此,控制器共有 2 个输入信号,6 个输出信号。CLK 连 接到外部的晶振上,其晶振频率是 50 MHz。由于 VGA 工业标准所要求的晶振频率是 25 MHz。因此,在此控制器中首先要将时钟进行二分频。RD 是一个 8 位的数据量,它接收从 RAM 读出的数据。输出信号 READ 用于控制 RAM 控制模块开启 RAM 的读有效信号,只 要 READ 有变化,那么将进入读数据状态,由 RD 接收读出来的数据。HS 和 VS 分别是行 同步信号和场同步信号,R,G,B 为三条输出的信号线。显示波形是通过改变 R,G,B 这 三条输出信号的值来实现的。 每读出一个数据,其实是对应着一个像素点。由于这里所采集的电压值范围是 0~5 V, 对应 ADC0809 转换成的数据量是 0x00~0xFF、 ,所以在设计时只要将 RD 接收的具体数值 与显示器中的某一行相对应即可, 具体实现用比较语句就可以实现行定位, 同时列辅助寄存 器 LLV 加 1 即可,这样即可实现连续波形。这些点连接起来就是一个完整的波形,而其中 行同步和场同步信号的产生则分别由内部信号 CC,LL 根据已知的输入时钟,通过计数器 计数的方式,达到工业标准要求的频率。 2.2 A/D 转换控制器的设计 在此设计中,是利用状态机对 A/D 转换进行控制的。控制 ADC0809 采样状态图,如图 2 所示。

在状态 ST0 中,对 0809 进行初始化,之后进入到状态 ST1;在状态 ST1 中,ALE 和

START 信号有效,这时 EOC 信号变为低电平,进入转换状态 ST2。此时,需要对 0809 工 作状态信号 EOC 进行测试,如果为低电平,表示转换没结束,仍需要停留在 ST2 状态中等 待, 直到变成高电平后才说明转换结束, 在下一时钟脉冲到来时转向状态 ST3。 在状态 ST3, 由状态机向 0809 发出转换好的 8 位数据输出允许命令,这一状态周期同时可作为数据输出 稳定周期, 以便能在下一状态中向锁存器中锁入可靠的数据。 在状态 ST4, 由状态机向 FPGA 中的锁存器发出锁存信号,将 0809 输出的数据进行锁存。 2.3 RAM 读写控制器的设计 在该模块设计中,RAM 读写控制模块又分为读控制模块、写控制模块和读写状态转换模 块。 写控制模块中两个输入信号分别与 A/D 转换控制模块的数据锁存和转换输出相连。 当 锁存信号使能,即发出写信号,将数据存储到外部 RAM 的第 600 个地址空间之后,再对之 前的数据进行前移, 以达到数据的及时更新。 读控制模块的控制信号分别与写更新完毕信号 和读信号相连,当写更新完毕信号使能时,只要接到读信号,则依次读完外部 RAM 前 600 个地址空间(一场)的数据。 2.4 键盘扫描控制器的设计 键盘控制模块由四个模块组成,包括:时钟分频模块、行键值输出模块、键值锁存模块 和键值合成模块。键值锁存模块将按下按键的行、列信息锁存,并交由键值合成模块,该模 块配合行键输出模块输出的结果进行查表,最终确定键值。 3 仿真结果 Max+PlusⅡ仿真平台的图形输入方式直观,符合传统数字系统设计人员的习惯,便于进 行接口的设计,容易实现仿真,便于信号的观察。基于以上考虑,利用此平台,用硬件描述 语言 VHDL 来实现各个功能模块,A/D 转换控制器和 VGA 显示控制器模块的时序仿真结 果如图 3、图 4 所示。

4 结 语 这里的数据采集控制模块主要以 FPGA 为基础,本着软件硬件化的思路,着重研究主控 制模块的实现。由于采用 FPGA 作为控制处理器,其速度快,效率高,且标准的 VGA 接口 使得系统的使用更加便捷,键盘控制的多通道间切换,也为实现多路采集奠定了基础。

基于 FPGA 的嵌入式系统 USB 接口设计

2010 年 4 月 2 日 11:36

国外电子元器件

作 者:杨志坤 曾博 汤国文

摘要:设计基于 FPGA 的 IP-BX 电话应用系统,用于传统的电话网络(PSTN)与 PC 机之 间的接口连接。USB2.0 接口器件 EZ-USB FX2 CY7C68013A-56 工作在 slave FIFO 模 式,为基于 FPGA 的嵌入式系统与 PC 机之间提供数据和命令通道,从而可满足 PC 机 与 FPGA 之间数据与命令的高速传输,实现 PSTN 与 PC 机之间的电话通信。硬件调试 结果表明系统工作稳定,通话质量满足要求。 关键词:接口;FPGA;USB2.0;slave FIFO 通用串行总线 USB(Universal Serial Bus)是应用于 PC 领域的接口技术,已得到广 泛应用。USB2.0 已成为目前电脑中的标准扩展接口。本系统设计的目的在于为公共 交换电话网络(PSTN)和 PC 机之间提供一个数字接口, 设计中 PC 机是主机, 基于 FPGA 的嵌入式系统是 USB 设备。该系统是 IP-PBX 的简化系统,大量工作由 PC 的服务器完 成,而这里重点介绍以 FPGA 为控制核心的 USB 接口设计。 1 系统结构设计 该系统通过 TRM(Telephone Response Module)和 PC 服务器实现 PSTN 网络和 Internet 网络之间自由、高效通话。图 l 为整个系统结构示意图。

系统工作过程:当有来电时,DAA 向 FPGA 申请中断。FPGA 收到中断后,使用 USB 的 中断传输向主机报告有外接来电,则 PC 的应用软件会提示用户选择摘机或拒绝。摘 机后,FPGA 在接收到命令后就会接通电话,然后语音数据通过 USB 的同步传输进行 双向传送。当用户向外拨号时,其过程与来电时的情况是相同的。 2 系统硬件模块设计 2.1 系统硬件框图 本设计采用 FPGA 作为核心控制器件,其控制对象是 USB2.0 接口器件 EZ-USB FX2 CY7C68013A-56。图 2 为 EZ-USB 器件工作在 Slave FIFO 模式下时 FX2 USB 和 FPGA 的

典型电路连接图。

2.2 FPGA 和 USB 简介 设计中的核心控制器件 FPGA 选用 Ahrea 公司的 EP2C8Q208C8,而 USB 设备器件则选 用 Cypress 公司的 CY7C68013A-56。EP2C8Q208C8 是 Ahera Cyclone II 系列器件中的 一种,Cyclone II FPGA 是基于 Stratix II 的 90 nm 工艺生产的低成本 FPGA。Cyclone II FPGA 的应用主要定位在终端市场,如消费类电子、计算机、工业和汽车等领域。 EP2C8Q208C8 内部有 2 个锁相环(PLL)和 8 个全局时钟网络,8 256 个逻辑单元(LE) 个,36 个 M4K RAM,18 个乘法器模块,可用 I/O 数 138 个。EP2C8Q208C8 具有低成 本、高性能、低功耗和对 IP-PBX 系统的可扩展性(足够多的 I/O 接口)的优点,因此 这里选择该器件作为系统的控制器件。 CY7C68013A-56 器件是第 1 个包含 USB2.0 的集成微控制器,其内部集成有 1 个增强 型的 8051, 个智能 USB 串行接口引擎(SIE), 个 USB 数据收发器, 个 8 位。 1 1 3 I/O、 16 位地址线、8.5 KB RAM 和 4 KB 的 FIFO 等。增强型 8051 内核完全与标准 805l 兼 容,而性能可达到标准 805l 的 3 倍以上。图 3 为 CY7C68013A-56 的结构框图。

CY7C68013A 器件在数据传输时利用 4 KB 的 FIFO, 包含 7 个端点: EPOIN/OUT, EPlIN, EPlOUT, EP2,EP4,EP6,EP8。其中 EPO、EPIIN 和 EPlOUT 是 3 个 64 B 的缓冲端点,只能被固件访 问,EP0 是默认的数据输入输出端口缓存,默认工作于控制传输,EPlIN 和 EPlOUT 是独立的 64 B 缓存,可以配置成块传输、中断传输或同步传输。端点 2、4、6、8 是大容量高宽带的 数据传输端点, 可配置为各种带宽以满足实际需求。 端点 2、 能配置成每帧成 512 B 或 l 024 6 B,并可配置为 2、3、4 级,则 EP2,EP6 最大能被配置为 4 KB 的缓存;端点 4、8 则能配置 为每帧 512 B 的缓存。 3 系统软件设计 3.1 USB Firmware 设计

由于设计中使用 FPGA 控制 USB 设备进行语音电话通信,所以在 USB 部分使用 3 种 USB 传输 模式:控制传输、中断传输、等时传输。控制传输用于实现设备枚举主机的标准请求以及厂 商自定义请求; 中断传输用于实现设备对主机的唤醒, 是唯一的设备主动向主机发送数据的 传输方式;等时传输用于实现语音数据的双向同步传输。USB Firmware 设计重点是语音的 通信段。 CY7C68013A 具有 PORTS、Slave FIFO、GPlF 共 3 种工作模式。PORTS 模式是最基本的数据传 输方式,其数据传输需 CPU 直接参与,适于传输速率要求不高的场合;GPIF 模式是主机方 式,内部主机控制端点 FIFO;Slave FIFO 模式是从机方式,外部控制器,如 FPGA、DSP。 应用中使用异步 FIFO 方式, 采用内部 48 MHz 时钟, 自动方式, 而固件程序的编写则以 Cypress 公司提供的固件程序框架为基础,在其初始化函数中添加自己的配置代码。 在整个系统中,CY7C68013A 的固件主要完成以下工作:初始化 USB 器件;作为 USB 接口与 主机通信并传输数据; 利用 CY7C68013A 器件的 Slave FlFO 接口控制 USB 器件和外部控制器 之间的数据传输。因此同件主程序比较复杂,除了上面的 TD_lnit()初始化外,还需要大量 函数,但基本结构相对简单,包括 3 个过程:USB 控制器的初始化;主函数,包括处理标准 设备请求的代码;中断处理,包括处理各种中断的程序代码。图 4 为同件主程序流程。

3.2 USB 驱动程序 USB 系统软件由主机中的软件和设备同件构成。USB 主机中的软件主要包括 USB 设备驱动 (USBDD)、USB 总线驱动(USBD)和 USB 主控制器驱动(HCD)。 USB 设备驱动程序(或客户驱动程序)处于最顶层,它支持特定设备类的驱动,负责与其对应 的 USB 设备进行通信和读写控制, 实现各个 USB 设备特殊的功能应用。 连接 USB 设备的每种 类型的功能单元都必须具有客户驱动程序。 客户驱动程序把 USB 设备看作是一个可被访问的 端点的集合。 USB 设备可以被控制并与其功能单元通信。 USB 设备驱动程序通过 I/O 请求包 (IRP)向 USB 总线驱动程序发送请求。这些请求包将一个给定的传输初始化。这种传输可以 来自于一个 USB 目标设备或发送到 USB 设备。 USB 总线驱动(USBD)是在主机控制器驱动和 USB 设备驱动之间的模块,它对应 USB 协议的 USBD,在 Windows 系统中由 USBD.SYS 模块提供。它是在某一操作系统上对 USB 总线和协议 提供支持的软件, 独立于 USB 设备和 USB 设备驱动, 并对它们进行控制和提供统一编程接口。 USB 主控制器驱动程序(HCD)处于最底层,它负责对主机控制器进行抽象和对 USB 提供低级 支持。 3.3 PC 端的软件设计

PC 端的软件设计采用面向对象程序设计, 分为核心类(包括 Provider, Data, Net) 和应用类(包括 UI,Call,Record)。其中核心类提供对硬件、操作系统和网络 环境的支持,应用类在核心类的基础上提供对用户操作的支持。Provider 类定 义对 USB 设备的读写操作,提供读取数据方法(readusb())和写数据方法 (writeusb());Data 类包括地址数据(Address)、音频数据(Audio)和控制数据 (Command)的定义,并提供数据的分解方法(Decompose())和组合方法 (Compose());Net 类提供对网络的支持,包括网络协议的选择和数据的接收与 发送。UI 类提供对用户界面的支持,包括窗口、对话框等,实现基本用户框架 与应用入口;Call 类提供通话功能;Record 类则提供电话录音功能;根据不同 应用要求,可扩展其他应用类。具体结构如图 5 所示。
基于 FPGA 的嵌入式系统 USB 接口设计

2010 年 4 月 2 日 11:36

国外电子元器件

作 者:杨志坤 曾博 汤国文

4 结束语

USB 灵活的接口和可编程特性可简化外部硬件的设计,提高系统可靠性。 而 USB2.O 控制器 CY7C68013A 也广泛应用于许多数据传输领域。FPGA 已 成为通信、 计算机、 消费类电子产品等领域的基础器件。 这里所介绍的 USB 设备就是一个基于 FPGA 的嵌入式系统,该系统软硬件都具有模块化的特 性,易于改造成其他应用场合的语音控制系统(DAA 除外)。该设计的应用 可节省大量的人力、物力。具有较大的推广意义和使用价值。


相关文章:
基于蓝牙的数据采集技术 毕业设计
基于蓝牙的数据采集技术 毕业设计_电子/电路_工程科技_专业资料。本文是基于蓝牙的数据采集 技术的 毕业设计天津工业大学 毕业论文基于蓝牙的无线数据采集系统 姓学专...
基于DCS数据采集的应用开发
基于DCS 数据采集的应用开发摘要 集散控制系统 DCS 自问世以来,广泛应用于石油、化工、电力等工业领域,DCS 系统的使 用提高了装置的控制精度,分散了系统风险,提高...
基于无线通信的数据采集系统的设计
本文以一种基于 RF的无线数据采集系统研制过程为主要内容,详细阐 述了利用无线收发芯片 nRF2401设计的数据采集系统的设计流程、开发方法和开 发过程,给出了具体的...
基于单片机的多路数据采集系统设计毕业论文_图文
基于单片机的多路数据采集系统设计 The Design Of Multi-channel Data Acquisition System Based On SCM 摘要本文介绍了基于单片机的数据采集的硬件设计和软件设计,数据...
基于DSP的数据采集系统
基于DSP 的高速数据采集系统的设计摘要:本文在讨论了 TMS320VC5409DSP 芯片和 ADS7805AD 转换芯片的特点的基础上,设计了具有较高精度 和速度的数据采集系统。并且...
基于单片机的多路数据采集系统_图文
基于单片机的多路数据采集系统_信息与通信_工程科技_专业资料。基于单片机的多路....(6) 当EOC 变为高电平时,这时给OE 为高电平,转换的数据就输出给单片机了...
基于PC的数据采集系统-精品
内蒙古科技大学毕业设计说明书(毕业论文) 基于PC的数据采集系统 摘要 数据采集是通过传感器把被测信号转换成电压或电流信号,通过信号采集卡采集数 据,并进行相应的...
基于单片机的数据采集系统设计
基于单片机的数据采集系统设计_信息与通信_工程科技_专业资料。摘要本论文的目的就是设计实现一个具有一定实用性的实时数据采集系统。 本文介绍了基于单片机的数据采集...
基于单片机的数据采集系统的设计
年 月 日 题专姓 目:基于单片机的数据采集系统的设计 业:机械设计制造及其...1.2 数据采集数据的采集是以单片机为核心控制器件,结合外围电路所构成。基本组成...
数据采集采集
功能以及网管站和远程监控器之间 的接口实现对一个网段乃至整个网络的数据流量的...基于网络流(NetFlow)的流量采集 NetFlow是Cisco公司提出的网络数据包交换技术,它...
更多相关标签: