kl800.com省心范文网

基于USB2.0芯片CY7C68013的高速数据通信接口设计


摘要: 利用 USB2.0 接口芯片 CY7C68013 实现了语音信号处理系统中 DSP 与 PC 机的高速通信, 简要介绍了 CY7C68013 的功能结构以及与 TMS320C6203B 的接 口设计,深入研究了该芯片的固件、设备驱动和应用程序开发。 关键词:EZ-USB FX2; CY7C68013; TMS320C6203B; 数据传输

ABSTRACT: Using CY7C6801 as the control chip, the communication between DSP and PC in the voice signals processing system is realized. A brief introd uction of the basic features of EZ2USB CY7C68013 and the designing of inter face to TMS320C6203B is provided. The development of Programming Firmwa re、device driver and application are thoroughly researched. Key words: EZ-USB FX2; CY7C68013; TMS320C6203B; data transmission 0 引言 由于 DSP 的工作频率较高,如 TMS320C6203B 时钟频率高达 250MHZ,故其数 据读写周期很短,然而 PC 机串口读写速度较低,最大数据吞吐量约为 115kbps, 尽管 DSP 在与这些慢速外设进行数据交换时可以加入额外的等待周期,但是在 实时性要求苛刻,算法复杂的场合,将 DSP 从这些冗长的等待周期中解放出来, 将其时间重点放在处理关键的实时任务中去,有着重要的实际意义[1]。为了提 高系统的实时性, 高速接口电路设计显得尤为重要。目前流行的 EZ-USB FX2 芯片的传输速率为 480Mbps, 较好地解决了 DSP 与 PC 机间高速数据传输时的带 宽瓶劲问题。本文设计并实现了 TMS320C6000 系列 DSP 上, 利用 EZ-USB FX 2 系列芯片 CY7C68013 的接口技术, 实现了 DSP 与计算机之间的高速数据传 输。 1 CY7C68013 结构特点 CY7C68013 是 Cypress 公司研制开发的 EZ-USB FX2 系列芯片, 该芯片符合 US 同时兼容 USB1.0 的全速工作模式[2], 它的功能框图主要包括 5 个部 B2.0 规范,

分(图 1): (1)收发器。USB 和 PC 机通过 D+和 D-两根信号线进行数据传输,数据以 480M bit/s 的全速信号或者以 240Mbit/s 的半速信号在 D+和 D-信号线上差分传输。 (2)智能接口引擎(SIE)。SIE 通过包排序、信号产生、信号检测、CRC 产生、CR C 校验、NRZI 数据编码、位填充、包标识产生和解码等功能来处理 USB 通信协 议,并保证传送到 USB 电缆上的数据字节以 LSB 开头。 (3)通用微控制器以及片上 RAM。USB 控制器采用通用的 8051 微控制器,即编 程语言为 51 系列单片机的通用语言,可使实际操作更加灵活方便。 (4)I2C 总线控制器。主要为完成将 USB 控制器作为主设备时必须的配置。 (5)片内 FIFO。其容量为 4KB,可以快速实现与不同速度的外设通信。 2 CY7C68013 与 TMS320C6203B 的接口电路设计 CY7C68013 是一个非常方便的 USB2.0 实现方案,它提供与 DSP 连接的接口, 连接方式有两种:Slave FIFOs 和 Master 可编程接口 GPIF[3]。本文采用 Slave FIFOs 异步读写方式。Slave FIFOs 方式是从机方式,DSP 可以象读写普通 FIFO 一样对 CY7C68013 内部的多层缓冲进行读写。具体的电路连接如图 2 所示:

图 1 CY7C68013 功能框图

图 2 CY7C68013 与 TMS320C6203B 电路连接图 FLAGA、FLAGB 和 FLAGC 是 CY7C68013 内部 FIFO 的状态标志,TMS320C6 203B 通过通用 I/O 口获得 CY7C68013 内部 FIFO 的空、半满(由用户设定半满 阈值)和满这 3 个状态信号,EMIF 接口的 CE2 空间对 CY7C68013 进行读写操 作。其工作过程为:DSP 通过 USB 向 PC 发送数据时,首先查看空、半满和满 这 3 个状态信号,然后向 USB 写入适当大小的数据,以保证数据不会溢出;PC 机通过 USB 向 DSP 发送命令字时,USB 通过中断方式通知 DSP 读取命令字。 3 软件设计 系统的软件设计包括 3 部分:C8051 固件设计、设备驱动程序没计和应用软件设 计。CY7C68013 的功能具体实现过程如下: (1)当设备连接时,Windows 的设备管理器自动检测到该设备,并读取由 CY7C6 8013 核心(并非 C805l 固件)传回的设备描述符,根据它提供的厂商和产品 ID 号 VID/PID(存放在 FX2 外接 E2PROM 中)与.inf 文件进行比较,找到固件下载驱动 程序(ezloader.sys),从主机将 C8051 固件下载到 CY7C68013 的 RAM 中。 (2)C8051 固件下载到 RAM 后,CY7C68013 仿真一个脱离再连接至 USB 总线的 过程,执行重新枚举过程,让 C805l 固件控制 USB 传输。Windows 的设备管理 器会检测到新的 USB 设备的连接,并根据 C8051 固件提供的厂商 ID(VID)/产品 ID(PID)(不同于 CY7C68013 核心提供的 VID/PID)来加载该 USB 设备的设备驱动 程序。 (3)应用软件调用 CreateFile()API 函数,使用识别该设备的符号链接来取得该设

