基于CY7C68013芯片接口和可编程特性的数据采集系统的设计

在现代电子系统中,在信号测量、图像处理、音视频信号处理等一些高速、大容量的信号采集和传输过程中,数据的实时采集和实时传输受到人们越来越广泛的重视。现在通用的数据采集卡一般是pci卡或是isa卡,这些采集卡存在诸多缺点,比如安装不方便、传输速度慢、受计算机插槽数量、地址、中断等资源的限制.可扩展性差。
ljsb(universal serial bus),其中文名称为“通用串行总线”。他是为了解决计算机外设种类口益增加与有限的主板插槽和端r丁之间的矛盾.由intel,microsoft,ibm,nec,lucent等7家厂商共同制定的总线标准。目前,常用的lisb 2.o版本支持的最高传输速度可达到480 mb/s.他以速度快、成本低、可靠性高、支持即插即用和热插拔等优点,迅速得到众多pc厂商的大力支持。同时,开发这种基于usb 2.0的高速数据采集系统,代表了现代数据采集和传输系统的发展趋势,他也将被越来越多的用户所接受。
1 系统硬件整体设计
该系统总体框架为pc机(能支持usb 2.o协议的计算机)、a/d转换模块、fpga控制模块、lysb控制模块,如图l所示。
从整体上看结构可分为2个部分:高速数据采集模块的设计;usb 2.o高速数据传输系统。
1.1数据采集模块
该系统主要由l片高速ad 芯片、1片sdram和l片a1tera公司的fpga构成。由于系统设计采样速度最大为1()0 mhz.据采样定理,采样频率至少应在200mhz以上,所以a/d芯片采用analog公司的高速a/d芯片ad9480。该芯片转换精度8 b.单一3.3 v电源供电,低功耗,最高工作速度为250 ms/s,采用差分形式、lvds电平输出,经过测试可以很好地满足系统要求。
为了满足数据采集中高速实时流数据的应用,避免fifo溢出,本系统通过fpga及sdram构造一个大容量的fifo,可以提供一个低成本并且能满足高速实时流数据传输的方案。
低速数据采集系统常使用mcu作为cpu来控制,但在高速数据采集系统中,采样速度往往受mcu速度的影响,而且随着速度的提高,adc,sdram和mctj之间的时序同步问题也显示出来,因此系统使用了高速fpga芯片来控制adc和sdram,从而很好地解决了时序精度和同步的问题。
fpga选择a1tera公司的cyclone系列高性价比产品eplc6t144c8。他基于1.5 v,o.3 μm及全层铜sram工艺,其密度增加至20 060个逻辑元件(le),ram增加至288 kb。他具有锁相环以及ddr sdr和速度周期ram(fcram)存储器所需的专用双数据(ddr)接口等。cyclone器件支持多种i/o口标准,包括640 mb/s的lvds,以及速率为33 mhz和66 mhz,数据宽度为32 b和64 b的pci。fpga实现的功能逻辑主要有:实现对adc的控制,开始a/d转换;为adc同步提供sdram地址计数和写信号,把每次a/d转换的结果直接存入sdram,并自动增加地址;当地址计数器达到最大时,发出ramfull中断信号,提示sdram已满。
fpga的功能逻辑用vhdl语言实现,其编译和仿真使用altera公司的quartusⅱ5.1,使用byteblastⅱ并行编程电缆和jtag口下载编程和配置文件。
1.2 usb 2.0高速数据传输
用于usb设备开发的芯片通常有2种类型:一种是mcu集成在芯片里面,如cypress的ez-usb;另一种是纯粹的usb接口芯片,仅处理usb通信,使用时必须由外部微控制器(mcu)进行控制,如philips的pdiusbd1 2,national semiconductor的usbn9604等。在本设计中经过论证分析,采用第一种类型,采用cypress公司的ez-usb fx2系列的cy7c68013芯片。
1.2.1 ez-usb fx2(cy7c68013)芯片
cypress公司的ez-usb fx2系列芯片是最早符合usb 2.0协议的微控制器之一,他集成了符合usb 2.o协议的收发器(transceiver),串行接口引擎(sie),增强型的8051内核以及可编程的外围接口。fx2系列芯片独特的结构使得数据传输速度最高可达56 mb/s,最大限度地满足了usb 2.o的带宽。cy7c68013集成标准8051内核,且具有下列增强特性:可以达到48 mhz时钟;每条指令占4个时钟周期;2个usarts;3个定时/计数器;扩展的中断系统;2个数据指针。
805l程序从内部ram开始运行,借助如下3种方式进行程序装载:通过usb下载,从e2prom中装载;通过外部存储器设备。内部集成了达4 kb的fifo,用户程序发送数据时,直接从fifo里读取,保证了数据高速传输,与外部实现透明数据传输。
1.2.2 硬件连接
根据系统对数据传输的速度和实时性的要求,配置cy7c68013工作的接口模式为slave fifo模式。当进行数据采集时,硬件连接方式如图3所示。
a/d转换器的采样时钟同时作为cy7c68013的slave f=ifo模式的读写控制时钟,即cy7c68013的接口时钟连接到ifclk引脚。slwr/slrd是cy7c68013slave fifo的写使能/读允许信号。fpga向cy7c268013slave fifo提供slave fifo输出允许信号sloe,仅在数据输出时有效。fd[15:0]为16 b双向数据总线。fi-foadr[1:0]为端点fifo选择信号。在数据输入时固定为oo,选择端点2;在数据输出时固定为10,选择端点6。
2 系统程序设计
usb系统的软件设计可分为3部分:固件设计、驱动程序设计和用户端的应用程序设计。
2.1 固件(firmware)设计
固件程序实际上就是单片机方面的软件设计,他是所有基于微控制器及其外围电路的功能设备正常工作必不可少的部分,其作用就是辅助硬件。
2.1.1 软件设计的主要功能
与软件设计主要有以下几种功能:初始化工作,包括设置一些特殊功能寄存器的初值以实现所需的设备属性或者功能,例如开中断,使能端点,配置端口等;辅助硬件完成设备的重新枚举过程,包括模拟设备的断开与重新连接,对接收到的设置包进行分析判断,从而对主机的设备请求作出适当的响应,完成主机对设备的配置任务;对中断的处理;数据的接收和发送;外围电路的控制。
cypress公司为了简化和加速用户使用ez-usbfx2芯片进行usb外设的开发过程,提供了一个完整的固件程序的架构,可以在keilc5l环境下开发,用户只需要提供一个usb描述符表,添加其他端点接收和发送数据的通信代码,以及控制外围电路的程序代码。由于开发框架的引入,大大缩短了用户的研发周期。
2.1.2 软件设计的框架
该框架由以下几部分组成:
(1)fw.c中包含了程序框架的main函数,管理整个51内核的运行,因为cypress对这个部分的功能进行了精心划分,一般是不用改动的。
(2)用户必须将periph.c实例化,他负责系统周边器件的互联。固件的设计主要针对这个文件,用户必须根据自己系统的需要,实例化这个文件,以实现自己的功能。在这个文件中有几个函数是比较关键的,在这里做特别说明:
td_init函数 负责对usb端点进行初始化设置。在fx2再次枚举和开始任务分配前被调用,其目的是初始化各个端口以及各端口的先入先出缓冲区。
td_poll函数 负责系统中循环任务的处理。他主要是对各个端点的状态进行查询,处理各种out或in端点的交互。值得说明的一点是,这种处理只是辅助性质的,大部分工作由硬件自动完成。
dr-vendorcmnd函数 主要负责用户自定义命令的译码工作,用户请求通过端点o传输给内核。由于cy7c68013上sie硬件的支持,用户只需查询固定地址单元即可获得当前的命令代码。
dscr.a51是描述表文件,负责usb设备的描述工作,cy7c68013在上电后自动利用其中的vid和pid取代默认的vid和:pid。两个包含文件eztjsb.lib和us-bjmptb.obj,前者是ezusb函数库的二进制文件,后者是usb的中断向量表。
固件调试,使用cypress提供的ez-lisb controlpanel,具体的操作读者可以参考其自带帮助。对编译好的固件代码,cypress为lisb总线设备开发者提供了2种方法向。ez一usb芯片下载8051固件代码:
一种是主机通过软件下载固件从主机上下载8051固件代码,他为用户提供了很大的灵活性。这种方法充分利用ez-usb内部的8 k ram来装载8051代码和数据。由于ez-usb具有重新枚举的能力,所以在初始化枚举以后,用户不需要断开设备就可以装载新的。设备描述符和8051程序代码都能通过主机中的磁盘文件下载;另外一种是由e2prom通过i2c口来下载固件。ez-usb支持外部e2prom通过总线来下载固件,这种方式使开发者可以从外围硬件下载8051程序代码。
2.2驱动程序设计
usb设备驱动程序是开发usb外设的一个关键,他在整个系统中处于主机端应用程序和设备端firmware之间。他的主要作用是使操作系统能够识别usb设备,并建立起主机端和设备端之间的通讯。
usb驱动程序属于先进的wdm(win32 driver mod-e1)驱动程序模式,支持即插即用功能。在wdm驱动程序模式中,每个硬件设备至少有2个驱动程序:一个为功能驱动程序,即硬件设备的驱动程序,他了解usb外设硬件工作的所有细节,负责初始化i/o操作;另一个为总线驱动程序,他负责管理usb外设与主机的连接,如检测接入主机的usb设备,并确定设备的资源使用情况等。总线驱动程序要负责枚举总线,并为每个设备创建一个pdo(物理设备对象)。当总线驱动程序发现有设备接人或拔出总线时,他要向上层驱动程序报告事件的发生。功能驱动程序位于总线驱动程序的上层,他要为设备创建一个fdo(功能设备对象)。usb驱动程序也称客户驱动程序,他从不直接与硬件对话,仅靠创建usb请求块urb,并使用usb驱动程序接口usbdi将urb提交到总线驱动程序就可以完成硬件操作。
在windows操作系统下,开发wdm驱动程序可以有2种选择:一种是选择微软公司的ddk(驱动程序开发包)。ddk提供了创建wdm驱动程序的开发环境,并提供了用于开发windows 2000和windows xp驱动程序的头文件、库函数、源代码、各种工具和文档资料;另一种选择是使用一些驱动程序的辅助开发工具,比如driver stu-dio,windriver等,这些开发工具可以根据用户的需求,为用户自动生成驱动程序,用户只需要在生成驱动程序前,在向导框中按照提示填入自己的需求,并对生成的驱动程序做一些小的修改即可。
cypress fx2开发包提供了一个通用的驱动程序,可被用于基于ez-usb系列芯片的usb设备。该程序可不加修改经ddk编译后直接使用,在应用中可以看到其运行稳定。当然,用户也可以以这个驱动程序为起点,创建自己的驱动程序。 2.3应用程序设计
应用程序设计以驱动程序为桥梁,对15sb设备进行命令控制,处理usb设备传回的数据,例如波形显示、频谱分析等。采集系统的主机端工作在windows操作系统下,所以主机端应用程序的设计需要windows平台下的开发工具如visual c++,c++builder。等。主机端软件的关键是实现从usb设备读取指定数量的数据以及向usb设备发送指定数量的数据,另外,还有向usb设备发送usb标准设备请求和特定的命令,这种命令包括厂商定义的命令和用户自定义的命令。
cypress fx2开发包提供的ez-usb通用驱动程序为主机端的用户态应用程序提供ijsb标准设备请求和数据传输的接口。所有用户态程序访问ez usb通用驱动程序都是通过i/ocontrol调用。用户态程序首先通过调用win32函数creatfile()得到设备驱动程序的句柄。然后调用win32函数devicelocontrol(),通过得到的句柄把i/o control code(ioctl)和相关的输入输出缓冲区提交给驱动程序。用户程序框图如图4所示。
3 结 语
随着笔记本电脑的迅速普及,高性能便携式采集系统将会受到工程师们越来越多的青睐,尤其是在rs 232接口已被大多数笔记本电脑摈弃的今天,对基于usb接口的数据采集系统的需求就变得更加迫切。在该高速同步数据采集系统的设计中,cy7c68013芯片灵活的接口和可编程特性简化了外部硬件的设计,提高了系统的可靠性,且利于设备的生产与调试。另外,设备的可热插拔特性使该系统具有便携式的特点,使用方便,无需关机重启或打开机箱进行安装。事实证明,该基于2.0接口的高速数据采集系统完全满足设计和使用要求。

华为荣耀9和荣耀v9有什么区别?亲兄弟之间的较量你支持谁?华为荣耀9和荣耀v9评测对比
电源芯片细分的三大类、六小种,你知道吗?
热电偶如何接线?热电偶接线为何使用补偿导线?
5G智慧路灯杆对城市来说有什么作用?
开年资本“热”,已有3家LED企业完成最新一轮投资
基于CY7C68013芯片接口和可编程特性的数据采集系统的设计
Origin Q一周速览:量子计算或将在金融业大显身手
中国移动开启新一轮5G建设招标
深度解析ug1292建立时间违例分析流程
74ls160价格 74ls160十进制计数器简介
邱慈云:中国半导体的发展与机遇
苹果手机经常死机或自动重启应该如何解决
集成电路设计企业泰凌微科创板IPO获受理
积塔半导体联合制作的第一款车规750V IGBT芯片通过车规级验证
单芯冷却风扇方案设计
大功率LED照明电源设计方案
激光发射器/接收器电路 LASER Transmitter/
首尔半导体提起的专利侵权案获胜诉 双方达成和解并支付专利使用费
智能化薄膜在线检测仪的原理及功能
电源合理应用之输入保险丝要求