基于FPGA的嵌入式系统USB接口设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通用串行总线USB (Universal Serial Bus )是应用于PC 领域的接口技术,已得到广泛应用。USB2.0已成为目前电脑中的标准扩展接口[1]。本系统设计的目的在于为公共交换电话网络(PSTN )和PC 机之间提供一个数字接口,设计中PC 机是主机,基于FPGA 的嵌入式系统是USB 设备。该系统是IP -
PBX 的简化系统,大量工作由PC 的服务器完成,而这里重点
介绍以FPGA 为控制核心的USB 接口设计。
1系统结构设计
该系统通过TRM (Telephone Response Module )和PC 服
务器实现PSTN 网络和Internet 网络之间自由、高效通话。图
1为整个系统结构示意图。
系统工作过程:当有来电时,DAA 向FPGA 申请中断。FPGA 收到中断后,使用USB 的中断传输向主机报告有外接
来电,则PC 的应用软件会提示用户选择摘机或拒绝。摘机后,FPGA 在接收到命令后就会接通电话,然后语音数据通过
USB 的同步传输进行双向传送。当用户向外拨号时,其过程
与来电时的情况是相同的。2系统硬件模块设计
2.1系统硬件框图
本设计采用FPGA 作为核心控制器件[2],其控制对象是
USB2.0接口器件EZ -USB FX2CY7C68013A -56。图2为EZ -USB 器件工作在Slave FIFO 模式下时FX2USB 和FPGA 的
典型电路连接图。
2.2FPGA 和USB 简介
设计中的核心控制器件FPGA 选用Altrea 公司的
EP2C8Q208C8,而USB 设备器件则选用Cypress 公司的CY7C68013A -56。EP2C8Q208C8是Altera Cyclone II 系列器
件中的一种,Cyclone II FPGA 是基于Stratix II 的90nm 工艺生产的低成本FPGA 。Cyclone II FPGA 的应用主要定位在终端市场,如消费类电子、计算机、工业和汽车等领域。
收稿日期:2009-08-17
稿件编号:200908035
作者简介:杨志坤(1985—),男,四川绵阳人,硕士研究生。研究方向:基于FPGA 的嵌入式系统的设计。
基于FPGA 的嵌入式系统USB 接口设计
杨志坤,曾博,汤国文
(电子科技大学电子工程学院,四川成都611731)
摘要:设计基于FPGA 的IP -PBX 电话应用系统,用于传统的电话网络(PSTN )与PC 机之间的接口连接。USB2.0接口器件EZ -USB FX2CY7C68013A -56工作在slave FIFO 模式,为基于FPGA 的嵌入式系统与PC 机之间提供数据和命令通道,从而可满足PC 机与FPGA 之间数据与命令的高速传输,实现PSTN 与PC 机之间的电话通信。硬件调试结果表明系统工作稳定,通话质量满足要求。关键词:接口;FPGA ;USB2.0;slave FIFO 中图分类号:TP334
文献标识码:A
文章编号:1674-6236(2010)01-0030-02
Design of USB interface of embedded system based on FPGA
YANG Zhi -kun ,ZENG Bo ,TANG Guo -wen
(School of Electronic Engineering ,University of Electronic Science and Technology ,Chengdu 611731,China )
Abstract:The paper focus on the implementation of the IP -PBX PSTN system based on FPGA,realizes the interface connection between conventional PSTN and PC.The USB2.0interface chip EZ -USB FX2CY7C68013A -56works in slave FIFO mode,it provides high -speed transmission channels for data and commands of the embedded system based on FPGA,realizes the high -speed data transmission between the PC and FPGA system.The hardware testing result proves that the system works stable,and satisfies the audio criterion.Key words:interface ;FPGA ;USB2.0;slave FIFO
图1系统结构示意图
图2系统硬件电路连接
2010年1月Jan.2010
第18卷第1期
Vol.18No.1
电子设计工程
Electronic Design Engineering
-30-
EP2C8Q208C8内部有2个锁相环(PLL)和8个全局时钟网络,8256个逻辑单元(LE)个,36个M4K RAM,18个乘法器模块,可用I/O数138个[3]。EP2C8Q208C8具有低成本、高性能、低功耗和对IP-PBX系统的可扩展性(足够多的I/O接口)的优点,因此这里选择该器件作为系统的控制器件。
CY7C68013A-56器件是第1个包含USB2.0的集成微控制器,其内部集成有1个增强型的8051,1个智能USB串行接口引擎(SIE),1个USB数据收发器,3个8位I/O、16位地址线、8.5KB RAM和4KB的FIFO等。增强型8051内核完全与标准8051兼容,而性能可达到标准8051的3倍以上[4]。图3为CY7C68013A-56的结构框图。
CY7C68013A器件在数据传输时利用4KB的FIFO,包含7个端点:EP0IN/OUT,EP1IN,EP1OUT,EP2,EP4,EP6,EP8。其中EP0、EP1IN和EP1OUT是3个64B的缓冲端点,只能被固件访问,EP0是默认的数据输入输出端口缓存,默认工作于控制传输,EP1IN和EP1OUT是独立的64B缓存,可以配置成块传输、中断传输或同步传输。端点2、4、6、8是大容量高宽带的数据传输端点,可配置为各种带宽以满足实际需求。端点2、6能配置成每帧成512B或1024B,并可配置为2、3、4级,则EP2,EP6最大能被配置为4KB的缓存;端点4、8则能配置为每帧512B的缓存。
3系统软件设计
3.1USB Firmware设计
由于设计中使用FPGA控制USB设备进行语音电话通信,所以在USB部分使用3种USB传输模式:控制传输、中断传输、等时传输。控制传输用于实现设备枚举主机的标准请求以及厂商自定义请求;中断传输用于实现设备对主机的唤醒,是唯一的设备主动向主机发送数据的传输方式;等时传输用于实现语音数据的双向同步传输。USB Firmware设计重点是语音的通信段。
CY7C68013A具有PORTS、Slave FIFO、GPIF共3种工作模式。PORTS模式是最基本的数据传输方式,其数据传输需CPU直接参与,适于传输速率要求不高的场合;GPIF模式是主机方式,内部主机控制端点FIFO;Slave FIFO模式是从机方式,外部控制器,如FPGA、DSP。应用中使用异步FIFO方式,采用内部48MHz时钟,自动方式,而固件程序的编写则以Cypress公司提供的固件程序框架为基础,在其初始化函数中添加自己的配置代码。
在整个系统中,CY7C68013A的固件主要完成以下工作:初始化USB器件;作为USB接口与主机通信并传输数据;利用CY7C68013A器件的Slave FIFO接口控制USB器件和外部控制器之间的数据传输。因此固件主程序比较复杂,除了上面的TD_Init()初始化外,还需要大量函数,但基本结构相对简单,包括3个过程:USB控制器的初始化;主函数,包括处理标准设备请求的代码;中断处理,包括处理各种中断的程序代码。图4为固件主程序流程。
3.2USB驱动程序
USB系统软件由主机中的软件和设备固件构成。USB主机中的软件主要包括USB设备驱动(USBDD)、USB总线驱动(USBD)和USB主控制器驱动(HCD)[5]。
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.3PC端的软件设计
PC端的软件设计采用面向对象程序设计,分为核心类(包括Provider,Data,Net)和应用类(包括UI,Call,Record)。其中核心类提供对硬件、操作系统和网络环境的支持,应用类在核心类的基础上提供对用户操作的支
图4固件程序流程
图3CY7C68013A-56结构框图
(下转第34页)杨志坤,等基于FPGA的嵌入式系统USB接口设计
-31-