电脑桌面
添加盘古文库-分享文档发现价值到电脑桌面
安装后可以在桌面快捷访问

USB2.0控制器

来源:文库作者:开心麻花2025-09-191

USB2.0控制器(精选9篇)

USB2.0控制器 第1篇

1 USB2.0设备控制器整体结构

在设计过程中采用自上而下(Top-to-Down)的方法[2],根据功能的不同,可将USB2.0设备控制器划分为以下几个子模块:端点控制器模块、UTM同步模块、CPU接口模块、RAM控制器模块、拆包/组包模块, 如图1所示。

USB2.0设备接收数据时,USB主机发送过来的串行数据经物理收发器USB2.0 PHY处理后,传递给USB设备控制器[3];UTM同步模块把这些数据信号和控制信号用控制器IP核内部的系统时钟进行同步处理后传给拆包组包模块。拆包组包模块对接收到的信息包解码,并进行CRC校验后,将有效数据通过RAM控制器放入当前端点所对应的RAM缓存区中,并将控制信息发送给端点控制器。端点控制器分析接收到的控制信息,产生控制信号给RAM控制器和CPU接口模块,CPU接口模块将产生中断信号给CPU,CPU再通过CPU接口模块读取RAM缓冲区里的数据。

2 USB2.0设备控制器子模块设计

本USB设备控制器5个子模块的详细功能设计如下。

2.1 端点控制器模块

端点根据传输类型的不同可分为4类[4]:控制类端点:用来处理控制数据,通过端点0来传输;同步类端点:用来处理同步数据;中断类端点:用来处理中断数据;块断点:用来处理块数据。根据端点类型的不同,设计中将端点控制器分为两个控制状态机:一个用来控制在端点0上的控制传输,另一个用来控制非0端点的其他3种传输。端点控制器结构,如图2所示。

本USB设备控制器中共设计了16个端点,其中端点0负责与主机之间的控制信息传输,支持控制传输,读取、解码并执行来自主机的命令,是USB控制器的主要控制部分。端点0包含的字节数大小为64。其它15个端点可根据设计需要自行配置为输入输出端点,负责数据接收与发送,各自独立设计为端点控制器的子模块,类型定义在端点描述符中定义。

2.2 拆包/组包模块

此模块用来产生传输包的包头和去掉接收包的包头,它还要为发送的数据包产生CRC数据并且对接收包的数据进行CRC校验,因此该模块可分为拆包模块、组包模块和CRC校验模块。

拆包模块接收从UTM同步模块发送来的信息包,进行解析后发送到RAM缓冲器中。主机可以发送的信息包有令牌、数据和握手3种,设备需要辨别主机发来包的类型并进行不同处理,去除PID和CRC校验字段,提取包中的有效数据信息部分并将数据放入RAM缓冲区中。因此,在设计拆包模块状态机时,拆包模块将整个接收包处理过程分为对帧开始包的处理、对令牌包的处理、对数据包的处理和对握手包的处理4个过程。

组包模块需要先取出RAM缓冲区内的数据,再加上PID和CRC校验字段,组成完整的信息包并发送到UTM同步模块中。由于USB设备只发送数据和握手两种信息包,且握手包没有CRC字段,因此在设计中仅需要对发送数据包的情况使用状态机进行控制。

CRC校验模块用来产生发送数据包的CRC16校验字段,以及检测接收令牌包CRC5校验和数据包CRC16校验。当CRC5的校验值为5'h06或CRC16的校验值为16'hb001时,就认为接收到的数据正确。

2.3 UTM同步模块

此模块用来同步物理收发器(UTM)30 MB/60 MB的时钟(XCLK)和控制器的系统时钟(CLK)之间的数据收发。USB设备控制器的系统时钟CLK用来控制整个设备控制器的工作,包括拆包组才包、端点控制、RAM控制、CPU接口,以及CPU总线都是用的这个时钟。这就使得整个设备控制器的其他模块工作时不再需要进行进一步同步。此外,该模块还要实现挂起、唤醒、复位以及高速检测握手的功能。

UTM同步模块分为3部分:接收同步模块、发送同步模块、时间检测模块。其中,接收同步模块和发送同步模块主要用来完成跨时钟域数据收发的同步。由于USB物理收发器工作在时钟XCLK下,而USB2.0设备控制器的工作时钟为CLK,所以在收发器和USB控制器间必须进行时钟同步处理。

双时钟域的同步一直是数字模块设计中的难点问题。为实现双时钟域的同步,本设计在处理时加了几级buffer[5]。以接收过程为例,通过两级buffer来完成XCLK时钟域到CLK时钟域数据的传输,如图3所示。

时间检测模块主要完成对USB总线状态的检测与控制,从而处理USB总线的诸如复位、挂起、恢复、速率协商等事件。

2.4 CPU接口模块

此模块用来访问控制/状态寄存器和各个端点的FIFO。它在CPU成功接收和发送数据时产生中断,以及在控制器进入挂起状态或从挂起状态恢复时产生中断,如图4所示。

文中CPU接口采用的是AHB接口,可以与AMBA AHB 总线直接相接,通过完成对通用寄存器和中断寄存器的配置及中断响应,帮助完成协议层控制及传输。CPU接口模块提供了符合AMBA AHB总线定义的32 bit同步CPU接口,可通过对地址偏移的设置一次对任意一个或几个Byte进行读写操作。

其中寄存器地址空间映射,如图5所示。

(1)通用USB寄存器

(00h~0Fh):这些寄存器为整个IP核提供控制和状态信号;

(2)Index端点控制/状态寄存器(10h~1Fh):

这些寄存器为端点提供控制和状态信号。这些寄存器映射的空间取决于Index 这个寄存器的值;

(3)FIFOs(20h~5Fh):

这些寄存器地址提供了到端点FIFO的接入;

(4)附加配置寄存器(70h~7Fh):

这些区域的寄存器提供了附加设备状态信息。

2.5 RAM控制器

此模块提供一个单端口32位宽的同步RAM的接口,用来缓存CPU和USB设备之间的数据包,它从端点控制器中取得FIFO的指针,将它们转换成RAM控制模块的地址指针,并产生访问RAM的控制信号。

端点对应FIFO的RAM控制器的地址空间是通过配置端点的个数和大小来分配的:因为端点0的FIFO大小为64 Byte, 而FIFO的宽度为32 bit(4 Byte),所以需要的地址空间为00h~0Fh,因此端点1的起始地址应该是10h,端点2 FIFO的地址计算方法如下:

//端点1作为IN端点的基地址为16,即10h

`define C_FIFO_OFF_EP1I 16

//如果端点1作为out端点,则其基地址也为10h

`define C_FIFO_OFF_EP1O (`C_FIFO_OFF_EP1I)

//端点2基地址计算

`define C_FIFO_OFF_EP2I (`C_FIFO_OFF_EP1O + (1<<`C_EP1O_BITS-2))

//如果端点1不存在,则//端点2基地址为端点1基地址10h

`define C_FIFO_OFF_EP2I (`C_FIFO_OFF_EP1I)

例如,对于全速的IN/OUT端点,其最大值为64 Byte,所以端点2的起始地址为 20h,其他端点地址计算方法依此类推。

3 IP核的验证

3.1 仿真环境的建立

为了验证USB设备控制器的功能,需要建立一个USB主机(HOST)端的HDL行为模型,模拟上电检测、速度识别、标准设备请求等,可以检测USB设备应答数据是否正确。另外还可以启动对USB设备容错性能的检测,通过在USB通信中插入随机错误信息,检测IP核通信的鲁棒性以及IP核传输机制的可靠性。整个IP核的仿真环境,如图6所示。

CPU HDL模型模拟真实的CPU功能,可以实现IP核的上电初始化过程(向 IP核中控制/状态寄存器堆写入初始数据)、IP核中断处理并完成USB传输事务、使设备摆脱异常状态等功能。这个CPU和IP核一起构成一个完整的USB 设备。仿真通过后就可以用FPGA验证了。

