首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Niosll和USB接口的高速数据采集卡设计之二

Niosll和USB接口的高速数据采集卡设计之二

  CY7C68013集成了USB2.O收发器、SIE、增强的8051微控制器和可编程的外围接口部件。其SIE可在全速(12 Mb/s)和高速(480 Mb/s)两种模式下运行,同样可以使用内部RAM来进行程序和数据的存储。GPIF和Master/Slave端口FIFO为ATA、UTOHA、EPP、PCM—CIA和DSP等提供了简单和无需附加逻辑的连接接口。其编程可以根据设计的需要进行,不需要CPU的干预,只需通过CPU的一些标志和中断即可进行通信。CY7C68013共有7个输入输出端口:EP0、EPlOUT、EPlIN、EP2、EP4、EP6、EP8,其中EP2、EP4、EP6、EP8可以分别被配置为批量/中断/同步传输模式,传输方向均可配置为I/O,端口EP2、EP6的缓冲区大小可编程为512或1 024字节,深度可编程为2/3/4倍大小;端口EP4、EP8的缓冲区大小固定为512字节,深度为2倍,采用不同的配置方式,可实现特定带宽和速率要求的数据传输。

  2.2 主控电路FPGA芯片


  EP2C8Q208EP2C8Q208主控电路如图3所示。

  FPGA芯片也是一种特殊的ASIC芯片,属于可编程逻辑器件,它是在PAL、GAL等逻辑器件的基础上发展起来的。同以往的PAL、GAL等相比,FPGA规模比较大,适合于时序、组合等逻辑电路应用。本文选用A1tera公司的FPGA芯片EP2C8Q208,完成数据采集卡的时序和地址译码电路设计。由于EP2C8Q208有36个M4K RAM,在FPGA内部设计一个16位宽度、4 KB深度的FIFO,使用FIFO提高数据采集卡对多通道信号的采集存储能力。FIFO有半满、全满、空标志位,当检测到半满标志位时,FIFO同时读写;全满时只读不写;空时只写不读。A/D采样控制信号通过FPGA控制;PC机对采集后的数据作进一步处理,以提高精度,其中2选1模块,由主控制模块来控制,选择是直接将采集数据送给PC机处理,还是在内部进行DSP处理后再送给PC机。

  由于Nios是一个位于FPGA中的处理器软核,定制其外设就显得比较容易,在SOPC Builder(集成到Quartus II工具中的为建立SOPC系统设计,提供标准化的图形设计环境。其由CPU、存储器接口、标准外围设备和用户自定义的外围设备组成)环境下,其定制逻辑的结构框图如图4所示。

  自定制的Avalon外设按照对总线操作的方式可分为:Avalon Slave外设和Avalon Streaming Slave(流模式)外设。在SOPC Builder图形设计界面下添加需要的内核。通过自动分配系统基地址和系统中断向量,手动分配CPU复位地址为外设Flash、CPU溢出地址为片上RAM和CPU调试断点地址为JTAG调试地址,就可由系统报告得知系统是否定制成功,如图5所示。

  2.3 ADC芯片及外围电路设计


  ADC外围电路框图如图6所示。

  信号调理部分选用高精度、低噪声、低输入偏置电流、宽带运算场效应放大器AD8ll进行信号的放大。模拟信号处理是影响系统性能的重要因素之一,设计时必须考虑两个方面:一是要保证信号质量,提高信噪比,尽量减少畸变;二是将信号变换成适合A/D处理的幅度并提供足够的驱动能力。这里选用ADI公司的宽带运放AD811为放大器。AD8ll是一种电流反馈型的放大器,它具有10 MHz的低失真和单位增益带宽很宽的特点,使AD81l成为理想的高分辨率ADC缓冲器。之后针对信号进行档速变换。档速变换选用ADG系列产品。本设计选用的是一款四路独立选择的单片CMOS开关芯片,其设计基于增强的lc2mos进程、可以提供低功耗、高转换速度和低阻抗性,当信号满足A/D变换的要求后,根据采集要求将其由单端输入变换为差分的双端输出,芯片选用AD8138。AD8138具有较宽的模拟带宽(320 MHz,一3dB,增益为1),可以将单端输入变成差分输出。A/D转换的触发则由信号放大芯片AD811采集信号和D/A转换芯片信号进行比较,当有效时,发出ADn_TRIG信号,其中D/A转换芯片的输入标准信号(数字输入端)由FPGA来提供。当ADn_TRIG有效时,FPGA向AD924.4发出控制命令(DIN、FORMAT、MODE、SCLK、sYNC、FSYNC信号),启动A/D转换。

  A/D转换器的精密时钟由DDS电路AD9859YSV提供。


  3 软件设计及实现


  系统软件设计包括3部分:固件程序、USB设备驱动程序和应用程序。整个软件实现的功能包括系统初始化、采样控制、数据传输和波形显示。

  3.1 固件程序设计


  固件程序辅助硬件实现设备双向交换数据,以完成USB通信,其主要功能是:接收并处理USB驱动程序的请求及应用程序的控制指令,控制A/D转换器的采样。当首次插入USB时,FX2通过USB电缆会自动枚举且下载固件和USB描述符表;接下来,FX2再次枚举,这次主要通过下载的信息来定义设备。这两个步骤叫作重枚举。固件程序流程如图7所示。初始化包含各个初值的设置和关键点的电平检测。

  在Cypress公司的网站(http.//www.Cypress.com)上,可下载CY7(368013芯片的开发工具包。该开发包提供了一些开发固件程序所需的资源:Keil u Vision2集成开发环境(限制版)、Cypress C51固件框架程序以及一些例子程序。KeilCSl是一种专为8051单片机设计的高效率C语言编译器,符合ANSI标准,生成的程序代码运行速度极高,所需要的存储空间极小,完全可与汇编语言相媲美。同时,C51具有丰富的库函数,多达1O0多种功能函数。因此,采用C语言作为开发语言,以Keil uVision2作为工程开发平台,完成源代码的编写、仿真、调试,将在相当程度上降低固件开发难度,提高开发效率。

  3.2 USB设备驱动设计


  USB设备驱动程序的设计是基于WDM(WindowsDriver Model,驱动程序模型)的。WDM采用分层驱动程序模型,分为较高级的USB设备驱动程序和较低级的USB函数层。其中USB函数层由两部分组成:较高级的通用串行总线模块(us—BD)和较低级的主控制器驱动程序模块(HCD)。

  本设计用WinDK3.O开发了Win2000下的驱动程序,实现了控制传输、中断传输和批传输的标准接口函数。在应用程序开发中,可用VC++编制应用程序。把USB设备当成文件来操作,用Create—File得到USB句柄,用DevieeloControl来进行控制传输,用ReadFile、WriteFile进行批量传输。

  3.3 应用程序设计


  应用程序流程如图8所示。用户应用程序是数据采集系统的核心,其主要功能为:开启或关闭USB设备、检测USB设备、设置USB数据传输管道、设置A/D状态和数据采集端口、实时从USB接口采集数据、显示并分析数据。

  4 结 论

  用FPGA作为采集处理部分,可以提高系统处理的速度,大大增强系统的灵活性和适应性。FPGA技术和USB的组合,使得数据处理能力得到了极大的提高,且有利于系统升级。USB芯片采用了Cpyress公司的高性能USB2.0芯片CY7C68013,可以完全胜任大数据量的传送。该实例还可应用于实时数据采集、音频及压缩视频数据传输等领域。
记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表