USB2.0控制器(精选9篇)
USB2.0控制器 篇1
0 引言
随着超大规模集成电路(VLSI)、表面安装器件(SMD)、多层印制电路板(MPCB)等技术的发展,使得统一测控系统综合基带印制电路板上电路节点的物理可访问性正逐步恶化,电路和系统的可测试性急剧下降,常规测试面临挑战[1]。通过研究VLSI芯片资料表明,大多数VLSI芯片都带边界扫描结构,如果将边界扫描技术应用到板级测试中,无疑将对电路板的连接故障和器件失效的准确诊断起到非常重要的作用。边界扫描测试主控系统是实现这一技术必不可少的硬件系统。从JTAG(Joint Test Action Group)提出该技术至今的十几年中,边界扫描测试技术已得到了一些应用,并将有广阔的应用前景[2]。本设计在分析边界扫描测试受控系统工作机制的基础上提出一种基于USB总线的边界扫描测试主控系统的设计方案和实现电路。此方案具有结构简单、成本低、便携性的特点。
1 边界扫描结构及基本原理
1.1 边界扫描技术的基本原理
边界扫描技术的主要思想是通过在芯片管脚和芯片内部逻辑电路之间增加由移位寄存器构成的边界扫描单元,实现对芯片管脚状态的串行设定和读取,使管脚具有可控性和可观测性。由于移位寄存器允许测试数据移位、更新测试和捕获锁存,因此它不仅可以用来测试单独的一个芯片,而且可以对电路板进行互连测试。图1给出了边界扫描通路示意图。其中,边界扫描单元在主IC的测试数据输入端(TDI)和测试数据输出端(TDO)之间形成了一个扫描通道,当IC处于正常工作状态时,输入输出信号自由通过边界扫描单元,从正常数据输入端(NDI)到正常数据输出端(TDO)。
图1边界扫描通路示意图(参见右栏)
1.2 边界扫描物理结构
边界扫描测试的基础是边界扫描测试总线和设计在器件内的边界扫描结构,边界扫描测试总线由TDI(测试数据输入)、TDO(测试数据输出)、TMS(测试模式选择)、TCK(测试时钟)、TRST(测试复位)5条线构成,主要完成测试向量输入、测试响应向量输出和测试控制功能。器件内边界扫描结构主要由TAP测试存取口、TAP控制器和必需的寄存器组成。TAP控制器接受来自边界扫描测试总线的命令,控制边界扫描单元的行动,实现对器件管脚状态的设定、读取和隔离[3]。
1.2.1 寄存器
JTAG边界扫描寄存器至少应包括边界扫描寄存器(DR)、指令寄存器(IR)和旁路寄存器。
(1)边界扫描寄存器。边界扫描寄存器用于存放测试数据和测试响应数据,它由串行移位级和并行锁存级组成。边界扫描寄存器的工作方式为:加载到TDI的测试数据在TCK的上升沿串行移人边界扫描寄存器,寄存器原来内容在TCK的下降沿被串行移出到TDO,移入移位寄存器的数据可以被锁存到并行输出锁存器中;对应于输出引脚的并行锁存器可并行输出到器件的引脚,移位寄存器可以并行捕获到器件的逻辑输出;对应于输入引脚的并行锁存器可以并行输出到器件的内部逻辑,移位寄存器可捕获输入引脚信息。
(2)指令寄存器。指令寄存器由串行移位级和并行锁存级组成,其位数由芯片生产厂家定义。常用的指令包括EXTEST、BYPASS、SAMPLE、INTEST等。TAP控制器根据指令寄存器中选择的指令不同选择将指定的寄存器连接到TDI和TDO之间。
(3)旁路寄存器。旁路寄存器由一位移位寄存器组成,当其被选通时,直接连接到器件的TDI和TD0之间从而获得最短的扫描路径。旁路寄存器的主要作用有:a.当集成电路IC不需要数据寄存器的扫描存取时将其从扫描链上脱离从而缩短边界扫描结构的扫描通路长度;b.在测试期间,使集成电路IC脱离某种工作模式。
1.2.2 TAP控制器
TAP控制器控制整个边界扫描机制的操作,其核心是16个工作状态转换机制,状态转换由TCK采样TMS的值来实施。
2 硬件设计
控制器硬件可分为两部分:一部分是USB控制芯片,另一部分是JTAG主控芯片,控制器利用USB控制芯片实现USB协议与PC机进行通信,同时通过操作JTAG主控芯片,使其输出到JTAG总线上的数据符合IEEE1149.1标准,从而达到由PC机控制JTAG总线的目的。控制器硬件结构如图2所示。
公司生产的EZ-USBFX2芯片CY7C68013是一种USB接口控制芯片,CY7C68013芯片包括一个加强型的8051处理器、一个串口引擎(SIE)、一个USB2.0收发器、8.5k B片上RAM、4k B的FIFO存储器以及一个通用可编程接口(GPIF)[4]。其GPIF可与任何ASIC或DSP进行连接,它还支持现行所有通用总线标准。本系统USB接口芯片既作为数据传输的中介,同时完成和便携式计算机间的控制信息的交换和控制过程的执行。传输模式:在USB协议定义的4种传输模式中,批量传输和等时传输的速度较快。但批量传输具有差错校验,可以保证数据传输的正确性。在本方案中,因为对数据的准确性要求较高,故采用批量传输方式。采用从PC端下载8051运行代码的方式。这样系统软件修改和功能升级更加灵活,也省掉了外接ROM,使电路更加简洁、可靠。
选择TI公司专门针对系列DSP的边界扫描芯片ACT8990。ACT8990的内部结构主要由队列管理模块、主机模块、串行模块、事件管理器、计数器、命令管理以及读写总线组成。
3 软件设计
本控制器的软件设计包括:固件程序、驱动程序和CPLD逻辑代码以及CY7C68013的配置芯片EEPROM的代码。软件部分包括测试向量生成及分析模块、边界扫描测试运行模块和USB数据传输驱动三部分。测试驱动程序作为下位机程序驻留在边界扫描控制器中。边界扫描测试运行模块和测试向量生成及分析模块作为上位机程序主要包括:测试文件分析、测试向量生成、上下位机通讯、响应向量分析和辅助功能模块。
3.1 测试文件分析
测试软件运行时首先检测文件库中芯片边界扫描描述文件是否齐全,然后进行测试文件加载。测试执行时将被测板网络表文件(Protel软件在设计电路图时生成的标准文件)加载到系统中,分析该文件并生成测试板芯片信息文件和芯片间管脚互连网络节点文件。根据芯片在边界扫描链路上的顺序将芯片名称、封装形式列入到测试板芯片信息文件中。网络节点文件中则给出两个芯片间的网络节点列表以及对应该节点的两个芯片管脚号码,并根据边界扫描描述文件中的定义将互连节点中的TMS、TCK、TDI、TDO节点剔除。生成的这两个文件是供测试向量生成和响应向量分析模块使用。边界扫描描述文件由IEEE l149.1标准定义,就一般测试而言分析该文件主要获得芯片物理管脚号码和边界扫描寄存器位置的对应关系(边界扫描寄存器中靠近TDO的那一位定义为第0位)、边界扫描测试的各种指令、指令寄存器和边界扫描寄存器的描述以及芯片管脚的输入输出类型[5]。
3.2 测试向量生成
进行边界扫描测试时首先应当检验边界扫描链路连接和工作状态是否正常;边界扫描链上的芯片是否正确安装,即执行完整性测试。完整性测试通过后才能允许执行进一步的测试内容。完整性测试是通过捕获扫描链路芯片在TMS状态机经过CAPTURE-IR状态时装载到指令寄存器中的数据以及读取标志寄存器里的芯片ID码与边界扫描描述文件的正确代码进行比较来完成的,在读取指令寄存器捕获值的同时可以通过TDI将下一步的测试指令写入,以节省测试步骤。图3给出了测试软件的流程图。
电路板芯片间的互连测试是边界扫描测试技术的主要测试内容,主要用来检测测试板上各个网络连接是否正常,是否存在固定逻辑故障、开路故障、桥接短路故障和其他特殊故障。根据测试需要,兼顾测试时间和测试精度两方面的要求,在软件中采用了5种不同的测试向量生成算法(分别为改良计数序列算法、计数补偿算法、移位一算法、等权值抗误判算法、极小权值一极大相异性算法)。根据主界面选择的测试要求,将扫描链上不需要进行测试的芯片送人旁路指令,而被测试芯片则送人外测试指令。以此准则生成互联测试指令代码,串行加载到链路芯片的指令寄存器上。互连测试向量则需要根据主界面选择的算法和芯片互连网络节点文件生成。为了保证生成的测试向量能够准确地加载到互连网络节点上,需要对生成的初级测试代码进行处理。变换思想是根据芯片物理管脚和边界扫描单元的对应关系,将生成的对应网络节点管脚的测试数据填入到其在边界扫描链路中对应的位置,形成可加载到扫描链上的测试向量。器件的功能测试主要包括对具有边界扫描结构的芯片或电路板进行功能测试以及对不具有边界扫描结构的器件进行簇测试。其测试数据和测试响应数据都是根据芯片逻辑定义好的。对于簇测试芯片,需要用它周围的具有边界扫描结构的芯片的边界扫描单元作为簇测试芯片的虚拟边界扫描单元,来进行测试数据的加载和捕获。因此网络节点文件不能通过查找网络表文件自动生成,需要自己定义,其格式与执行互连测试时生成的文件相同。读取文件中预先定义的测试向量并变换成能最终加载到链路上的测试向量的方法也与互联测试相同。其他进行采样测试、机内自检测试时只需要输入测试指令分析测试结果,并不需要生成额外的测试数据。
3.3 测试响应分析及故障诊断
测试响应分析及故障诊断模块对测试响应数据进行分析,以确定目标电路板有无故障、故障位置和故障类型,并将分析结果送给主界面进行显示。进行故障分析时首先要对测试响应向量进行初处理,剔除垃圾数据,然后将有效的响应数据代人故障诊断函数进行分析。进行完整性测试故障诊断时,利用芯片列表信息文件和边界扫描描述文件中的定义将响应向量中对应于各个芯片的CAPTURE-IR值和IDCODE值分析出来与标准值进行比较分析,就可以给出故障判断。进行互联测试故障诊断时,需要根据芯片物理管脚和边界扫描单元的对应关系将对应于网络节点文件中网络管脚的测试数据从响应向量中提取出来。然后根据分析规则和输入的测试向量分析出存在固定逻辑故障、开路故障、桥接短路故障和特殊故障的网络号码及其对应的互连芯片管脚号码,并分析给出可能存在的误判或混淆的网络[6]。器件的逻辑功能故障诊断和簇测试故障诊断方式与互联测试基本相同,也需要把对应测试管脚的响应向量从整个测试响应向量中提取出来,与标准的测试结果进行比较从而确定器件的逻辑功能是否正常。
4 测试结果
(1)扫描链路的测试。先用移位指令命令将取样预加载指令(SAMPLE/PRELOAD)送出,然后用移位数据命令将一系列1010...10测试矢量序列扫入到扫描链路中,同时将其扫回到主控计算机进行比较,判断扫描链路是否完好;
(2)获取器件标识。用移位指令命令对两片支持边界扫描测试功能的芯片发器件标志代码(IDCODE)指令,或对一片CPLD发旁路指令(BYPASS),另一片发器件标志代码(IDCODE)指令,然后用移位数据命令将32位器件标志从器件标志寄存器扫出,以获得被测器件的器件标志;
(3)互连测试。先用移位指令命令将取样预加载指令(SAMPLE/PRELOAD)送出,然后用移位数据命令将用于互连测试的测试矢量送人芯片1中,随后用移位指令命令将外测试指令(EXTEST)送出,再用移位数据命令将测试响应从芯片2中扫回到主控计算机中,并与正确的响应进行比较,以对所模拟的四路短路故障、开路故障进行诊断并定位。上述测试均得到了正确的结果,此外,在进行扫描链路的测试中,还对FIFO模块支持不间断全速扫描进行了充分的验证。
5 结束语
边界扫描机制的出现是测试及可测试性设计思想的一次飞跃,它提供了一种完整的、标准化的VLSI电路可测试性设计方法。它不仅能对传统的测试问题提供标准和有效的解决方案;同时还能提高系统各级的可测试性。随着边界扫描技术的发展以及日益广泛的应用,开发边界扫描测试系统具有很高的现实意义和市场价值。而边界扫描测试软件作为边界扫描测试系统的操作部分更需要通过合理的设计使测试过程自动化、测试对象通用化、诊断结果精确可靠,更好地发挥边界扫描测试技术的优点,推动边界扫描测试技术的推广和应用。
摘要:系统采用CY7C68013及其配置芯片EEPROM完成USB接口部分的功能,采用ACT8990完成边界扫描部分的功能,为完成部分逻辑功能及对此控制器设计的部分电路加密,采用CPLD EPM3032A实现。接着,给出了整个控制器的软件设计方案,具体讨论了CY7C68013的固件设计,以及利用WindowsDDK开发包开发固件装载驱动程序及控制器驱动程序的方法。调试结果表明,研制的边界扫描控制器功能正常,符合设计要求,具有即插即用、无需外部供电、连接简单可靠等优点。
关键词:边界扫描,USB2.0,JTAG,WDM驱动程序
参考文献
[1]王金明,杨吉斌.数字系统设计与Verilog HDL[M].北京:电子工业出版社,2002.
[2]张书静.边界扫描技术研究[D].成都:电子科技大学,2005.
[3]Mitra S,McCluskey E,Makar S.Design for testabilityand test of IEEE1149.1 TAP controller[C]//Proceedings 20th IEEE 2002:247-252.
[4]李洪伟.基于Quartus11的FPGA CPLD设计[M].北京:电子工业出版社,2005.
[5]Cypress.EZ USB FX2M Annual Technical Reference[DB].Cypress,2001.
[6]跃刚,韩心中.基于WDM模式的USB设备驱动程序开发[J].微计算机信息,2006,22(8):35-38.
USB2.0控制器 篇2
主要区别就是传输速度,USB1.1和1.0的数度分别为12Mbps和1.5Mbps。而USB2.0更是达到480Mbps,速度已经超过IEEE1394的400Mbps,几乎可与IDE相提了,可与IDE的速度拼了,
以上提到的的是Mbps,不是MBps.1Byte=8bits。平时提到存储空间都是指Byte.因为USB所有的版本都是向下兼容的,所以对比USB2.0,1.1和1.0都是马上被淘汰的技术,不需要太过关注。还有就是,你将USB2.0的设备接在低版本的USB接口上,或是将低版本的USB设备接在USB2.0接口上,传输速度都按下限来算的。
USB2.0控制器 篇3
为了便于实验研究和测试,设计了一个室内温度控制系统,其控制对象为1立方米密封箱体,箱体采用双层结构制成,外层采用内贴保温材料的三合板,内层采用真空有机玻璃,以达到良好的保温效果。该系统温度可以在一定范围内由人工设定并实现自动调整, 以保持设定的温度基本不变。
该系统实现的主要目的如下:①温度设定范围为4~50℃;②稳态下温度的波动能控制在±1℃以内;③采取有效的控制方法,当设定温度突变(由30℃降低到15℃或由15℃升高到30℃)时, 减小系统的调节时间和超调量;④定温度发生突变(由29 ℃ 降低到12℃ )时,自动显示/记录温度变化的时间曲线。
1.1 系统的硬件结构
系统硬件(系统硬件原理如图1所示)分为温度采集模块、核心控制模块、显示控制模块、制冷片驱动模块、电源驱动模块等。其工作原理是:温度传感器AD590K根据环境温度产生电流信号,此信号被送入电流-电压转换电路,转变为电压信号,并进行调理,然后送到USB2.0多功能数据采集卡进行A/D转换。数据采集卡上具有10位A/D转换模块和相应的控制模块,根据它的硬件环境和良好的编程环境而设计的电路可以将AD590K采集的数据转换为符合要求的数据,并对这些数据进行判断和处理,然后在计算机上显示出测得的数据。接着判断电路应该工作的状态,经过数据采集卡上的I/O端口控制驱动电路(开关电路),从而驱动半导体制冷片工作,最终达到温度自动控制的目的。
1.2 各单元模块的设计
(1)温度采集模块
温度采集模块电路图如图2所示:
温度采集部分采用具有较高精度和重复性的AD590K 传感器,AD590是集成恒流型的测温器件,具有测温误差小、动态电阻高、响应速度快、微功耗、传输距离远、体积小等优点,适合远距离测温和控温,非线性误差为±0.3℃,通过软件插值算法非线性补偿,可以达到±0.1℃测量精度。测试时,加上软件非线性补偿可实现高精度测量。
温度采集电路采用两级运放将采集的数据进行处理,最终满足我们USB2.0板卡A/D采集的要求(0—3.3V)。第一级运放为电流—电压转换电路,得到的电压和温度的关系式为Vo=(2.732+T/100)V,第二级运放采用差分比例运算电路,将温度和电压转换成线性关系Vo=(T/20)V,则0℃~50℃的相应电压范围是0.000V~2.500V,然后将电压送至数据采集卡进行采集。
(2)核心控制模块
核心控制模块我们采用USB2.0多功能数据采集卡,它将采集、控制、驱动等功能集成一体,安装和配置容易(外接、热插拔、即插即用),并且编程简单,控制操作方便,总线供电、工作稳定、性价比优,非常适合学校教学科研采用,本设计USB数据采集卡将传感检测放大电路输出的8路电压信号分别进行A/D转换后,送入计算机进行分析处理。
(3)显示控制模块
通过LabVIEW编程开发基于计算机屏幕的软面版对电路进行控制和数据显示非常方便和直接,且还可以利用计算机进行声光报警,使整个电路智能化。
(4)制冷片驱动模块
制冷片的驱动模块主要考虑控制电路输出的数字控制信号能否控制制冷片的工作与否,考虑到负载需要很大的电流,最终的输出驱动电路的内阻要求必须很小。经试验比对,最终选择输出电阻最大8毫欧、最大电流可达到100A的HRF3205场效应管,其开启电压在 3到 4V之间,标准信号有函数信号发生器(不行到10V得到时候可以)提供,直流源在4V的时候导通,接入三极管调理电路后,函数信号发生器提供的信号工作良好。电路图如图3所示:
(5)电源驱动模块
本系统中的电源驱动模块有两个。一个是为控制部分提供合适的电压,另外一个是专门为半导体制冷片提供其工作的电压和电流。控制部分驱动电路采用78xx系列和79xx系列稳压器件稳压得到,输出参数有±12V和±5V。另外单独采用大功率开关电源对半导体制冷片提供电源。
电路图如图4所示:
1.3 控制算法
在室内温度控制系统中,采用单纯的PID 控制始终具有较大的超调,而一旦出现气温超调,只能靠制冷片反向工作调整,这就使得调节时间大大延长,且耗能。因此,要缩短气温控制系统中的调节时间,就必须做到基本无超调。本设计分段线性加PI积分分离控制算法进行温度控制。
2 系统软件设计
2.1 软件主要功能设计
①温度设定 设定控制温度为4~ 50℃;②控制参数设定 温度实时控制采用了分段线性和PI积分分离控制算法。把非线性特性曲线分成若干个区段,在每个区段中用直线近似地代替特性曲线,这种处理方式称为分段非线性化。PI 积分分离控制算法是对常规PI控制算法的改进,该方法的实质是:当被控量与设定值的偏差较大时,取消积分作用,以免积分作用使系统稳定性减弱,超调量加大;当被控量接近设定值时,加入积分作用,以便消除静差,提高控制精度;③报警门限设置与报警 通过软面板设定报警的上下限开关, 报警启动后, 程序依据设置进行报警处理;④传感器的非线性补偿 为了获得±0.1℃ 的控制精度,温度的测量精度必须优于±0.1℃。利用软件中设有的分段差值程序,对AD590K的信号进行非线性补偿以获得±0.1℃的测量精度。
程序流程图如图5 所示。
系统开始工作时,温度传感器采集的温度转变为电压信号送入数据采集卡,然后由数据采集卡对信号进行处理,显示当前的温度并绘制温度-时间曲线。然后系统会判断当前温度与设定的温度是否相等,相等则无动作,不相等则控制外部模块工作,直至到所需要的温度,达到温度自动控制。
2.2 软件开发平台的选择
本系统采用虚拟仪器软件LabVIEW创建上位机操作程序,LabVIEW是一款优秀的G语言开发工具,它是专业化虚拟仪器开发语言,其运行速度与C的目标程序相当,开发周期短,编程简单易学,这里,由它设计开发的可视化程序完成现场数据采集、实时和历史数据处理、系统参数设置、控制算法选择及动画显示等功能。上位机操作程序如图6 所示:
3 系统测试记录与调试结论
在测量过程中能随意控制温度,能步进0.1℃,分辨率能达到0.1℃,达到稳定状态后盒内温度的波动能控制在±1℃以内。
经测试在3分钟内能达到规定的15℃的温差,并且稳定后盒内温度波动在±1℃以内。
能在计算机上实时显示温度调节过程的曲线,且显示的温差绝对值小于2℃。数据显示如图7所示。
4 结束语
根据测试结果可知设计基本成功,能够满足要求。
从测试结果可知, 设计的温控系统提高了静态控制精度,减小了调节时间和超调量,系统的可靠性和安全性较高, 控制算法先进,系统性能良好,基本达到了设计目标。
参考文献
[1]张臣文.基于虚拟仪器的网络教育实验教学模式探究[J].实验室研究与探索,2011(3).
[2]张臣文,李文联.网络实验教学新模式的探索与实践[J].实验室研究与探索,2010(2).
[3]张臣文,李文联.基于虚拟仪器的数字化实验模式研究[J].襄樊学院学报,2010(2).
[4]HOLLOT C V,MISRA V.Towsley on designing improved control-lers for AQM routers supporting TCP flows[J].Power Sources,2001(51).
[5]易晗平,蒲超.非线性系统参数的多种群并行遗传优化[J].兵工自动化,2005(4).
[6]张臣文.多元整合:大学物理实验模式教学功能探析[J].襄樊学院学报,2011(2).
[7]管凤旭,程文清,吕淑萍.基于环境检测与控制的综合实验项目设计[J].实验室研究与探索,2010(9).
USB2.0控制器 篇4
摘要:介绍基于USB2.0协议、最多可四路同步采样的高速同步数据采集系统。其单通道采样速度620ksps,四通道同时采样速度可达180ksps。USB接口控制及通信芯片采用Cypress公司FX2系列中的CY7C68013,通过对其可编程接口控制逻辑的合理设计和芯片内部FIFO的有效运用,实现了数据的高速连续采样。
关键词:USB2.0协议同步数据采集CY7C68013可编程控制接口FIFO
USB(UniversalSerialBus)总线是INTEL、NEC、MICROSOFT、IBM等公司联合提出的一种新的串行总线接口规范。为了适应高速传输的需要,2000年4月,这些公司在原1.1协议的基础上制订了USB2.0传输协议,已超过了目前IEEE1394接口400Mbps的传输速度,达到了480Mbps。USB总线使用简单,支持即插即用PnP(PlugAndPlay),一台主机可串连127个USB设备。设备与主机之间通过轻便、柔性好的USB线缆连接,最长可达5m,使设备具有移动性,可自由挂接在具有USB接口的运行在Windows98/NT平台的PC机上。USB总线已被越来越多的标准外设和用户自定义外设所使用,如鼠标、键盘、扫描仪、音箱等。
笔者结合设备检测中数据采集的实际需要,设计了该高速同步数据采集系统。该系统最多可四路同步采样,单通道采样速度可达620ksps,四通道同时采样速度可达180ksps。USB接口控制芯片采用Cypress公司FX2系列中的CY7C68013,通过对其可编程接口控制逻辑的合理设计和芯片内部FIFO的有效运用,实现了数据的高速连续采样和传输。
1基本原理
该采集系统总体框架分三部分:主机(能支持USB2.0协议的PC机)、内部包含CPU及高速缓存的USB接口控制芯片(CY7C68013)和高速同步采样芯片(MAX115),如图1所示。其数据传输分两部分:控制信号传输和采集数据传输。控制信号方向为由主机到外设,由外设CPU控制,数据量较小;采集到的数据由外设到主机,数据量较大。为了保证较高的传输速度,不经过CPU。系统基本操作过程为:主机给外设一个采样控制信号,FX2根据该信号向A/D转换器送出相应控制信号,即采样模式控制字;之后由A/D转换器自主控制转换,并将各通道采样数据存入其片内缓存。一旦转换完成,由A/D的完成位向FX2的可编程控制接口发读采样结果信号;然后由可编程接口的控制逻辑依次将各通道采样结果从A/D的缓存读入FX2的内部FIFO。当FIFO容量达到指定程度后,自动将数据打包传送给USB总线。期间所有操作不需要CPU的干预。采样过程中接口控制逻辑依次取走批量数据,在打包传送时A/D仍持续转换,内部FIFO也持续写入转换结果。只要内部FIFO写指针和读指针位置相差达到指定的值就立即取走数据。从而保证了同步连续高速采集的可靠性。
2硬件部分
2.1芯片介绍
CY7C68013属于Cypress公司的FX2系列产品,它提供了对USB2.0的完整解决方案。该芯片包括带8KB片内RAM的高速CPU、16位并行地址总线+8位数据总线、I2C总线、4KBFIFO存储器以及通用可编程接口(GPIF)、串行接口引擎(SIE)和USB2.0收发器。在代码的编写上,与8051系列单片机兼容,且速度是标准8051的3~5倍。
CY7C68013与外设有两种接口方式:可编程接口GPIF和SlaveFIFOs。
可编程接口GPIF是主机方式,可以由软件设置读写控制波形,灵活性很大,几乎可以对任何8/16bit接口的控制器、存储器和总线进行数据的主动读写,使用非常灵活。SlaveFIFOs方式是从机方式,外部控制器可象对普通FIFO一样对FX2的多层缓冲FIFO进行读写。FX2的SlaveFIFOs工作方式可设为同步或异步;工作时钟为内部产生或外部输入可选;其它控制信号也可灵活地设置为高有效或低有效。笔者在设计中采用主机方式。
MAX115是美信公司的高速多通道同步采样芯片。含有两组4路同步通道,共8个输入端。采样精度为12位,采样模式由采样控制字决定,可灵活地在两组中的1~4个通道间选择。采样时,各通道转换结果先存入其内部相对应的4个12bit存储单元,各通道都转换完后再一起取走。
2.2电路原理及设计
考虑CY7C68013与MAX115接口时,采样模式不同,控制波形有所差别,笔者选择主机方式即可编程控制接口(GPIF)。
GPIF是FX2端点FIFO的内部控制器。在这种方式下,接口内核可产生6个控制输出端(CTL0~CTL5)和9根线的地址(GADR[8:0])输出,同时可以接收6个外部输入(RDY0~RDY5)和2个内部输入。FX2有4个波形描述符控制各个状态。这些波形描述符可以动态地配置给任何一个端点FIFO。例如,
一个波形描述符可以配置为写FIFO,而另一个配置为读FIFO。FX2的固件程序可以把这些描述符配置给四个FIFO中的`任意一个,配置后,GPIF将依据波形描述符产生相应的控制逻辑和握手信号给外界接口,满足向FIFO读写数据的需要。GPIF的数据总线既可以是单字节宽(8位FD[7:0])也可以是双字节宽(16位FD[15:0])。每个波形描述符包含了S0~S6七个有效状态和一个空闲状态。在每个有效状态对应的时间段里,经过预先设置,GPIF可以做以下几件事情:(1)驱动(使为高或低)或悬浮6个输出控制端;(2)采样或驱动FIFO的数据总线;(3)增加GPIF地址总线的值;(4)增加指向当前FIFO指针的值;(5)启动GPFIWF(波形描述符)中断。除此之外,在每个状态,GPIF可以对以下几个信号中任意两个进行采样,它们是:(1)RDYX输入端;(2)FIFO状态标志位;(3)内部RDY标志位;(4)传输计数中止标志位。把其中两个信号相与、相或或者相异或,根据结果跳转到其它任意一个状态或延迟1~256个IFCLK时钟周期。当然也可以根据输入端的信号进行跳转或延迟。GPIF波形描述符通常用Cepress公司的GPIF工具(GPIFTOOL)进行配置。它是一个可运行于Windows平台的应用程序,与FX2的开发包一起发布。
在这种方式下,所有的读写及控制逻辑通过CY7C68013的GPIF以软件编程的方式实现,且控制逻辑的变换方便灵活(只需要改变接口的一个配置寄存器的值)。电路连接如图2所示。
本数据采集系统只用到了两个输出控制CTL0、CTL1和一个外部输入RDY0,它们分别接MAX115的CONVST#、WR#和INT#。数据总线用双字节,其中FD0~FD11接MAX115的数据输入端D0~D11,FD12和FD13接控制字输入端的A2和A3,FD0和FD1复用做控制字输入端的A0和A1。MAX115的采样基准时钟由FX2的输出时钟经三分频得到,为16MHz。对应四种数据传输方式(八种不同的采样模式),GPIF的控制及握手信号波形有所不同。四通道同步采样的时序图如图3所示。
在第一个判决点,若采样数据已准备就绪,MAX115传给GPIF一个负脉冲信号RDY0;根据此信号,波形按顺序转入2、3、4、5状态,使指向内部FIFO的指针在每个时钟上升沿加1,依次读取四个数据,取完数据后利用CTL0的上升沿启动下一次采样。若在状态1时没有出现负脉冲,则直接跳转到状态6,之后重复执行此波形描述符。
三通道同步采样时,读取数据的状态只需要持续三次。其它采样模式控制波形的设计依此类推。
2.3固件程序设计
固件程序是指运行在设备CPU中的程序。只有在该程序运行时,外设才能称之为具有给定功能的外部设备。固件程序负责初始化各硬件单元,重新配置设备及A/D采样控制。固件代码的存储位置有三种:第一种是存在主机中,设备加电后由驱动程序把固件下载到片内RAM后执行,即“重新枚举”;第二种方法是把固件代码固化到一片EEPROM中,外设加电后由FX2通过I2C总线下载到片内RAM后自动执行;最后一种方法是把程序固化到一片ROM中,使之充当外部程序存储器,连在FX2三总线上。笔者选用第一种方式,这种方式便于系统的调试和升级。固件程序框图如图4所示。
3用户程序和驱动程序
3.1驱动程序的编写
该系统需要两个驱动程序,即通用驱动和下载固件的驱动。通用驱动完成与外设和用户程序的通信及控制;而下载固件的驱动则只负责在外设连接USB总线后把特定的固件程序下载到FX2的RAM中,使FX2的CPU重启,模拟断开与USB总线的连接,完成对外设的重新设置。主机根据新的设置安装通用驱动程序,重新枚举外设为一个新的USB设备。
通用驱动程序一般不需要重新编写,用Cypress公司已经编好的驱动ezusb.sys;而下载固件的驱动则必须定做,其详细操作过程见参考文献[2]。
3.2用户程序的编写
用户程序是系统与用户的接口,它通过通用驱动程序完成对外设的控制和通信。在编写用户程序时,首先要建立与外设的连接,然后才能实施数据的传输。启动采样后,为了保证不丢失数据,用户程序应该建立一个新的工作线程专门获取外设传来的数据。程序中主要用到两个API函数:CreateFile和DeviceIoControl。CreateFile()取得设备句柄后,DeviceIoControl()根据该句柄完成数据传输。程序代码简要如下:
hDevice=CreateFile(″\\\\.\\EZUSB-0″)
GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
F
ILE_ATTRIBUTE_NORMAL,
NULL);
If(hDevice==INVALID_HANDLE_VALUE)
{
Application->MessageBoxA(“无法创建设备,请确认设备是否连上!”,NULL,IDOK);
}
else
{
DeviceIoControl(
hDevice,
IOCTL_EZUSB_BULK_WRITE,
&blkctl,
sizeof(BULK_TRANSFER_CONTROL),
&inBuffer,//定义的数据缓冲区
sizeof(inBuffer),
&nBytes,
NULL);
……
}
程序框图如图5所示。
USB2.0双路路由的实现方法 篇5
关键词:USB,路由控制
【文章摘要】
在工业控制中, 可能会出现这样一种情况:例如, 用多台主机在不同的时间段控制某个设备, 这在某些控制系统中比较容易实现, 如CAN总线系统。现在, 随着USB总线的普及, 人们越来越多地使用高速USB方案。但这也带来了一个实际的问题, 那就是USB是一个单主机多从机系统, 而不是多主机系统。因此, 在某些特殊情况下, 要想实现一个USB外设被多个PC主机 (即USB HOST) 控制, 按照现有的协议和硬件结构, 必须采用分时复用的办法。现实中要实现这样一种方案, 没有专用的芯片可用, 因此要通过全新的电路布局来实现。
【关键词】
USB;路由控制
此类路由控制器要实现的是两个PC主机控制多个USB外设。如果是一台PC主机控制多个USB外设, 最简单的办法就是使用USB Hub (实现一对多的路由) 。这样就提供了一条思路:可以将这个USB Hub同时连接在两台PC主机上。显然, 将USB Hub的上游线缆一分为二直接连在两台PC主机有悖于USB协议的单主机结构, 并且无法实现数据传输。但可以在线缆一分二的结点上安装一个二选一的USB开关, 这样, 在外观上就达到了双主机的现象, 而实际上又不违背USB总线只能单主机传输的事实。在功能实现上, 只需要在合适的时间点上控制开关偏向哪一边, 即USB Hub连接在哪台主机上。
现在, 第一个问题:如何控制USB开关?用一个MCU的GPIO来控制USB开关是基本的电路实现, 主要问题是需要一个终端来自由地发送控制USB开关的指令。显然, 还是要利用PC终端来实现, 因为单独做一个装置来控制USB开关势必造成在一个系统上出现两个终端 (一个是PC, 另一个就是这个专门用来控制USB开关的装置) 的奇怪现象, 并且这不利于资源的合理利用。
由此产生第二个问题:PC主机既要连接USB Hub, 又要连接控制USB开关的电路。如何实现?一方面, PC主机连接USB Hub, 必然使用USB线缆。另一方面, PC主机连接控制USB开关的电路也有诸多总线可以实现, 如UART总线。倘若用UART来实现, 可以想象一下, PC主机与D2H6的连接一边使用USB线缆, 另一边采用RS232线缆, 外观上必然显得很杂乱, 而D2H6要求最简单地连接方式。综上所述, 仍然采用USB线缆是一个比较好的选择。
最后一个问题, PC主机既要与USB Hub通信, 又要与控制USB开关的电路通信, 并且只能使用一条USB线缆。怎样实现?仔细研究, 这个问题的结点就在于一对多, 在USB系统中, 解决一对多的最好方案就是USB Hub。
综合上述三个问题的解决, 于是就有了上述图中的结构:PC主机通过USB线缆连接一个USB Hub, Hub下游的一个端口连接最终所要控制用的USB Hub, 另一个端口连接位于控制电路中的USB外设控制器, 从而实现与PC机的对话。
参考文献
[1]http://html.alldatasheet.com/html-pdf/17818/PHILIPS/ISP1161/246/1/ISP1161.html
[2]http://html.alldatasheet.com/html-pdf/208780/TI/MSP430F2471TPM/31/
[3]http://html.alldatasheet.com/html-pdf/114267/PHILIPS/ISP1521/294/1/ISP1521.html
[4]胡小军, 张爱成著.《USB接口开发技术》, 西按电子科技大学出版社, 2005
[5]廖济林著.《USB2.0应用系统开发实例精讲》, 电子工业出版社, 2006
[6]周立功著.《USB2.0与OTG规范开发指南》, 北京航空航天大学出版社, 2004
基于USB2.0的数据采集卡 篇6
高速和高精度的数据采集系统成为了现在数据采集的主流,也是今后发展的一种趋势。要突破速度和精度的瓶颈,主要是在A/D转换、主控CPU、以及CPU与主计算机的接口上提高工作性能。相对于处理速度和精度受限的传统MCU,当前主流的DSP、FPGA、ARM等控制核心由于其突出的性能已经成为了科技、工程的主导。在与主机接口方面,ISA、PCI和VXI都是基于PC机的插槽的,这不仅受到主机插槽个数的限制而且还会受到PC机箱内高频信号的干扰,从而影响精度和稳定性。而通用串行总线(Universal Serial Bus,简称USB)的出现则很好的解决了以上的冲突,它使高传输速度、易扩展性、方便的即插即用有机的结合在了一起,使得计算机外围设备的连接更具单一化。这些特点使得U S B将成为接口总线主导。在A/D采样方面,要充分考虑到被采样对象的性能特点,以更好地平衡速度与精度的关系,这是考虑问题的关键点[1]。
2 设计概述
在本设计当中,由于首先要满足采集的速度和实时性要求,其次还要尽量考虑系统的可扩展性,所以在系统中选用目前在高速数字技术领域得到广泛应用的现场可编程门阵列FPGA(Field Programmable Gate Array)作为整个系统的控制中心。用USB作为与上位主机的通信接口,并利用外部FIFO存储器来做存储数据与读取数据之间的缓冲区[2]。
前端的A/D采集选用的是AD9042芯片,它是采样频率可控的高速A/D器件,最高的采样频率为41 MHz。FPGA完成对A/D的启停、采样频率等所有的控制,并根据USB控制器的通信信息完成相应的采样频率调整。A/D转换的结果也由FPGA建立通道将数据存入外部FIFO中缓存。后端的处理就交由USB控制器来完成。当FIFO半满标志有效的时候,USB控制器便从FIFO中读入数据直到空标志有效。这样,数据便被存入USB控制器自身的端点FIFO中,而后通过USB事物将数据传送给主机。整个的数据流过程对外部FIFO提出了很高的要求,它不但要有很高的操作频率而且要能够无缝的与USB控制器实现GPIF连接。不仅如此,由于会出现两个控制器同时对FIFO读写的情况,所以外部FIFO要支持全异步读写操作。而我们选用的CY7C4255(8K x18)完全满足上述几点要求,它的操作频率可以达到100MHz。如图1整个采集系统的功能框图
3 A/D采集的控制与存储
3.1 采样部分
AD9042的所有控制都是由FPGA来完成的,采样获得的数据也由FPGA来建立数据通道保存在外部FIFO中。而FPGA对AD9042采样频率的控制的具体参数是通过与USB控制器通信来获得的,而USB控制器的参数则是从主机获得。在这样的控制流下,FPGA与A/D之间的接口电路示意图如下图2.
FPGA的输入时钟为48MHz,通过verilog HDL语言对FPGA的配置,可以使得的FPGA输出各种基于48 MHz的频率来控制采样,这里我们不需要用PLL来倍频,只需要用基频来分频就可以满足要求了。整个采样控制和数据通道时序都用HDL语言将FPGA配置好,这样FPGA就能够可靠的控制采样和将采样数据送入外部FIFO中。由于篇幅有限,控制A/D采样和数据流传送的HDL代码就不详细列出了。
3.2 存储部分
A/D采样得到的数据流需要快速的写入到外部FIFO中,这就要求FPGA实现写FIFO的各种逻辑并结合采集部分的时序逻辑将数据写入FIFO中。这部分的电路示意图如下图3.
FPGA与FIFO之间的控制连接其实只有WEN和WCLK两跟线。WEN控制写使能,而WCLK控制写入的频率,这个频率应该和采样频率一致,这样才能保证采样数据无损失的被缓存入FIFO中。FIFO的满状态也要和FPGA连接在一起,它表明FIFO已经存满数据,不可以再写入。状态信息也要在配置PFGA的时候充分考虑进去,这样才能保证整个系统的可靠工作。
4 USB接口设计
4.1 控制器与外部FIFO的连接
在这一个系统当中,USB接口扮演了重要的角色,它不仅要完成配置数据和控制命令的传输,更重要的它要完成整个采集数据的发送。这个设计选用的USB2.0协议的控制芯片为CYPRESS公司的FX2系列的CY7C68013。它主要包括USB2.0的收发器,串行接口引擎(SIE),增强51内核,8.5KB的RAM存储器,4KB的FIFO存储器以及可编程接口(GPIF)。FX2有一个通用的可编程接口,由于它几乎支持所有通用的总线,这使得FX2可与外部的ASIC、DSP等其他处理芯片很方便的直接连接和通信[3]。在本设计当中正是利用了该接口与外围的FIFO存储器相连,形成一种独特的数据传输方式—GPIF椨隖IFO进行数据的交换。GPIF方式下,增强51内核就不参与数据传输,USB接口和外围电路直接共享片内FIFO。这样就突破了51内核参与高速数据传输的瓶颈。GPIF方式下,外部FIFO与USB之间的传输不是一次只传输1个字节,而是以突发数据流的形式实现,这样很好的解决了USB高速模式下的带宽问题。FX2与外部FIFO的连接要保证了GPIF传送,其中要特别注意的是GPIF下特有的3个控制信号和3个状态信号的连接,他们要对应连接到外部F I F O的控制和状态管脚,如图4所示。
4.2 控制器固件代码
固件代码是在板子上电之后从外部EEPROM加载到控制器片内XRAM中的。这部分代码要通过调试手段事先下载到外部EEPROM中。USB控制器的固件程序其实就是完成USB各种事物及USB设备功能的代码,主要是对标准请求的支持和对用户自定义功能的支持。FX2系列的控制器有一套完整的固件开发环境,可以方便的在环境中开发各种基于USB的应用。本次设计的整体固件程序的流程如图5。
TD_Init初始化函数是程序的重要函数,在该函数中完成了CPU相关和USB相关的初始化工作,如中断配置,USB端点配置,GPIF配置等。TD_Poll是系统的主循环函数,它完成主要的用户级功能,USB设备所需要完成的动作都应该在这个主循环中实现,当然也可以在某些中断函数中实现。除了上述两个主要函数外,固件中还有各种中断接口,可以在需要的地方填加代码完成相应的动作。固件中的所有标准请求都将在端点0中断函数中被处理,而其他大量数据的传送命令在端点2中断函数中实现。固件代码里要完成相关的命令动作,并与FPGA通信以实现具体的行为控制。而采集通道的数据传送则在主循环TD_Poll函数中依靠配置和触发端点6来完成。数据的传送通道是端点2和端点6。端点2为OUT端点,接受来自主机的数据或命令;端点6为IN端点,通过GPIF方式从外部FIFO读入的数据被直接放入该端点的FIFO中等待向主机传送。主机通过标准请求启动采集任务后,将会不断的发送IN命令要求USB设备回传采集得到的数据。而控制器接受命令后开始启动GPIF传输,将外部FIFO的数据不断的发往主机。固件中另一个重要的问题就是GPI F相关代码的填加。由于GPIF功能是用户可选的,所以要想使用它,必须将配置和启动代码内嵌到固件中,完好地与固件其他模块配合。GPIF传输的实现需要对FX2内部的相关寄存器进行配置并将配置代码内嵌到固件的初始化部分。而配置代码的生成可以借助CYPRESS发布的GPIF Designer工具以图形化的方式完成,最终以源代码的形式填加到固件中。整个固件代码整合后可以通过CY-PRESS发布的调试工具把目标文件下载到芯片中进行板级调试。由于代码在XRAM中运行,所以调试不需要烧写任何EPROM或FLASH而显得非常方便。
5 结束语
本设计充分利用了USB接口总线诸如:传输速率高、使用方便、支持热插拔以及工作可靠性高等优势,并有效的结合了目前在数字领域里得到广泛使用且具有开发周期短、开发低复杂度、频率高、灵活性强以及可扩展性好等特点的可编程逻辑器件CPLD/FPGA,使得整个板卡简洁、高速、高效。系统充分发挥了高速A/D的可控采样率以及USB控制器的高速GPIF接口的性能,突破了数据采集各个关口的瓶颈,从而建立了从采样端到PC接口端的高速数据通路。本系统从某种程度上反映了当前单板系统的构架特点和发展趋势--简洁,灵活,快速。而U S B总线与可编程逻辑器件的出现正是迎合了这种需求。这些技术的出现不仅大大提高了数字技术在各领域的应用,而且也极大地促进了数字技术的进一步发展[4]。本次设计的数据采集板已经在实验室中参与常规实验,结合相应的PC端的显示程序可以形成一个1 MHz—20 MHz的示波器,并有很好的实际效果。
摘要:本文利用高速A/D器件、FPGA和USB控制器设计了一个高速数据采集卡。系统利用高速AD器件和FPGA来完成前端的数据转换和存储。数据先被存储在外部FIFO中,之后由USB控制器将缓存中的数据通过GPIF方式快速读入并通过USB接口传递给上位机,最后由上位机完成后端的相关处理。
关键词:数据采集,USB2.0,GPIF
参考文献
[1]吴量.高速数据采集系统的设计[J].电子测量技术.2006,(29:)85-86
[2]王成儒,李英伟.USB2.0原理与工程开发[M].国防工业出版社.2004,7
[3]常丹华,王军波.基于DSP和USB的高速数据采集与处理系统设计[J].电子技术应用,2006,(11:)102-104
USB2.0控制器 篇7
通用串行总线USB (Universal Serial Bus) 接口是近年来开始普遍应用于PC领域的新型接口;同时, USB2.0在USB1.1的基础上又有了质的提高, 其理论速度可以达到480Mbps。
目前市场上供应的USB2.0控制器主要有两种:带USB接口的单片机和纯粹的USB接口芯片。但此类芯片基本上用于商业领域, 无法适用工控领域的恶劣环境;纯粹的USB接口芯片仅处理USB通信, 必须有个外部微控制器/处理器来进行协议处理和数据交换。纯粹的USB接口芯片主要特点是接口方便、可靠性强、适用范围广, 尤其Philips公司提供的ISP1581芯片, 能够在-40℃~+85℃的温度范围内正常工作, 十分适合工控领域数据传输的需要。
1 ISP1581的芯片性能特点
ISP1581是一款性能非常出众的USB2.0控制器, 它实现了USB2.0/1.1物理层以及数据协议层需要完成的任务, 接口速度可达12.5M字节/s或12.5M字/s;同时还做到可以与大部分类型的微控制器/处理器相连, 非常适合做很多外围设备与PC的通讯接口。其一些具体的性能特点如下:①ISP1581含有7个IN端点, 7个OUT端点和2个控制端点。芯片的工作频率为12MHZ, 同时内部集成了一个40×PLL时钟乘法器可产生480MHZ的内部抽样时钟;②通过Philips串行接口引擎 (SIE) 来完成所有USB协议层的功能, 主要完成以下功能:同步方式的识别、并行/串行的转换、位填充/解除填充等。考虑到速度, 它是全硬件的, 不需要软硬件介入;③通过MMU和集成RAM实现了USB总线和微控制器/处理器或DMA控制器之间的速度转换。DMA控制器接收到DMA命令后, 可直接把数据从内部RAM传送到外部DMA设备或从外部DMA设备传送给内部RAM;④在分离总线模式下, 通过DMA模块来实现ISP581芯片与DMA数据源或数据接收端的数据传输, 不需要微控制器/处理器参与, 提高传输速度。
2 ISP1581硬件电路设计
ISP1581与系统的微控制器接口模式有两种:通用处理器模式与分离总线模式。相对于通用处理器模式, 分离总线模式采用DMA方式直接传输数据, 在保证系统性能的前提下降低对微处理器的要求。故此处Atmel89C51 (以下简称89C51) 与ISP1581连接采用分离总线模式, 即多路复用8位地址/数据总线和单独的8位/16位DMA总线。由89C51和ISP1581构成的USB2.0接口电路如图1所示。
在硬件系统中, 89C51与ISP1581的通讯采用中断方式, 当ISP1581接收到主机信号后引发89C51的INT0中断, 使89C51进行下一步工作。RPU引脚通过1.5kΩ电阻器上拉;RREF引脚通过12.0kΩ精密电阻器接数字地;BUS_CONF引脚的功能是选择总线模式, 接地后为分离总线模式;MODE0引脚用来选择读/写功能, 上拉后为8051型;MODE1引脚在分离总线模式下用于ALE/A0的功能选择, 接地后选择ALE功能。ISP1581内部集成了复位电路, 将RESET引脚直接接高电平即可复位。 (DMA传输引脚EOT、DIOR/W、DATAi等信号不由89C51提供, 由DMA数据源或数据接收端提供符合ISP1581 DATASHEET要求的DMA时序信号即可, 不涉及USB协议内容, 相对简单。因为图片排版问题此处没有提供图例, 类似还有系统供电滤波部分。详细可参见参考文献[2] ISP1581 Product Datasheet) 。
3 ISP1581固件程序设计
在USB2.0协议中规定, 所有USB通信都必须由主机发起, 设备只能响应来自主机的命令。在这种结构下, ISP1581的固件编程采取中断驱动的方式。主机对1SP1581的任何操作都会引起ISP1581对相应的中断位置位, 同时引发89C51中断;89C51通过查询ISP1581中断源寄存器判断并处理中断。这样一方面保证了快速的数据传输和较好的软件结构, 另一方面简化了编程和测试。
固件程序主循环流程如图2所示。在系统上电后, 首先初始化89C51和ISP1581。初始化主要完成89C51中断设置与ISP1581预设寄存器设置, 主要包括地址寄存器, 方式寄存器, 中断寄存器, DMA寄存器, 及端点寄存器等。地址寄存器设置USB的分配地址并激活USB设备 (一般设置默认地址0, 在SETUP过程中改设为主机提供的地址) ;方式寄存器控制着重新开始、挂起和唤醒行为、中断行为、软件复位、时钟信号和软件连接操作;中断寄存器控制中断使能以及决定INT输出的动作和极性;DMA寄存器中, DMA配置寄存器和DMA硬件寄存器设置DMA模式及信号触发极性;端点寄存器包括设置端点缓存大小, 端点传输类型, 以及端点使能等 (端点寄存器的设置要与准备提供的端点描述符相一致) 。
初始化完成后, 系统循环等待主机命令引发的中断, 主要中断有SETUP中断 (即USB控制传输中断) 、总线挂起中断、总线唤醒中断、各端点数据IN或OUT中断和两个厂商请求中断 (固件版本查询中断和DMA传输使能中断) 。中断服务程序流程如图3所示。系统进入中断服务程序后, 读取ISP1581中断寄存器内容并拷贝到全局中断, 然后清除ISP1581中断源, 以免再次触发。
当固件接受到第一个SETUP中断后, 进入USB枚举过程。枚举过程与USB协议关系最为密切, 其过程是主机发出一系列USB标准设备请求并要求及时得到设备响应, 使主机能为该设备准备其所请求的资源, 建立好两者之间的信息沟通机制。主要枚举过程如下:
①主机使用默认地址下发GetDeviceDescriptorA (80 06 00 01 00 00 40 00) , 设备上发18位设备描述符, 确定USB规范版本号与厂商ID、产品ID, 不用返回64位数据;②主机发送含有指定地址命令SetAddress (00 05 02 00 00 00 00 00) , 在主机只有一个USB设备的时候, 此地址一般是2, 最大地址可为127, 即USB协议中规定可以连接127个设备。固件设置ISP1581的地址寄存器, 进入新地址状态, 主机以后会在新的指定地址处访问设备;③主机使用新地址下发GetDeviceDescriptorB (80 06 00 01 00 00 12 00) , 设备重新上发18位设备描述符;④主机使用新地址下发GetDeviceDescriptorC (80 06 00 02 00 00 09 00) , 设备上发9位配置描述符, 确定接口数目以及电源获取方式等;⑤主机使用新地址下发GetDeviceDescriptorD (80 06 00 02 00 00 FF 00) , 设备上发全部描述符, 包括配置描述符号、接口描述符号、端点描述符, 确定接口与端点详细信息;⑥读取全部ConfigDescriptor后, 主机将找到新设备, 提示安装驱动程序;⑦在设备能通信前, 主机给出SetConfiguration (00 00 09 01 00 00 00 00) 请求, 设备收到后调整有关信息, 使设备能被客户软件利用枚举过程涉及大量USB协议中规定的内容, 其重点是USB描述符所代表的具体含义, 如最大信息包、接口数目、端点数目、电源配置等。在提示安装驱动程序前, 可使用BusHound对USB传输数据进行监。驱动可先使用philips的驱动, 待系统完成后再根据性能考虑是否需要驱动的更新。枚举过程中数据传输皆通过ISP1581的端点0实现, 使用USB的控制传输类型。
枚举结束, 系统又处于循环等待主机其他命令状态, 一旦得到主机要求, 就开始传输数据。相对于控制传输来说, USB的其他几种传输模式都比较好处理。ISP1581的7个IN端点和7个OUT端点均可通过编程设置为批量传输、中断传输或等时传输模式。在芯片处于分离总线模式下, 89C51与DMA数据源或数据接收端均可以与主机进行数据交换, 一般少量控制命令数据由89C51实现, 大批量数据由DMA数据源或数据接收端通过DMA传输引脚提供或接收, 两者需分别通过ISP1581不同的端点进行传输。
89C51与主机通信, 通过设置ISP1581的端点索引寄存器、数据端口寄存器、缓冲区长度寄存器来实现 (枚举阶段固件程序相相似) 。89C51上传主机数据的程序段主要内容如下:
DMA数据源或数据接收端与主机通信, 不仅要求DMA数据源或数据接收端能够提供ISP1581DMA传输引脚需要时序, 同时还需要89C51处理选择ISP1581端点等工作。需要注意的是选择进行DMA传输的端点不能同时是ISP1581端点索引寄存器选择的端点。
设置上传主机数据的程序段主要内容如下:
设置接收主机数据的程序段主要内容 (略) 。
4 主机程序设计
主机程序设计包括驱动程序设计与应用程序设计。
主机的驱动程序可以使用USB芯片厂商提供的驱动 (Philips公司提供了ISP1581的驱动,
在Philips网站 (www.Philips.com) 上可获得) , 也可以自己编写。编写主机的驱动程序是USB开发中较困难的事情, 通常采用WindowsDDK来实现。目前有许多第三方开发软件, 使用他们开发要简单许多, 有WinDriver Wizard, Driver Studio等 (这部分在参考文献[4] Windows2000设备驱动程序设计指南 中已有很详细说明) 。
应用程序设计相对比较简单, 它调用驱动程序提供的函数即可, 包括初始化USB设备, 发送操作命令, 关闭USB设备等。应用程序也可先用Bus Hound替代, 它可以监控USB口上数据流的一举一动, 是调试主机应用程序和固件的有力工具。上面介绍系统程序的运行结果, 用Bus Hound监控的得到数据如图4所示, 从图中可以看到从USB口读进来的数据有设备描述符数据、管道信息数据以及从数据端点上读进来的数据块。
5 结束语
本文详细介绍了基于ISP1581芯片的USB2.0接口设计。ISP1581是一款性能优化的USB接口芯片, 具有同外部微控制器接口简单、应用灵活、调试方便和性价比较高、适用于工业领域等优点。采用ISP1581可以快速开发出高性能的USB2.0设备。可以预见, 它将在大容量存储器、音频视频等高速大流量的数据传输场合得到广泛应用。
参考文献
[1]PHILIPS, INTEL, MICROSOFT, ect.Universal Serial Bus 2.0Specification[EB/OL].www.usb.org, 2000.
[2]PHILIPS SEMICONDUCTORS.ISP1581Product Datasheet[EB/OL].www.philips.com, 2002.
[3]萧世文.USB2.0硬件设计[M].北京:清华大学出版社, 2003.
USB2.0控制器 篇8
USB2.0接口技术具有安装方便、带宽高、成本低、可靠性高、易于扩展等优点。目前USB2.0支持的最高传输速度可达到480Mbps, 基本能够满足日益复杂的高级外设与PC机之间的高性能连接需求, 正逐渐成为现代数据传输发展的必然趋势之一。鉴于此, 本系统采用USB2.0技术运用ARM芯片进行通信接口的设计。
1 数据传输系统的结构设计
基于USB接口的数据传输系统主要由发射和接收两部分组成。其中, 发射系统由ARM芯片控制射频发射模块和ARM控制USB芯片两部分组成。系统的工作过程为:主机将数据通过USB接口传给ARM, 数据通过ARM的SPI口再传给射频发射模块, 最后由射频发射模块把数据发射出去。射频接收端接收到符合的数据包后, 通知ARM读取数据, ARM将数据通过USB接口送给主机, 这样就完成了一个数据包从发射端到接收端的传输。
1.1 USB接口芯片和主控制器芯片的选择
USB控制器有2类, 一种是集成了USB接口的单片机, 如Cypress公司生产的EZ2USB (基于8051) 系列芯片CY7C68013、CY7C64613等;另一种是单独的USB控制器, 如Philips公司的PDIUSBD12、ISP1581, NetChip公司的NET2888, National公司的USBN9603、USBN9604等。第一种开发工具虽然编程简单, 但需要购置专门的开发系统, 投资较大, 并且单片机性能有限;后一种芯片的特点是价格低廉、连接方便、可靠性高, 但其片上不带CPU, 必须选择微处理器来进行协议处理和数据交换。本系统选择了片上不带CPU的性价比较高的USB 2.0控制芯片ISP1581, 它完全符合USB 2.0规范, 传输率可达480Mbps, 采用ISP1581可以快速开发出高性能的USB2.0设备, 同时为了满足速度要求, 主控器芯片选择了高性能、低功耗的ARM芯片S3C44BOX。
1.2 ARMS3C44BOX的工作原理
S3C44BOX微处理器是由Samsung Electronics Co., Ltd为手持设备设计的低功耗、高度集成的基于ARM7TDMI核的微处理器。S3C44BOX具有丰富的内置部件, 包括:8KBcache、内部SRAM、LCD控制器、带自动握手的2通道UART、4通道DMA、系统管理器 (片选逻辑, FP/EDO/SDRAM控制器) 、代用PWM功能的5通道定制器、I/O端口、RTC, 8通道10位ADC、ⅡC-BUS接口、ⅡS-BUS接口、同步SIO接口和PLL备频器。S3C44BOX采用了一种新的总线结构, 即SAMBAⅡ (Samsung ARM CPU嵌入式微处理器总线结构) 和0.25um工艺的CMOS标准宏7单元和存储编译器。它的低功耗精简和出色的全静态设计特别适用于对成本和功耗敏感的场合应用。
1.2.1 S3C44BOX中断概述
ARM7TDMI具有外部中断 (IRQ) 、快速中断 (FIQ) 和软件中断 (Software Interrupt) 3种中断方式, 其中外部中断和快速中断均是硬件中断。对于ARM7TDMI内核的微处理器来说, 中断是作为一种异常来处理的。S3C44BOX的中断控制器可以接收来自30个中断源的中断请求。这些中断源来自DMA、UART、SIO等芯片内部外围或接口芯片的外部引脚。
中断控制器的任务是在片内外围和外部中断源组成的多重中断发生时, 经过优先级判断选择其中的一个中断, 通过FIQ (快速中断请求) 或IRQ (通用中断请求) 向ARM7TDMI内核发出FIQ或IRQ中断请求。
实际上最初ARM7TDMI内核只有FIQ和IRQ两种中断, 其他的中断都是各芯片厂家在设计芯片时定义的, 这些中断根据中断的优先级高低来进行处理。特别是为了解决中断反应时间过长的问题, S3C44BOX提供了一种新的中断模式——矢量中断模式。它具有CISC结构微控制器的特征, 能够缩短中断反应时间。
1.2.2 S3C44BOX中断处理流程
S3C44BOX处理器的中断处理与其他处理器的处理模式基本上是一致的, 只是由于引入了几种不同的处理器模式, 使中断处理变得更容易。中断处理的典型步骤如下:
(1) 保存现场。当系统出现中断时, 处理器首先要做的就是保存现场, 这一过程包括:保存当前的PC值到lr (链接寄存器) 中, 保存当前程序运行状态CPSR到程序状态保存寄存器SP-SR中。由于ARM7TDMI采用了三级流水线结构, 此时的PC值实际上等于当前指令地址加上8 (ARM指令时) , 则返回时还需要将保存的PC值减4, 得到当前指令的下一条指令。
(2) 模式切换。设置当前程序状态CPSR中相应的位, 使处理器进入相应的执行模式。如当进入FIQ模式时, 禁止FIQ中断。
(3) 获取中断源。如IRQ中断, 都从向量地址0x18处开始执行, 通常在此地址处放一条跳转指令, 跳转到中断程序。
(4) 处理中断。获取中断源后, 通过中断向量表获取相应中断的处理程序入口, 调用对应的中断处理函数。
(5) 恢复现场, 中断返回。返回时需要恢复处理器模式, 包括恢复中断处理用到的所有寄存器、恢复被中断的程序状态到当前程序状态CPSR, 并跳转到被中断的主程序。
2 USB设备驱动程序的开发
当外设连接到主机上的USB接口时, 主机会检测到新硬件, 这时需要安装一个驱动程序, 在该驱动程序中包含了一个动态链接库 (DLL) 。该DLL由4部分组成:Classic Interface Functions、EEPROM Interface、Extended API和FT-Win32 API。Classic Interface Functions中包括FT_Open、FT_Read、FT_Write、FT_Close、FT_SetTimeOuts等函数。
基于Windows2000和XP的USB设备驱动程序采用W in32设备驱动模型WDM (Win32 DriverModel) 。USB数据采集系统设备驱动程序处于固件程序和用户态应用程序之间, 帮助操作系统识别USB设备, 同时建立主机与设备之间的通信。WDM驱动程序具有规范的模型, 我们使用开发工具包D riverStudios中的DriverWorks进行USB总线驱动程序的开发, 利用其向导功能生成驱动程序框架, 然后根据具体情况添加适当代码, 经过编译、调试, 构造驱动程序.sys文件。使用D riverWorks还可以生成驱动程序的安装文件 (INF文件) , 用以将USB设备及接口安装在主机上。这个过程是非常方便、快捷的。
3 结束语
随着数据传输技术的飞速发展, 在数据传输系统中采用USB接口进行数据的高速传输已经得到非常广泛的应用。本系统通过ARM芯片S3C44BOX进行USB接口的控制, 在主机端用VB编写了USB软件, 实现了两台设备之间的快速数据传输, 解决了传统通信技术的不足, 具有很好的应用前景。当然, 在基于USB接口的数据传输系统中, 包括固件程序、WDM设备驱动程序以及用户态应用程序等在内的软件设计是非常关键的, 软件系统的设计需要建立在相关硬件系统设计的基础上, 两者只有完美结合才能设计出高效、安全的数据传输系统。
摘要:利用传统的数据传输系统进行数据传输, 存在速度慢、扩展性差、安装麻烦、易受各种环境的干扰, 在许多场合尤其是便携式应用场合不方便等缺点。而基于USB接口的数据传输系统能够较好地解决这些问题。介绍了一种基于USB2.0接口的数据传输系统, 解决了传统通信技术带给我们的不便。
关键词:USB接口,数据传输,ARMS3C44BOX,芯片
参考文献
[1]萧世文.USB2.0硬件设计[M].北京:清华大学出版社, 2002.
[2]周立功.PDIUSBD12USB固件编程与驱动开发[M].北京:北京航空航天大学出版社, 2003.
USB2.0控制器 篇9
通用串行总线USB (Universal Serial Bus) 是近年来被广泛应用于现代电子系统的一种串行总线标准。其协议主要有USB1.0和USB2.0两个版本。在实际应用中, 由于USB2.0接口具有高速数据传输等优点, 从而逐渐取代了USB1.0接口的应用。目前的USB2.0接口器件主要有两类:一类是带微控制器的接口器件;另一类是不带微控制器的接口器件, 而需要一个外部的微控制器。本设计使用的接口器件ISP1581属于后者, 所设计的系统以C8051F310单片机为外部微控制器, 控制ISP1581完成USB通信[1]。
1 接口硬件电路设计
由C8051F310和ISP1581构成的USB2.0接口电路原理图如图1所示。BUS_CONF下拉, 即C8051F310和ISP1581的连接采用断开总线模式, 这时AD[7:0]为本地微处理器多路复用地址/数据总线, DATA[15:0]只作DMA总线使用。MODE0上拉, 读和写选通信号为8051类型。MODE1上拉, A0用来指示传送的地址或数据。C8051F310的P2口与ISP1581的AD[7:0]相连。ISP1581的复位、片选和与数据控制总线相关的引脚分别与C8051F310的P1.0~P1.4引脚相连, (见图1所示) 。ISP1581采用USB总线提供的5V电源直接供电。本设计中, 没有使用ISP1581的DMA功能[2]。
2 接口固件程序设计
ISP1581的串行接口引擎 (SIE) 能够自动实现USB2.0协议第八章中的USB协议层的功能, 无需固件程序的参与。接口固件程序主要参与完成的是USB传输中的芯片初始化、设备枚举、以及数据传输等任务的实现。固件程序在对芯片进行初始化后, 通过循环扫描, 实时检测并处理USB事件和总线上的数据通信。
2.1 芯片初始化
接口固件程序的初始化模块主要包括微控制器C8051F310的初始化和ISP1581的初始化。C8051F310的初始化主要完成微控制器系统时钟的配置, 以及其I/O端口的配置等。ISP1581的初始化主要完成ISP1581的地址寄存器、方式寄存器、中断配置寄存器、中断使能寄存器等寄存器的初始值配置, 以及ISP1581的端点所使用的传输类型、传输包大小和中断类型及方式等设置。根据C8051F310对ISP1581寄存器的读/写时序, 需要编写相应的子程序, 来完成ISP1581寄存器的读/写。在完成初始化之后, 通过设置ISP1581方式寄存器的SOFTCT位, 实现软件连接, 将系统接入到USB总线上。当主机检测到系统连接后会进行总线复位, ISP1581将发送高速HS模式检测信号来判断主控制器支持的是USB2.0还是USB1.1规范, 若接收到一个高速 (HS) 握手信号, 则表明有一个HS主机与总线相连, 此时ISP1581将转换到高速 (HS) 状态, 否则仍工作在全速 (FS) 状态。复位后的ISP1581需要重新初始化。
2.2 设备枚举
当USB设备连接到USB总线或者从USB总线拔出设备时, 主机都会使用一个叫设备枚举的过程来识别和管理必要的设备状态变化[1]。设备枚举过程中的数据通过端点0 (默认端点) 进行传输。设备枚举时, 主机将给USB设备分配一个地址, 并获取设备描述符、配置描述符、接口描述符、端点描述符等。USB2.0协议的第九章规定了11种标准请求。为了能够完成设备枚举, 固件程序应当正确的响应这11种标准请求。一次设备枚举过程, 并不一定响应所有的11种标准请求。设备枚举的程序流程图 (见图2所示) 。
2.3 数据传输
USB定义了4种传输类型:控制传输、同步传输、中断传输和批量传输[3]。只有端点0支持控制传输, ISP1581的其它7个IN端点和OUT端点均可通过配置ISP1581的数据流寄存器设置为同步传输、中断传输或批量传输类型。端点的传输类型的设置在ISP1581初始化程序中完成。本设计采用中断查询的方式检测总线上的数据传输, 易于实现。除控制传输外的其他类型数据传输的数据接收程序流程图 (见图3) , 数据发送程序流程图 (见图4) 。
3 结束语
本论述详细介绍了基于ISP1581的USB2.0接口的硬件电路与固件程序的设计方法。设计的接口具有性能可靠、设计简单, 以及性价比高等优点。USB2.0凭借其高速数据传输、即插即用, 以及低成本等许多优点, 将会得到越来越广泛的应用。
参考文献
[1]周立功, 等.USB2.0与OTG规范及开发指南[M].北京:航空航天大学出版社, 2004.
[2]ISP1581:USB2.0高速接口器件, 广州周立功单片机发展有限公司[Z].