3.2 FPGA硬件验证环境

在进行硬件验证时,HOST模型换为真实的 PC机;FPGA外接电路板上的GT3200作为USB 物理收发器,它满足USB2.0物理层的电气特性要求;USB设备接口控制CPU选用具有AHB接口的ARM7,因为IP核的CPU接口是AHB的,所以可以直接与ARM7的AHB总线接口相连。RAM使用的是FPGA内部的RAM,因为根据选择端点数量和类型的不同,RAM的大小也不一样。各部分连接关系,如图7所示。

图8是FPGA硬件验证环境,左侧是有带有ARM7的FPGA开发板,FPGA选用的是Xilinx的Virtex-E 系列XCV2000E芯片。右侧是带有GT3200的物理收发器电路板,GT3200选用16 bit/30 MHz,这要求控制器的处理速度>30 MHz。

本设计综合使用Synplify pro 8.4, 选用的CPU时钟CLK为40 MHz,综合后用ISE进行布局布线。表1为布局布线后的部分报告。

4 结果及分析

将GT3200电路板上的USB电缆插入有USB2.0接口的PC机,PC机会显示发现新硬件信息,表示PC机已经完成USB设备的枚举过程,识别了USB设备。此时使用USB驱动便可对USB设备进行读写操作。

通过FPGA对此IP核的以下几个功能进行了验证。

4.1 成功完成设备枚举过程,识别了USB设备

将USB电缆所有设备按图7连结好后,给GT3200电路板和FPGA开发板正常供电,再将USB电缆插到PC机的USB接口,这时控制器将会产生一个Reset中断给CPU。

PC端的USB主机首先发出SETUP 包,设备地址0x0(USB设备未分配地址前的默认地址),端点为 0x0(控制端点),这是一个标准请求的开始。然后主机发出一个Get_Descriptor标准设备请求数据包;设备收到数据后,应答了ACK握手包,表示数据接收正确。这是控制传输的建立阶段,如图9所示。

在控制传输的数据阶段,HOST首先发出IN令牌包,要求USB设备回复设备描述符,设备在经过一次或多次符合协议规范的NACK(表示设备未准备好)后,应答了描述符的内容,然后HOST应答了ACK表示通信成功。如图10所示。

经过多次标准请求后,所设计的USB设备成功地与主机进行了数据交换。这样便完备验证了所设计的USB设备控制器的基本功能。

4.2 完成高速测试握手过程,设备与主机之间进行高速通信

将Power寄存器(地址为0x00)中的Hsenable位设为1,再将USB电缆插到具有USB2.0接口的PC机上,可以看到设备完成了高速握手协议,如图11所示。设备工作在高速状态,主机和设备之间将以高速通信。

高速设备枚举过程同全速一样,只是主机与设备之间的数据使用高速传输方式。

4.3 完成全速和高速的4种方式的数据传输

USB设备枚举过程成功完成后,通过USB 驱动和固件交互,完成USB其余3种方式,即块传输、中断传输、同步传输的通信。文中综合时选择了2个端点,其中设置端点1为IN端点,大小为512 Byte;端点2为OUT端点,大小为512 Byte。

固件初始化完成后,端点信息通过设备描述符在控制传输时传给主机。例如,当端点类型设置为块端点,设备描述符中的bmAttributes =0x02。主机识别USB设备后,便可加载驱动,上层应用软件通过调用Windows DDK下的USB驱动,对USB设备进行读写操作。写的时候将数据写到端点1对应的FIFO中,读的时候是将端点2的FIFO里面的数据取出。若选择高速模式,则每次最多可读写512 Byte,若选择全速模式,每次最多可读写64 Byte。图12为高速块传输时UTMI的数据,图中截取了一次发送64 Byte的波形。

4.4 完成挂起和远程唤醒功能

将power寄存器的Suspenden位设为1,当总线上没有活动3 ms后,设备将进入挂起状态,在挂起状态时,USB物理收发器将停止给IP核供应时钟,整个设备处于低功耗模式。当需要唤醒设备时,可通过CPU将power寄存器的resume位置为1,如图13所示。

5 结束语

文中设计了一种具有AHB接口的USB2.0设备控制器IP核。通过对控制器中各功能模块工作过程的分析,完成RTL代码设计及仿真测试,建立了USB设备控制器与USB主机的硬件通信模型,并基于此通信模型将IP核在FPGA上进行了验证。完成全速12 MB/s和高速480 MB/s 4种传输方式的测试,分析了验证结果。

摘要:文中设计了一种符合USB2.0规范并具有AHB接口的USB设备控制器IP核。首先根据功能将设备控制器划分成多个独立的子模块,并详细介绍了各个子模块的结构和设计方法;最后使用VerilogHDL硬件描述语言完成RTL代码,为所设计的IP核建立了仿真环境和FPGA硬件验证环境。该设备控制器能够完成全速和高速传输模式以及4种传输方式:控制传输、批量传输、中断传输、同步传输,并且支持挂起和远程唤醒的功能,这些功能在FPGA上得到了验证,可适用于各种USB设备类的开发。

关键词:USB2.0控制器,IP核,AHB接口,FPGA

参考文献

[1]王成儒,李英伟.USB2.0原理与工程开发[M].北京:国防工业出版社,2004.

[2]夏宇闻.复杂数字电路与系统的Verilog HDL设计技术[M].北京:北京航空航天大学出版社,1998.

[3]Intel.USB2.0Transceiver Macrocell Interface(UTMI)Specification,Version1.05,2001[Z].England:Intel,2001.

[4]Compaq,Intel,Microsoft,et al.Universal Serial Bus Spec-ification,Revison2.0,Intel,Microsoft,2000[S].USA:Compaq,2000.

解决USB2.0驱动的问题 第2篇

不久笔者买了一个科硕USB2.0移动硬盘盒,装入一个IDE硬盘组装成移动硬盘,用来做数据备份,可是麻烦却接踵而来。开机后进入WinXP,将移动硬盘接上,系统自动安装驱动程序,接着出现提示“高速设备接入低速端口”,拷贝一些MP3文件,速度很慢,根本达不到USB2.0的标准!

首先想到的是驱动问题,于是找来一只PS/2接口的鼠标,开始安装nForce2主板专用的USB2.0驱动,

升级完毕后,接入移动硬盘,现象依旧,没办法只好又换回系统自带的USB驱动。把移动硬盘接到另一台电脑上,该电脑采用i845GL芯片组,系统是Win专业版,一切正常。

USB2.0控制器 第3篇

1 FT245R芯片简介

FT245R是FTDI公司新推出的一款用于并行FIFO双向数据传输接口的USB独立芯片,该芯片功能强大,使用D2XX驱动程序能获得更好的数据传输性能,传输速率可达到1MB/s;通过简单的四线握手信号与MCU、CPLD、FPGA等逻辑器件接口;完整的片内USB协议解决方案,无需底层固件的编程;完全兼容USB1.1,USB2.0协议;附加的EEPROM接口可定制USB接口设备;在内部硬件逻辑的作用下能够实现USB串行数据格式与并行数据格式的双向转换。

FT245R内部主要由USB收发器、串行接口引擎(SIE)、USB协议引擎和FIFO控制器等构成。片内256byte的接收FIFO和128byte的发送FIFO使得芯片可以实现高速数据吞吐。而内嵌的EEPROM接口单元可外接串行存储器,用来储存USB取电模式及各种产品信息。FT245R支持总线供电、自我供电和高功率总线供电等USB配置 ,其内部集成的3.3V电平转换器,可用于USB I/O;在FIFO接口和控制引脚集成电平转换器,使接口支持5V/3.3V/2.8V/1.8V逻辑,真正5V/3.3V/2.8V/1.8V CMOS驱动输出和TTL输入。另外,FT245BM还包括1个12MHz的振荡器、4倍频的时钟倍频器和USB锁相环。