备的代号。取得设备的句柄后,应用软件通过 DeviceIoControl()向 I/O 系统服务 发出要求传入数据的 I/O 请求,I/O 管理器将此请求构造成一个合适的 IRP 传递 CY7C68013 设备驱动程序根据该 IRP 中包含的具 给 CY7C68013 设备驱动程序。 体操作来构造相应的 USB 请求块, 并据此形成新的 IRP 传递给 USB 总线驱动程 序。USB 总线驱动程序根据该 USB 请求块从 CY7C68013 设备读取数据。操作 应用程序再对数据进行分析和处理 的结果再用 IRP 一层一层地返回给应用程序, [4]。 3.1 C8051 固件设计 Cypress 公司为了简化固件开发,缩短时间,加速 USB 外围的开发,在 EZ-U SB FX2 软件开发包里提供了固件架构。 该固件架构利用 C8051 的程序代码来实 现 CY7C68013 芯片起始设置、USB 标准设备请求的处理以及 USB 闲置模式的 电源管理服务。用户仅需提供其 USB 描述符表(即 dscr.a51)及实现外围功能的程 序代码(periph.c),即可完成完全兼容的 USB 设备。 固件的编译在 Kei 的集成开发环境中进行,在建立的项目中包含 5 个文件 ez _usb.lib、 usbjmptb.obj、dscr.a51 和 periph.c,其中: 固件架构程序流程如图 3 所示。该程序首先初始化所有的内部状态变量,然 后调用 TD_Init 函数进行初始化,初始化主要包括: (1)使 CY7C68013 工作于异步从 FIFO 模式。相应的寄存器操作为 IFCONFIG=0x CB。 (2)将 4KB 的 FIFO 对应到两个端点(EndPoint),即 EndPoint2 和 EndPoint6。相应 的寄存器操作为:EP2(:FG=0xA0,EP6(:FG=0xE2。EndPoint2 与 EndPoint6 分别对应 21kB 的内部 FIFO(下面分别称作 FIF02,FIF06),存放 LJSB 需要上传 与接收的数据。其中 EndPoint2 为 OUT 型,负责从主机接收数据;EndPoint6 为 IN 型,负责向主机发送数据。另外 EndPoint2

与 EndPoint6 均采用批量(BULK)传输方式,这种方式相对于其他 LJSB2.0 定义 的传输方式 具有数据可靠、传输速率高等特点,是最常用的传输方式。 (3)对 FIF0 进行配置。相应的寄存器操作为 E192FIFO(:FG=0xl 1,EP6FIFOCF G=0x0D。本案例将 FIF02,FIF06 设置成自动方式。

图 3 固件架构程序流程 初始化完成后,打开中断,之后固件程序开始枚举 USB 设备,直至端点 0 上接 收到通信建立包时为止[5]。一旦收到通信建立包,将重复执行下面的任务分配 过程: (1)调用 TD_Poll()函数,以完成用户指定的任务。 (2)判断是否有 USB 设备请求?如果有,则调用 ParseControlTransfer()函数进行 相应的处理;如果没有,则继续向下执行。 (3)检测 USB 总线是否空闲。如果空闲,则调用 TD_Suspend()函数,交由用户处 理。在 TD_Suspend 返回真值后,8051 处于空闲状态。这时,只有 USB 总线活 动或芯片 Wakeup 管脚活动,才能将 8051 重新激活。 (4)8051 被激活后,固件程序将首先调用 TD_Resume()函数,以使 8051 从空闲状

态中恢复出来,然后再处理用户指令。 3.2 设备驱动程序设计 开发 USB 设备驱动程序, 可采用 Numege 公司的开发包 DriverWorks 和 Mitms oft 公司的 Windows 2000 DDK.并以 VC++6 0 作为辅助开发环境。 一种用来在设备接人时从主机下载困件到 R CY7C68013 的设备驱动程序有两种: AM 中,称为固件下载驱动程序(ezloader.sys);另一种是在设备重新枚举后加载 的设备驱动程序(ezusb.sys),应用软件通过该设备驱动程序与 CY7C68013 通信。 固件的程序代码既可以通过外部 E2PROM 下载,也可通过主机下载。本文以从 主机下载为例进行说明,若选择主机下载方式,则此时外接 E2PROM 中存放的 是固件下载的 PID/VID,且第 1 个字节是 0xC0H,系统通过该 PID/VID 找到固 件下载驱动程序(ezloader.sys),将相应的固件代码下载到 FX2 的 RAM 中。 在将固件下载到 RAM 中后, 系统清除内存中的固件下载驱动程序. 并进行重 新枚举,让 C8051 固件控制 CY7C68013。此时,系统获得由 C8051 固件提供的 PID/VID(与 E2PROM 中的不同),认为有新的 USB 设备接入,并据此加载相应 的设备驱动程序。 3.3 应用软件设计 应用软件满足系统与用户的接口,它通过通用驱动程序完成对外设的控制和 通信,如开启/关闭 USB 设备、检测 USB 设备、设置 USB 数据管道等。它由动 态链接库和应用程序两部分组成:动态链接库负责与 USB 设备驱动程序通信, 响应应用程序的各种请求;应用程序则则以定时查询的方式将 TMS320C6203B 后的数据读入计算机事先开辟的大容量内存缓冲区, 同时从缓冲区读出数据实 时显示, 处理结束后再将内存缓冲区的数据存盘以及向 TMS320C6203B 发送控 制命令。 动态链接库对设备驱动程序的访问都是通过 I/O Control 调用来实现。首先调

用 Win32 函数 CreatFile()得到设备驱动程序的句柄,然后调用 Win32 函数 Devic eIocontrol (),通过得到的句柄把 IOCTL 和相关的输入输出缓冲区提交给驱动程 序。当应用软件退出时,用 CloseHandle()函数关闭设备。 在编写应用程序时,先建立与外没的连接,然后实施数据的传输。在系统启 动信号处理算法后,为保证不丢失数据,用户程序应建立一个新的工作线程专门 获取外没传来的数据。程序中主要用到两个 API 函数 CreateFile()和 DeviceIoCon CreatFile()取得设备句柄后, DeviceIoControl()根据该句柄完成数据传输。 , trol()。 部分程序代码如下: hDevice=CreateFile(“\\\.\\EZUSB_0”, GENERIC_READ| GENERIC_WRITE, FILE_SHARP_WRITE,NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORAL,NULL); If(hDevice= =INVALID_HANDLE_VALUE) { Application->MessageBoxA(“创建设备失败,请确认设备是否连接上!”,NUL L,IDOK);} else{DeviceControl(hDevice,IOCTL_ EZUSB_BULK_WRITE, &blkctl,sizeof(BULK_TRANSFER_CONTROL), &inBUFFER, sizeof(inBuffer), &nBytes, NULL); …} 4 结论 采用两种方法对本系统的数据传输速度进行测试:

(1) DSP 将 ADC 采集的语音信号进行处理后,将其频率、相位等数据上传给计 算机进行分析处理; (2)计算机将控制指令传给 DSP。结果显示, 两种方法的传输速度均可达到 64Mb /s 以上, 完全可以满足实时数据处理的需要。 该接口电路在本人开发的基于 DSP 的语音信号采集与处理系统中, 实现了数据 高速传输的任务, 工作性能良好。 本文作者创新点:传统的信号处理系统中数据传输接口在低速时常采用标准串行 口或并行口, 高速时一般采用 PCI 总线接口。但标准串行口或并行口数据传输速 率较低; PCI 总线尽管数据传输速率可以达到 1Gbps , 但是硬件设计和驱动开发 难度较大,USB 总线具有快速、双向、低价并可热插拨等特性,而且支持各种 P C 与外设之间的连接,本文将 USB2.0 接口芯片 CY7C68013 用于信号处理系统 中,处理后的数据经 USB 向计算机传输,速度得到了大大提高, 并且系统可靠性 也达到了理想效果。本文所述的方法具有一定的普遍性, 可用于多种微处理扩展 USB 接口的方案中。 参考文献: [1] 徐庆元,张天序,钟胜. 基于 USB 总线的高速视频采集系统设计[J].微计算机 信息,2006,22(10-1):247-249. [2] Cypress Semiconductor Corporation. EZ2 USB Technical Reference Manual [R]. 2002. [3] Cypress Semiconductor Corporation. EZ2 USB Series FX2 Getting Started [R]. 2002. [4] 李爽,张鸣瑞. 一种带 USB 接口的便携式语音采集卡的设计[J].计算机应用研 究,2001,18 (5):146-148. [5] 刘少峰,韦克平. USB 软件系统的开发[J].计算机应用研究,2002,19(3):102-10 4.

作者简介: 第一作者:肖燕娟(1967-),女,湖南武冈人,学士,讲师,主要从事计算机 教学与研究 第二作者:杨俊峰(1968-),男,江西上饶人,学士,讲师,主要从事计算机 教学与研究

通信地址:湖南湘潭市岳塘区书院路 42 号湖南城建职业技术学院 sfycns@163.com

411101


赞助商链接