2 系统的设计方案

系统结构如图1所示,主要包括底层硬件和上位机两个部分。本设计中,上位机作为整个系统的控制和显示中心,它通过USB接口芯片完成与FPGA的通信。在通信的过程中,上位机负责发送命令及信号源,FPGA负责调度各芯片的工作时序,共同协调完成数据的传输。上位机中的界面应用程序通过动态链接库DLL调用相关函数与USB驱动程序通信,通过USB驱动程序获得USB总线上的数据,或者将控制命令通过USB驱动程序发送到USB总线上。最后由界面应用程序完成数据的显示、存储及处理。

2.1 硬件结构设计

本系统硬件主要连接FPGA和USB控制器(图2),其中核心控制器件FPGA采用的是Xilinx公司的SpartanⅡ XC2S100芯片,USB控制器则采用的是FTDI公司的FT245R。在高速数据传输系统中,FPGA作为核心控制芯片对USB接口芯片进行控制,因此USB接口芯片采用了从机方式,即Slave FIFO方式,而FPGA作为主机角色控制处于从机模式下的FT245R。

由USB设计规范可知,USB设备有总线供电和自供电两种方式,考虑到设计的系统不属于移动应用,无需通过总线供电方式来供给芯片工作所需电源,因此采用自供电方式进行设计,USB总线供电则被用来控制FT245R的RESET#引脚,此外在USB接口的地端采用一个磁珠,以减少主机和设备的干扰。

FT245R通过D0~D7这8位双向数据总线和4位读写状态控制信号RxF#、TxE#、RD#和WR实现与FPGA之间的数据传输,其外围电路较为简单,各电源和接地引脚通过去耦电容接电源或接地,其余控制引脚和数据引脚都连接到FPGA上,由FPGA控制FT245R的读写操作。一方面,当FPGA有数据要传给主机时,数据通过8位并行I/O接口传给USB芯片内部的数据缓冲区,FT245R再将8位并行数据转化为串行数据,通过USB接口把数据发送给主机;另一方面,当主机有数据要给外部设备时,先将串行数据通过USB接口存储在USB芯片内部缓存区中,FT245R再将串行数据转化为8位并行数据,然后通过8位I/O接口把数据传给FPGA。

2.2 系统软件设计

系统的软件设计主要包括:VHDL代码和应用程序:VHDL程序主要负责对FT245R和SRAM进行时序控制,以完成数据的传输;应用程序则主要负责命令的发送、文件的获取、文件的编解码及文件的保存。

FPGA是通过Slave FIFO的方式与USB控制器FT245R相连。在对FT245R进行读操作时,FPGA通过查询FT245R中的接收FIFO的状态来判断是否可以进行读数据,主要是查询状态标志位RXF#;在对FT245R进行写操作时,FPGA通过查询FT245R中的发送FIFO的状态来判断是否可以进行写数据,主要是查询状态标志位TXE#。底层硬件在收到上位机命令后,对FT245R和SRAM进行时序操作,其程序状态转移图如图3所示。

状态1在空闲状态,接到命令,初始化相关控制信号及SRAM地址,进入状态2;状态2查询读状态的FIFO标志位RXF#,如果RXF#为低,则进入状态3,否则继续等待;状态3FPGA对FT245R进行读操作,开始接收数据,接收数据完后进入状态4;状态4FPGA对SRAM进行写操作,将接收到的数据存入SRAM中,且地址计数器加1,进入状态5;状态5查询SRAM的数据存储量,若已写入数据小于512K,则进入状态2,否则进入空闲状态。

FPGA在上传输据时,原理基本相同,方向相反,采用不同的FIFO和状态查询标志位。

3 测试结果

把硬件连接至上位机,利用上述的应用程序经USB接口向FPGA发送数据,将其存入SRAM中。为了验证数据传输的准确性,笔者将SRAM中的数据回读到上位机自检,界面应用程序显示经处理后的数据如图4所示。结果表明,上位机与FPGA实现了准确的数据传输。

4 结束语

USB 接口因其高速、即插即用等特点得到了广泛的应用。本系统通过FPGA控制USB接口芯片FT245R达到数据高速传输的目的,具有硬件结构简单、软件扩展性强及传输数据准确性高等特点。FT245R的使用避开了固件设计和驱动的编写,摆脱了常规USB数据接口设计的难度,大大缩短了开发周期。因此该系统完全可以用于高速数据采集、高速数据通信及存储设备等。

摘要:从系统的总体结构、硬件设计和软件设计3个方面阐述了USB2.0接口传输的FPGA控制与实现的设计方法。FPGA作为硬件设计中的主控芯片,完成了对USB接口芯片FT245R的通信控制、SRAM的读写操作等。通过USB驱动连接应用程序和底层硬件,实现了上位机中数据的发送、显示与存储。测试结果表明,FPGA通过USB接口实现了高速可靠的数据传输。

关键词:数据传输,USB,FPGA,FT245R,驱动程序

参考文献

[1]边海龙.USB2.0设备的设计与开发[M].北京:人民邮电出版社,2004,4~7.

USB2.0控制器 第4篇

摘要:本文主要介绍支持USB2.0高速传输的EZ-USB FX2单片机CY7C68013,并详细说明用此芯片实现高速数据采集系统和相应的Windows驱动程序及底层固件程序的开发过程。

关键词:CY7C68013  USB2.0  数据采集  固件

1    引言

现代工业生产和科学研究对数据采集的要求日益提高,在瞬态信号测量、图像处理等一些高速、高精度的测量中,需要进行高速数据采集。现在通用的高速数据采集卡一般多是PCI卡或ISA卡,存在以下缺点:安装麻烦、价格昂贵;受计算机插槽数量、地址、中断资源限制,可扩展性差;在一些电磁干扰性强的测试现场,无法专门对其做电磁屏蔽,导致采集的数据失真。

通用串行总线USB是1995年康柏、微软、IBM、DEC等公司为解决传统总线不足而推广的一种新型的通信标准。该总线接口具有安装方便、高带宽、易于扩展等优点,已逐渐成为现代数据传输的发展趋势。基于USB的高速数据采集卡充分利用USB总线的上述优点,有效解决了传统高速数据采集卡的缺陷。

2    硬件设计

2.1支持USB2.0高速传输的CY7C68013

Cypress Semiconductor公司的EZ-USB FX2是世界上第一款集成USB2.0的微处理器,它集成了USB2.0收发器、SIE(串行接口引擎)、增强的8051微控制器和可编程的外围接口。FX2这种独创性结构可使数据传输率达到56Mbytes/s,即USB2.0允许的最大带宽。在FX2中,智能SIE可以硬件处理许多USB1.1和USB2.0协议,从而减少了开发时间和确保了USB的兼容性。GPIF(General Programmable Interface)和主/从端点FIFO(8位或16位数据总线)为ATA、UTOPIA、EPP、PCMCIA和DSP等提供了简单和无缝连接接口。

CY7C68013的GPIF引擎具有自动传输数据结构的特性,这种特性使得外围设备和主机通过CY7C68013可以无缝的、高速的.传输数据。为了实现高速的数据传输,CY7C68013CPU不会直接参与数据的传输,而是直接利用GPIF的自动传输数据模式。图1和图2说明了主机IN和OUT数据传输过程。

2.1.1 端点缓冲区

FX2包含3个64字节端点缓冲区和4K可配置成不同方式的缓冲,其中3

个64字节的缓冲区为EP0、EP1IN和EP1OUT。EP0作为控制端点用,它是一个双向端点,既可为IN也可为OUT。当需要控制传输数据时,FX2固件读写EP0缓冲区,但是8个

SETUP字节数据不会出现在这64字节EP0端点缓冲区中。EP1IN和EP1OUT使用独立的64字节缓冲区,FX2固件可配置这些端点为BULK、INTERRUPT或ISOCHRONOUS传输方式,这两个端点和EP0

一样只能被固件访问。这一点与大端点缓冲区EP2、EP4、EP6和EP8不同,这四个端点缓冲区主要用来和片上或片外进行高带宽数据传输而无需固件的参与。EP2、EP4、EP6和EP8是高带宽、大缓冲区。它们可被配置成不同的方式来适应带宽的需求。

2.1.2 接口信号

在利用GPIF进行高速数据传输系统设计时,GPIF waveforms的编辑是非常重要的,它控制着整个数据传输过程的读写时序。此时CPU的作用已经非常小了,它只起着下载代码到内部RAM以及在固件中如何触发GPIF waveforms的作用。FX2专门为GPIF提供了外围接口信号,如8位或16位的数据线、控制信号、Ready信号以及地址线。

IFCLK(双向时钟信号):IFCLK是一个参考时钟,可以配置成输入或输出。当配置为输出时,IFCLK被FX2驱动为

30MHz或48MHz;当配置为输入时,时钟范围为5-48MHz。

GPIFADR[8:0](输出):GPIF使用GPIFADR信号为外部设备提供地址线,在总线上地址值是自增的。

FD[15:0](双向):这是USB主机通过FX2和外部设备进行数据传输的数据线,它可配置成8位或16位。当16位时,FD[7:0]代表端点FIFO

中的第一个字节,FD[15:8]代表第二个字节。

CTL[5:0](输出):FX2为外部设备提供了几个控制信号,如读写选通、使能等。

RDY[5:0](输入):FX2提供了几个状态检测信号,它可以检测外部设备的状态,如FIFO的空、满、半满等。

GSTATE[2:0](输出):这是调试信号,表示GPIF波形执行的状态,通常连接到逻辑分析仪上。

2.2   AD9238

AD9238是一个双通道的12位

A/D转换器,采用单3V供电,速度可以是20MSPS、40MSPS和65MSPS;低功耗,工作在20MSPS时,功耗为180mW,40MSPS时,功耗为330mW,65MSPS时,功耗为600mW;具有500MHz 3dB带宽的差分输入;片上参考源及SHA;灵活的模拟输入范围:1Vp-p~2Vp-p;适用于:超声波设备,射频通讯,电池电源仪器,低价示波器等。本系统采用20MSPS的AD9238,可充分发挥USB在高速传输模式下的数据传输优势。

2.3   数据采集系统

该数据采集系统整个框图如图3所示,该系统由以下几部份组成:USB控制器、FIFO、CPLD、AD9238以及数据采集前端电路。

图3 数据采集系统框图

CPLD主要是控制时序,时钟分频等。FIFO主要是起着高速数据缓冲作用,当FIFO半满时,数据开始向USB主机发送。我们采用的是同步FIFO,时钟信号接IFCLK,当FIFO的/RD信号和/OE信号有效时,每个IFCLK上升沿就输出一个数据;当FIFO的/WR信号有效时,IFCLK上升沿就读进一个数据。AD9238的20MHz时钟信号是通过CPLD分频所得。当程序使能AD9238的/OEB_A和/OEB_B信号时,AD9238双通道开始进行数据采集并向FIFO写数据。

系统前端的调理电路采用的是AD公司的AD8138,该放大器具有较宽的模拟带宽(320MHz,-3dB,增益1),而且可以实现将单端输入变成差分输出的功能。此项功能在现代高速模数变换电路中非常有用,因为几乎所有的高速A/D芯片都要求模拟信号为差分输入,虽然部分芯片的手册中提到对于单端输入信号也可使用,但这样一来会使A/D转换结果的二次谐波增大,降低信噪比(SNR)。AD8138很好的解决了这个问题,用户可以很容易的将单端信号转换成差分输出而不必使用变压器,并且它的输入阻抗高达6MΩ,可以直接与输入信号相连而省略隔离放大器,大大精简了电路结构。图4为AD8138的典型应用电路。

图4  AD8138典型应用电路

3

; 软件设计

3.1 Windows驱动程序设计

USB设备驱动程序基于WDM。WDM型驱动程序是内核程序,与标准的Win32用户态程序不同。采用了分层处理的方法。通过它,用户不需要直接与硬件打它道(在USB驱动程序中尤为明显),只需通过下层驱动程序提供的接口号访问硬件。因此,USB设备驱动程序不必具体对硬件编程,所有的USB命令、读写操作通过总线驱动程序转给USB设备。但是,USB设备驱动程序必须定义与外部设备的通讯接口和通讯的数据格式,也必须定义与应用程序的接口。

Cypress公司提供了完整的CY7C68013驱动程序源码、控制面板程序及固件的框架,这大大提高了用户开发的进度。用户只需稍加修改或不需任何修改即可使用所带驱动程序,软件开发者大量的时间主要集中在应用程序和固件的开发。本文所述的数据采集系统驱动程序就在原来的基础上进行了简单的修改来满足我们的需要。根据我们自己的需求,一般只需修改DeviceIoControl例程,如我们主要增加了控制数据传输函数、启动和停止AD、复位FIFO等,即IOCTL_START_AD、IOCTL_STOP_AD、IOCTL_RESET_FIFO。

3.2 底层固件设计

要实现USB2.0的高带宽数据传输,必须使用它特有的GPIF特性,在开发固件前,首先必须根据实际需要对GPIF waveform进行编辑。CY7C68013开发工具中带有一个GPIF Designer,如图5所示,编辑完waveform后,选择Tools->Export to GPIF.c File来输出GPIF.c文件,然后将该文件加入keil c工程进行编译。

由于CY7C68013的EP2、EP4、EP6、EP8四个端点共享4K FIFO缓冲区,所以在该系统中,我们将EP2配置成4K的缓冲区,并设置为IN。用EP1OUT作为AD的控制参数传递,如启动和停止AD数据输出、复位FIFO等。在固件程序中,最重要的就是TD_Init和TD_Poll()两个函数。

图5 GPIF Designer

在TD_Init()中主要完成GPIF相应寄存器的初始化,如下:

void TD_Init(void)             // Called once at startup

{

// set the CPU clock to 48MHz

CPUCS = ((CPUCS & ~bmCLKSPD) | bmCLKSPD1);

SYNCDELAY;

EP2CFG = 0XE8;     // EP2IN, bulk, size 1024, 4x buffered

SYNCDELAY;

EP4CFG = 0x00;     // EP4 not valid

SYNCDELAY;

EP6CFG = 0x00;     // EP6 not valid

SYNCDELAY;

EP8CFG = 0x00;     // EP8 not valid

SYNCDELAY;

FIFORESET = 0x80;  // set NAKALL bit to NAK all transfers from host

SYNCDELAY;

FIFORESET = 0x02;  // reset EP2 FIFO

SYNCDELAY;

FIFORESET = 0x00;  // clear NAKALL bit to resume normal operation

SYNCDELAY;

EP2FIFOCFG = 0x01; // allow core to see zero to one transition of auto out bit

&

nbsp;SYNCDELAY;

EP2FIFOCFG = 0x11; // auto out mode, disable PKTEND zero length send, word ops

SYNCDELAY;

EP6FIFOCFG = 0x09; // auto in mode, disable PKTEND zero length send, word ops

SYNCDELAY;

GpifInit ; // initialize GPIF registers

SYNCDELAY;

EP2GPIFFLGSEL = 0x02; // For EP2IN, GPIF uses FF flag

SYNCDELAY;

// global flowstate register initializations

FLOWLOGIC = FlowStates[19];      // 0011 0110b - LFUNC[1:0] = 00 (A AND B), //TERMA/B[2:0]=110 (FIFO Flag)

SYNCDELAY;

FLOWSTB = FlowStates[23];        // 0000 0100b - MSTB[2:0] = 100 (CTL4), not //used as strobe

SYNCDELAY;

GPIFHOLDAMOUNT = FlowStates[26]; // hold data for one half clock (10ns) assuming //48MHz IFCLK

SYNCDELAY;

FLOWSTBEDGE = FlowStates[24];    // move data on both edges of clock

SYNCDELAY;

FLOWSTBHPERIOD = FlowStates[25]; // 20.83ns half period

SYNCDELAY;

// reset the external FIFO

OEA |= 0x07;     // turn on PA0、 PA1、 PA2 as output pin

IOA |= 0x07;     // pull PA0、 PA1、 PA2 high initially

IOA &= 0xFB;     // bring PA2 low

EZUSB_Delay (1); // keep PA2 low for ~1ms, more than enough time

IOA |= 0x04;     // bring PA2 high and exit reset

IOA &= 0xFC;     // bring PA0、 PA1 low and enable AD

}

在TD_Poll()中主要完成外部FIFO状态的检测和数据的传输,主要程序部分如下:

void TD_Poll(void)

{

USB2.0控制器 第5篇

致力于建立附加值连接性生态系统的领先半导体厂商SMSC(N ASD AQ:SMSC)近日发布业界首款完全集成的高速片间(HSIC)USB 2.0到10 G/100 G以太网络器件LAN9730。这是专为各种嵌入式系统和消费电子设备OEM和ODM设计人员设计,可协助他们节省功率消耗和物料成本(BOM)。

采用SMSC专利片间连接(Inter-Chip ConnectivityTM,ICC)技术的HSIC,能让现今已被数十亿台电子设备广泛采用的USB 2.0协议进行短距离间传输,同时还能与基于模拟USB 2.0连接的软件100%兼容。继NVIDIA、Qualcomm和其他公司之后,超微(AMD)和三星最近也加入了从SMSC取得ICC技术授权的行列,以实现从其便携式系统单芯片(SoC)到USB 2.0外设间的HSIC通信。HSIC已被列为USB 2.0标准的一部分,能大幅降低需要以太网络端口的电池供电的便携式设备的功耗。LAN9730内置集成10 G/100 G物理层和多项电源管理增强功能,包括Magic Packet和Link Status Change以及“局域网络唤醒”(Wake on LAN)模式,能让系统进入低功耗状态,并在特定的网络信息出现时唤醒系统,可节省待机期间的资源。

新款LAN9730是SMSC日益扩充的USB-to-Ethemet解决方案产品系列的最新成员,它符合USB 1.1和2.0规范,以及IEEE 802.3/802.3u以太网络标准。此外,LAN9730只需要一颗25 MHz晶振,就可同时驱动USB和以太网络物理层(PHY),因此可使开发人员降低BOM成本。

SMSC的集成式、以USB为基础的网络解决方案可为系统中任何一处网络连接的布局布线提供更多灵活性。此外,LAN9730可支持Windows®、Mac®和Linux®等最新版操作系统的多种驱动程序。LAN9730是那些需要以太网络连接的电池供电便携式设备的理想选择。

USB2.0控制器 第6篇

在工程应用中数据采集是最为常见和重要的一环,数据采集系统的优劣在很大程度上影响了工业系统的性能。尤其在对虚拟仪器的研究不断深入的过程中,作为虚拟仪器数据输入的前端,数据采集系统也越来越凸显其重要的作用。目前对于高速的数据采集系统,数据接口采用PCI、ISA等高速通信接口居多,但是这些接口的安装成本高,结构复杂,不利于工业现场的应用[1]。在高频信号采集的数据量不是很大的情况下采用高速接口不仅增加了系统的成本同时也使得系统结构变得复杂,不利于系统的大规模应用。

USB接口具有即插即用、传输速率快、可扩展等特点,并且其标准的USB2. 0 规范了和各种不同的PC外部设备的接口,在工业现场的数据传输中有着广泛的应用前景[2]。

现介绍了一种基于USB2. 0 接口的高速数据采集系统,系统采用Xilinx 500E FPGA为核心,通过FPGA上的高速I / O将AD的采样数据读取并存入FPGA内部的BRAM和外部的SDRAM中,并且能够通过低速的串行总线将数据传输给计算机进行相应的数据处理。

1 采集系统的硬件构成

该数据采集系统主要包括两个部分,一部分是采用ADS807 数模转换芯片搭建的模数转换电路,用来完成模拟信号到数字信号的转换; 另外一部分是采用FPGA为核心搭建的数据存储和数据发送电路,完成数字信号的处理、编码。在完成数据的初步处理和编码之后,通过USB2. 0 串行总线将数据发送给PC机。

测试系统的结构框图如图1 所示,模拟信号在经过高速AD转换芯片ADS807 构成的高速数模转换电路后输出转换后对应的数字信号,系统的采样时钟通过FPGA内部的PLL电路产生。FPGA可以根据不同的输入信号设置采样频率,最大可以设置到50MHz的采样频率。模拟信号经过AD转换电路后,FPGA将采集到的数字信号存入内部的BRAM或外部的SDRAM。存储的数据在接收到传输指令之后,经过串口通信模块将数据传输给PC机,由PC对数据进行进一步的处理和计算。

1. 1 模数转换电路

数模转换电路采用ADS807 为转换芯片,ADS807 是一款高速模数转换芯片,这是一款低功耗( 335m W) ,高精度( 12 - Bit) 的高速AD转换芯片,最高能够实现53MHz的转换速率,并且有良好的信噪比。在10MHz的输入信号情况下,能够提供82d B的信噪比。AD转换模块的电路如图2 所示,其中VCM为ADS807 芯片提供的一个精确的参考电压,AD转换芯片和VCM进行比较实现模拟量到数字量的转换。通过芯片TH5401 将输入信号抬升一个固定的电压值,从而将一个交流信号叠加上一个直流信号,便于AD转换芯片对模拟信号的采样。另外可以通过设置ADS807 的VEN引脚的不同电压值来定义不同的电压输入范围以及模拟信号的输入形式。在本系统中,将AD的采样模式设置为3VP - P的差分输入,能够实现较大的采样范围和较高的采样精度,并且能够抑制输入信号带来的共模干扰。

1. 2 数据存储和发送电路

FPGA( Field-Programmable Gate Array) ,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路( ASIC) 领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。 Xilinx公司出品的XC3S500E型号的FPGA是其SPARTAN - 3 系列产品中应用最为广泛的FPGA型号之一,具有低成本,多电压模式,复合标准接口,多种IO接口等特点。XC3S500E具有符合IEEE1149. 1 /1532 JTAG接口,360KBit的BRAM,232 个用户可用的IO引脚,资源丰富。

如图3 所示,XC3S500E产生的CLK信号用于给AD提供可变的时钟信号,通过I/O对ADS807 转换的结果进行读取操作并且出入BRAM/SDRAM。USB串口模块采用从机工作模式和FIFO的数据操作模式。

FPGA通过对其外部I / O的数据读取,在每一个时钟周期的上升沿到来时将I/O引脚上的数据读取并按照顺序存入BRAM中,当BRAM中内存空间存满之后,可用将读取的数据存入外部扩展的SDRAM,大大扩展了系统的数据缓存能力。另外可以通过软件的方式使得FPGA对读取的数据进行简单的压缩和处理,进一步提高系统的利用率。

串行数据通信接口采用USB2. 0 专用芯片CY7C68013 为核心搭建而成,它集成了USB2. 0 收发器、SIE、增强型8051 微控制器和可编程外围接口,能够使数据传输速率达到56MB /S,从而快速的将FPGA中存储的数据上传至计算机。在采样率在1M以下的情况下完全可以实现实时的数据传输,通过这种方法,系统不仅能够实现数据的离线分析,也能在低速采样率的情况下进行在线分析。

2 软件程序设计

2. 1 FPGA程序设计

该系统的采样模式有两种,在高速模式下采用离线采样模式,在低速模式下可以采用在线采样模式。系统的软件框图如图4 所示,在接收到的指令中包含了启动信号、采样频率设置、采样模式选择信息。在离线采样模式下,采样的数据通过FPGA的处理和编码形成固定的数据帧存放在FPGA内部的BRAM和外扩的SDRAM中。在需要发送数据的时候,将数据从存储器传送到USB的FIFO中,完成数据的发送。在线采样模式下,完成数据的采集之后将数据直接存入USB的FIFO中,从而可以实现不间断采样,实时将数据传送给上位机。

2. 2 USB程序设计

USB的软件系统的设计包括3 个方面: 固件设计、驱动设计和应用程序设计。其中固件设计主要为了完成初始化以及一些端口的配置和使能; 驱动的设计为了能够使得操作系统识别USB设备,并且建立起主机和设备之间的通信; 应用程序完成对USB设备进行命令控制和接收的数据进行[2]。

其中固件和驱动都已经被Cypress FX2 开发包提供,在使用过程中将对应的固件包和驱动包写入对应的设备端即可。本系统的应用程序采用MAT-LAB编写而成,能够完成对上传的数据进行波形显示和频谱分析。通过Mex文件可以完成MATLAB对USB数据的操作,其中Mex文件包括两个部分:控制实现部分和入口程序部分,分别负责程序的功能实现和MATLAB的数据连接[3]。下面是Mex的入口程序的接收数据代码[4],通过VC生成的. DLL文件可以被MATLAB调用从而实现MATLAB对USB数据的读写操作。

3 系统测试

为了测试系统的数据采集性能,采用DG4102型信号发生器产生三个正弦信号进行叠加,其中正弦信号的频率分别为2MHz,5MHz和10MHz,幅值为2V,系统经过对混合信号的采集将数据回传至PC,MATLAB接受来自数据采集系统的数据并将数据做快速傅里叶变换( FFT) ,得到如图5 所示的频谱图。可以看出该系统能够将10MHz以下的信号进行很好的采样,同时回传给PC,完成数据传输。

4 结束语

本系统通过ADS807 高速AD转换完成模数转换,通过FPGA完成数据的存储、采样模式的控制以及数据的发送,通过USB2. 0 与计算机进行通信,能够方便地将数据信号接入PC计算机,便于上位的MATLAB或者LABVIEW进行数据调用和处理。在实际的使用过程中该系统能够方便地用于高速信号的采集和分析,灵活的USB接口拓展了高速数据采集系统在工程领域的应用。

参考文献

[1]黄大勇,李鉴,张建正.基于USB2.0接口的高速数据采集系统设计[J].现代电子技术,2007(24):69-72.

[2]向文芳,邢涛,曹红兵,等.高速数据采集系统的USB接口设计[J].计算机测量与控制,2011,19(10):2567-2570.

[3]张聪慧,郑正奇.基于MATLAB的USB数据采集卡上位机处理系统[J].电子设计工程,2011(11):75-77.

USB2.0控制器 第7篇

USB总线是一种新型的高速串行总线, 它具有传输速率高、支持热插拔等优点, 适合于多媒体数据传输。实时图像处理对处理器性能的要求极高, 需要大量的并行运算来提高速度, 而FPGA非常适合做高吞吐量的并行运算。因此, 本文以USB2.0为传输平台, 考虑到系统以后扩展的方便性, 选择了以FPGA为控制器, 实现了通用图像传输系统。

1总体设计方案

系统设计任务是将采集到的图像数据由USB接口传输到计算机中。要想利用USB接口完成大量数据长时间不间断的传输, 需要一个硬件平台来完成。该硬件平台包括CCD图像传感器、基于SAA7111的图像转换模块、基于SRAM的图像采集帧存储电路、FPGA控制电路和USB控制器电路, 如图1所示。CCD图像传感器将图像信号转换为PAL制式的电视信号;SAA7111将模拟电视信号转换为数字信号;FPGA是整个系统的控制核心, 它读取SAA7111输出的图像信号, 并控制USB控制器实现数据传输;USB控制器是整个系统的图像传输通道。

2系统硬件设计

2.1 图像传感器的选择

目前使用的图像传感器有CCD (Charge Coupled Device) 和CMOS (Complementary Metal Oxide Semiconductor) 传感器。因为CCD传感器的速度已经可以满足系统要求, 并且可以使用在图像质量较高的场合, 因此在本系统中我们选择了CCD传感器。

2.2 图像转换模块硬件电路设计

由于CCD传感器输出的是PAL电视信号, 图像转换模块的功能是将模拟电视信号转换为数字信号。PHILIPS公司的SAA7111和SAA7110量化精度可以满足系统的要求, 并且在价格上相比其他公司的产品占有很大的优势, 但SAA7110目前已经停产, 市场上的芯片供应比较紧张, 不适合产品的升级, 所以本系统选用SAA7111来实现图像处理。

2.3 图像采集帧存储器模块设计

2.3.1 帧存储器选型

可以用来设计帧存的存储器件有多种, 为了简化系统设计, 本系统采用双SRAM帧存交替切换的高速帧存设计方法, 应用FPGA设计帧存控制器, 实现帧存的交替。

2.3.2 图像采集

在图像采集的过程中, 最重要的是对一帧图像的开始与结束的判断, 这就必须利用SAA7111提供的奇偶场同步信号RTSO、场同步参考信号VREF和行同步信号的时序。

2.3.3 SRAM读写控制模块

SAA7111的数据信号通过数据线传输给FPGA, FPGA需要将数据保存到SRAM中。由于PAL制电视信号是隔行扫描, 分为奇数场和偶数场传输, 数字化后仍然格式不变, 因此在将数据保存到SRAM以前, 需要将奇数场和偶数场的数据还原成一幅完整的图像。

2.4 FPGA配置电路设计

FPGA配置电路是整个系统的核心。FPGA通过模拟I2C配置SAA7111, 读取解码SAA7111的图像数据, 控制SRAM的读写和USB控制器的数据发送。

根据系统设计要求选择Cyclone中的EP1C6Q240。FPGA器件的配置电路见图2。

2.5 USB控制器电路设计

USB控制器是图像数据的传输通道, FPGA控制USB控制器实现图像数据的传输。

USB芯片选型主要考虑USB2.0芯片的传输速度, 然后是FPGA与USB2.0芯片控制接口的方便性, 以及USB2.0固件程序开发的难易。为了满足系统的实时传输, 我们选用EZ-USB FX2系列的CY7C68013。

FX2有2种接口方式:Slave FIFOs和可编程接口GPIF。Slave FIFOs方式是从机方式, 外部控制器可象普通FIFO一样对FX2的多层缓冲FIFO进行读写。可编程接口GPIF是主机方式, 可以软件编程读写控制波形, 几乎可以对任何8/16 bit接口的控制器、存储器和总线进行数据的主动读写。

使用Slave FIFOs工作方式时, EZ-USB FX2直接与FPGA接口, 并用并行数据线和控制线进行数据交换, 见图3。

3系统的软件开发

3.1 EZ-USB FX2的工作流程

EZ-USB FX2的工作流程见图4。

3.2 EZ-USB FX2系统配置

TD-Init () 函数的一个重要功能就是配置系统, 选择适当的工作模式。EZ-USB FX2具有丰富的寄存器, 根据用户系统的需求, 可以设置成各种工作模式, 如自动方式和手动方式、同步方式和异步方式。选用适当的工作方式可以使得系统实现简单, 并且提高传输的速率。

4结论

本文设计了一种基于USB2.0技术的高速图像采集系统。选用EZ-USB FX2作为USB2.0接口芯片, 采用了较为新颖的Slave FIFOs方式, 使系统达到了较高的数据传输速率, 且具有较好的扩展性。本文为基于USB2.0高速图像采集系统的实现提供了一个设计参考。

参考文献

[1]夏益民, 王广君.基于USB总线的高速数据采集系统[J].国外电子元器件, 2003 (10) :20-23.

[2]王金明.Verilog HDL程序设计教程[M].北京:人民邮电出版社, 2003.

[3]赵俊超.集成电路设计VHDL教程[M].北京:北京希望电子出版社, 2002.

[4]沙吉乐, 曲兴华, 关红彦.基于FPGA技术的新型高速图像采集[J].电子应用技术, 2000, 26 (9) :64-66.

[5]阎晓东, 徐惠民, 特木尔.基于EPLD的视频采集系统[J].计算机仿真, 2003 (11) :120-123.

USB2.0控制器 第8篇

科学技术的发展使数据采集在各个方面的运用越来越多。因此应用背景对高速数据采集系统提出了越来越高的要求。USB2.0接口是计算机重要的外设接口,现如今已广泛推广开来,它具有使用方便,传输速度快、稳定性高、占用系统资源少、与外部接口简单等特点。因此选择采用USB2.0来完成对数据的采集和传输,十分符合现如今的需求。基于USB2.O的高速数据采集系统正是在这样的趋势下应运而生。设计开发时选择了在市场上具有最优的性价比的Cypress公司的EZ-USBFX2系列的CY7C68013芯片,以此为平台开发高速数据采集器。

1 总体设计

设计高速数据采集器主要包括三个方面:高速数据采集芯片AD7862、硬件设计、软件设计。

采集芯片AD7862:该芯片是AD公司生产的双核12位A/D转换芯片,即内置两个可以同时工作的A/D转换器,因此可以满足高速采集数据的要求。两个采样放大器和两个A/D转换可以对两路模拟输入信号同时采样和转换。芯片正常运行时内置5V基准电压且功耗只有60m W,所以适合USB设备使用。

在采集过程中,转换开始低电平有效,下降沿触发开始转换,保持两个采样放大器保持平稳。BUSY信号此时为高电平,表示转换还未结束。直到A/D转换完毕才回到低电平。转换结束后AO用于两路模拟信号(VA1、VA2和VB1、VB2)地址选择。

2 硬件设计

EZ-USBFX2芯片:CY7C68013,具有高效GPIF和智能SIE特点,可使数据传输和采集达到USB2.0可通过率的最大值,而且能处理兼容性的问题,扩大了采集器的应用范围。CY7C68013芯片可编程的外围接口可以直接连接到并口,并可通过编程设置多种工作方式。

目前的高速数据采集器都应用与电脑等数据传输量大的设备,而USB2.0技术的开发就是为了满足高速传输和采集的要求,在利用CY7C68013芯片开发过程中,GPIF(可编程接口)是CY7C68103的端点FIFO的内部控制器,可软件设置读写控制波形,通常使用Cepress公司的GPIF开发工具实现。在波形设计完成后,GPIF将依据波形产生相应的控制和信号给外界接口。通过这种方法,对GPIF进行软件编译,可以实现FIFO的读写需要和控制逻辑。数据采集原理:利用GPIF模块自主设计的优点,来控制采集芯片AD7862对目标进行采样,在采样结束后将采样结果通过GPIF传送到CY7C68013的内部FIFO中缓存。

3 软件设计

软件设计包含了三个部分,有图1所示的CY7C68013的固件,主机平台上的设备驱动程序和应用程序。

3.1 固件设计

固件设计是指芯片上的固件程序设计,主要目的是控制芯片上的微控制器,接收和处理USB驱动程序请求,控制应用程序传输数据。在设计过程中,应用Cypress公司提供的开发平台上,利用C语言进行开发,设计芯片上运行程序。

3.2 驱动程序设计

USB驱动程序分为通用驱动和下载固件驱动,通用驱动指外设与目标端口连接产生通信,一般在Cypress的程序开发包中有,不需要编写。而下载固件驱动是在外设与目标端口连接后,需要下载特定的固件程序,来重新设置通用驱动。

在程序运行后,每当有一个USB接口接入时,搭建好的软件自动会将插入设备的信息为依据去调用相应的驱动和程序,之后通过USB设备驱动程序与USB服务接口进行通信,并由其产生传送动作。而固件部分通过响应各种不同的USB请求,来完成各个数据的交换与处理。固件架构其实是用以连接了USB兼容的外围设备的基本功能,在对最基础的符表文件进行链接,对大的架构代码做少些的修改或添加,以适应不同固件环境下的兼容问题,再如右上图中链接cypress的子程序完善兼容功能。

其实整个系统就是对FPGA与主机的相互调节控制,通过微控制器的操作,我们得以将整个桥梁完整有机的搭建起来,对USB接口的控制,从而与计算机进行通信,还有对FPGA对话,设置工作模式,接口的控制都是系统实现的保证。

预期成果包括软硬件系统一套,能实现上述方案的全部功能。

4 结语

USB2.0控制器 第9篇

进入21世纪以后,电子信息技术以前所未有的速度迅猛发展,各种类型的集成电路不断推出并广泛地应用于各个技术领域。当前,电子设备的发展趋势是小型化和集成化,在便携式电子、消费类电子、通信电子设备等有着广泛的应用,体积和重量成为电子系统设计的影响因素。高速数据传输接口,作为电子设备之间数据交换的必要组件,将集成于整个系统芯片内。锁相环电路成为时钟产生、数据恢复电路模块不可或缺的部分。随着材料、工艺的进步以及制造技术的关键问题解决,以一个芯片实现多功能的单片集成电路逐渐成为现实,其体积小、可靠性高、重量轻、成本低的优势也愈加明显[1]。

本文侧重于集成电路的电路设计考虑,介绍了集成电路的电路设计特点,并以锁相环为典型电路进行详细的讨论。锁相环PLL既是系统的关键模块,又是一个独立的分系统,其应用的范围非常广。

1 集成电路设计特点

集成电路设计不同于印制板电路设计,主要原因在于集成电路设计更接近于电路底层半导体器件的设计,更容易受到制造工艺的影响。在设计时通常要求电路达到三个无关,即与工艺(process)制造无关、与电源电压(power supply voltage)抖动无关、与温度(temperature)变化无关,就是常说的必须与PVT无关。当然,锁相环(PLL)作为系统内的一个不可或缺的子系统也不例外。所以,需要在电路设计时从结构上解决以上问题使得电路能正常工作而不受外界的干扰。比如,电源输入模块前由于其他信号的串扰或耦合使得电源电压存在一定的抖动噪声,在分立器件电路板上很容易用局部的滤波电容将这种噪声隔离。而在当前普遍的数模混合集成电路中,由于模拟和数字模块同时存在于同一芯片内,距离极近,使得电源电压上存在许多无法预料的扰动的问题,所以在设计电路时就必须在电路结构上充分考虑,使得集成电路制造产品后,确保电路参数对电源上不纯净的信号成分不敏感。

印制板电路(亦称板级电路)的设计优势在于拥有各个等级的准确标称的电容、电阻等元器件。利用它们可以将PLL中的环路滤波器(loop filter)设计成高阶、高特性的滤波器。因为可以选用精确电阻、高Q值的电容,高频情况下甚至可以选用声表面滤波器(SAW filter)。但是,集成电路设计却无法利用这些资源,而且由于受到制造工艺的限制不能完成准确值的无源器件的设计,例如设计出有具体标称值的电阻、电容。如果需求特殊,即使可以达到也很困难,其价格当然也就非常昂贵了。例如,虽然环路滤波器是锁相环必不可少的部件,因为它可以减少VCO控制电压信号的纹波(ripple),但在集成电路设计中我们一般也只能采用一阶或二阶的方案。但另一方面,集成电路设计也有不同于板级电路设计的优点和特点,其最大的优点是在于它能做到非常精准的比例,而可以不受制于工艺中的很多因素的影响。集成电路设计更容易利用MOS管及相应的子模块的参数,例如电流源,放大器,有源负载等等。特别是由于它能准确实现比值电路,因此使其成为对其它模块更加有效的设计方法,例如电路中各个支路之间的成比例的镜像电流。

另外,分立元件设计电路时在电路搭建完成后,还可以通过更换其中具有更优参数值的器件或部件来改善设计效果,但是集成电路一旦设计完成,并进行流片,大部分的参数都成为既定事实无法更改。这也是集成电路设计的一个重大特点和难点,由于没有印制板电路加工出来以后的调试阶段,必须在设计时就充分的、完整的仔细考虑。

2 锁相环集成电路的系统设计

无论是利用分立元件搭建锁相环电路还是采用集成电路设计锁相环,首先需要研究的都是锁相环整个环路系统的参数和特性,比如开、闭环传输函数,锁定带宽,系统跟踪特性,等等。虽然集成电路设计的锁相环模块组成有时还会更多一些,但是不管需要多少个模块,每个模块的参数也是来源于系统框架的。所以,第一步都需要制定系统的框架。

一般地,一个最基本的锁相环系统包括鉴频鉴相器(PFD),环路滤波器(LPF),压控振荡器(VCO),有的结构中也包含分频器(divider),系统原理框图如图1所示。

在锁定状态下,即ΔΦ对时间变化为常数,也就是说输入输出频率相同,环路中所有的信号均处于稳态。锁定状态时的时域[2],环路滤波器将鉴相器输出信号中的高频分量抑制后得到直流VCO的控制信号。压控振荡器VCO的输出频率为自由振荡频率与ΔΦ的相差之和。

为了定量分析环路特性,一般采用在输入端加入频率阶跃的方法,即t<t0时环路锁定,t=t0提供正的频率阶跃。如图2所示,由于输入频率x(t)瞬时大于输出频率y(t),鉴相器产生越来越宽的脉冲,增加的脉宽对应更高的VCO的控制电压值。当输入输出信号x(t),y(t)的相位相同时,系统输出y(t)脉冲宽度逐渐减小,最终逐渐达到大于t=t0时的频率初始值ω0。

第二步,根据系统框图,按照确定的模块分配情况对锁相环进行系统仿真,计算环路参数等:

系统开环传输函数[3]

Ηo=ΚΡDGLΡFΚVCΟs(1)

假设滤波器为一阶滤波器

GLΡF=11+sωLΡF(2)

系统闭环传输函数

Η(s)=Φout(s)Φin(s)=ΚΡDΚVCΟGLΡF(s)s+ΚΡDΚVCΟGLΡF(s)=ΚΡDΚVCΟs2ωLΡF+s+ΚΡDΚVCΟ(3)

经过简化可以得到标准形式,

Η(s)=ωn2s2+2ξωns+ωn2(4)

其中

ωn=ωLΡFΚΡDΚVCΟ,ξ=12ωLΡFΚ(5)

根据(5)式,可以推导出-3dB带宽,阻尼系数,系统稳定性等锁相环的系统指标。至此为止,分立器件的锁相环系统设计完成,下一步只需要购买合适的各个部件进行调试即可。

但是在系统级的设计中,集成电路考虑的因素与板级电路却不完全相同,在锁相环组合模块中仍有一些差别。集成电路设计的组合模块中,为了更好地将PFD的数字信号转换为由VCO控制电压控制的模拟信号,会增加电荷泵模块;为了消除外部偏置引入的各种问题,须增添自偏置模块(self-bias)。考虑到以上因素,应用与USB2.0的集成电路锁相环系统框架。

3 模块设计举例

系统框图确定以后,需要对各个模块进行设计与仿真验证。下面以鉴频鉴相器PFD设计为例简单介绍集成电路模块设计。

鉴频鉴相器可以同时检测到输入的两路信号相位和频率的不同,这点对提高锁相环的捕获时间和锁定速度非常重要。鉴频鉴相器可以分别用异或门组成,也可以用R-S锁存器,以及双边沿触发器(D触发器)组成。与异或门和R-S锁存器构成的鉴频鉴相器不同的是,双边沿触发器的两路输出信号不是互补的[4]。对于鉴相器两个输入信号的频率相同

ωA=ωB时,输出QAQB以脉冲宽度反应输入信号的相位差;当两个输入信号的频率不同ωAωB时,QAQB中一个为零而另外的一个为正脉冲。因此QA-QB的平均值表示输入信号频率和相位的差。另外,双边沿触发器(D触发器)的输出非互补信号还可以避免后级电荷泵输出产生死区现象。本设计选用D触发器组成鉴频鉴相器,具体电路如图3所示。

仿真结果如图4所示,可以看到,左右两幅图是分别在输入端AB输入不同频率的信号时,即相位随时间变化,输出波形。右图为当ωA>ωB时,QA有随相位差而变化的输出,QB没有输出。左图为当ωA<ωB时,QA没有输出,QB有随相位差而变化的输出。波形均未见任何失真现象,说明所有的MOS管均工作在饱和区,电路工作正常。

4 设计方法比较

综上所述,板级电路PLL设计主要针对的是系统环路的特性,具体的电路级设计应该重点在环路滤波器具体参数。相对而言,集成电路PLL设计不仅仅需要设计整个环路参数,还需要设计系统内部各个模块的器件参数,可更改的参数量更多,设计也更加灵活。可以看出:

①由于印制板电路与集成电路制造的各自特点,分立元件电路设计可以在印制板制造完成后具体调试系统,设计更改比较灵活;而集成电路设计则相对固定,一旦流片完成就不可再更改。因此整个系统的设计和仿真时需要考虑包括电路的抗外界影响能力、寄生参数影响、版图放置等问题,以确保生产出的芯片可以正常工作。

②由于集成电路设计贴近物理层,更容易受到制造工艺的影响,所以系统设计时需要添加一些电路模块以满足系统不受电源、温度、工艺的干扰。例如在锁相环的设计中,为了减小压控振荡器的偏置电流保持恒定、与电源电压无关,集成电路系统结构中会增加自偏置模块。

③印刷板电路更侧重于系统的设计,根据系统要求选择单元模块的设计思想,而集成电路设计是从底层每个模块开始根据电路需要完成整个系统的设计。在锁相环设计实例中,印刷板电路设计主要是通过选择器件来达到系统环路的特性,比如环路带宽、环路增益、稳定性等;相对而言,集成电路设计时则须从每个模块着手,适当地添加部分模块,调整部件参数等来实现系统环路的特性。

5 结束语

系统设计走向小型化集成化的趋势已经越来越明显。单个芯片要集成更多的功能使得设计不得不从电路最底层做起。本文通过应用于USB2.0中480MHz锁相环的系统和消除死区的鉴频鉴相器的设计,突出介绍了集成电路设计的方法与思路,为集成电路的设计人员和使用人员提供参考和借鉴,以利于广大电子电路设计工程师设计出自己需要的、更新颖、更复杂的电路和系统。

参考文献

[1]万天才.频率合成器技术发展动态[J].微电子学,2004.

[2]Behzad Razavi.Monolithic phase-locked loops and clock recoverycircuits[C].IEEE J.Solid-State Circuit,1996.

[3]Gardner F M.Phaselock Techniques[M].2nd ed.Publication:NewYork,John Wiley,1979 Grey.

USB2.0控制器

USB2.0控制器(精选9篇)USB2.0控制器 第1篇1 USB2.0设备控制器整体结构在设计过程中采用自上而下(Top-to-Down)的方法[2],根据功能的不同...
点击下载文档文档内容为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部