1 导言
在传统的计算机体系上常选用串口(如RS232)和并口衔接外围设备,但串口和并口都存在着通讯速度 慢,接口独占不利于扩展等无法战胜的缺陷,而通用串行总线(Universal Serial Bus,即USB)因具有传输 速度快、支撑热插拔、扩展便利、抗干扰强、成本低、数据传输质量高、节约体系资源等长处而得到了广 泛的使用,当时它已成为计算机最常用的接口之一。
现在USB操控器首要有两种:带USB接口的单片机(MCU) 和朴实的USB接口芯片。朴实的USB接口芯片仅处 理USB通讯,必须有个外部微处理器来进行协议处理和数据交换。典型产品有Philips公司的PDIUSBD11(I2C 接口)、PDIUSBD12(并行接口);NS公司的USBN9603/9*(并行接口)。带USB接口的单片机从使用上又能够 分红两类,一类是从底层规划专用于USB操控的单片机;另一类是增加了USB接口的一般单片机,如Cypress 公司的EZ-USB(依据8051),挑选这类USB操控器的最大优点在于开发者对体系结构和指令集十分了解,开 发东西简略,但价格比较高,不利于产品升级和改型。
但是,国内产品中所用到的USB 芯片都依靠进口,首要由国外的IC 规划芯片厂商如Cypress,NEC 等 一些世界出名公司供给。鉴于USB 芯片有很好的市场前景和赢利空间,虽然国内企业或研究机构现在还只 是处于USB 芯片使用开发的技术水平,人们仍是期望自主开发出有自主知识产权的USB 芯片。因而,近 年来国内也有许多单位在探究独立规划USB 芯片。
本论文针对USB1.1 协议标准,本着自主开发USB 操控芯片,把MCU 和USB 设备操控器用软核的方式集成在一块芯片上,微操控器咱们是用14 位指令字长度,且是单字节指令和单周期指令,其中心指令只需 39 条,简单把握和规划,而且彻底满意整体规划的要求。
2 MCU&USB 设备操控器作业原理及整体规划
整个规划的整体结构如图1 所示,差分信号线D+和D-衔接主机,接纳时主机发送的串行数据经过收 发器和USB 设备操控器解码和校验等处理后存储到相应的RAM 中;发送时由裁定模块操控从RAM 或 ROM 中提取相应数据经过USB 设备操控器组合和收发器串行发送给主机。MCU 首要帮忙USB 操控器完 成设备和主机之间的数据传输。
2.1 MCU 的规划
MCU首要完结各种中止处理,而且帮忙操控器使主机检测和辨认设备;设备刚插上PC时,MCU经过读取 ROM中的指令来初始化专用功用寄存器,使能大局中止GIE和USB中止USBint,使操控器能及时呼应各种USB 中止;大局中止答应位GIE置位时,答应一切中止;清零时,制止一切中止。当一个中止被呼应时,GIE 位被清零以制止其它中止,并装载中止服务程序,将中止回来地址压入仓库。引起装载中止服务程序的中 断标志位在从头答应GIE之前经过软件清零,以防止重复呼应中止。在中止服务程序中,经过检测中止标 志位能够判别中止源,各中止标志位的置位不受GIE的影响;在设备与主机通讯进程中,MCU处理setup包、 in包、out包、ack、nak、stall包等的中止处理,咱们规则了USB中止、定时器中止、外部中止、GPIO中止 的中止进口地址别离为04H、08H、0CH、10H;MCU一起还对各功用寄存器进行相应的操作,比方写端点0的 输入输出包答应的最大值,数据的触发位DSQ(即Data Toggle机制)等。
2.2 arbRAM、arbROM(裁定模块)的规划
在规划中含有两种存储器:程序存储器(ROM)和数据存储器(SRAM),这两种存储器都有自己的总线, 在一个时钟周期内,能够一起对两种存储器进行拜访。USB 和MCU 都能够拜访SRAM 和ROM,裁定模块便是 为两者一起拜访时不起抵触而设置的;USB 拜访ROM 的地址空间100h-fffh(咱们把设备的描绘符寄存在这 里),且USB 拜访仅取14 位宽的低8 位数据。当USB 与MCU 一起拜访ROM 时,MCU 优先。USB 与MCU 同享通 用寄存器(SRAM),当USB 的恳求拜访存储器信号到来时, USB 拜访存储器的地址信号的高三位不等于零 时归于USB 拜访程序存储器的地址空间。当USB 与MCU 一起拜访通用寄存器(SRAM)时,MCU 具有优先权。
2.3 USB 设备操控器的规划
USB 设备操控器是规划的要点部分,是本论文介绍的要点,整体的模块区分如图2 所示;
2.3.1 收发器的规划
USB 收发器作为USB 接口的模仿前端首要把主机发送过来的模仿信号转化成数字信号VP、VM 传到数字锁相环或把协议引擎发送过来的VP0、VM0 数字信号转化成模仿信号,并完结串并和并串的转化;收发器的模型如图3所示,Dplus为正相USB差分数据线,Dminu为负相USB差分数据线,两者都是双向的。 OEn为USB发送使能,为低时作为发送功用,单相输出口被置为高阻,为高时作为接纳功用,单相输进口被 置为高阻。
2.3.2 Dpll(数字锁相环)模块
数字锁相环完结时钟康复、分频及同步时钟;该模块用外部的6M时钟CLK进行分频,发生1.5M的USB系 统时钟,以及把收发器发生的差分信号和并行信号进行锁相,防止发生亚稳态。
2.3.3 SIE(串行接口引擎)模块
SIE是USB操控器的首要模块;完结协议层的功用、信息包的解析和组合、同步信号辨认、位填充和位 剥离、NRZI(非归零回转)的编码和解码、同步字段和包结束码的检测和生成、CRC5、CRC16校验等功用;图 4是设备接纳主机发送数据时的状况机。
从图4能够看出设备在没有数据传输时处于闲暇态,低速设备闲暇时D+、D-处于J态,当有K态到来时 进入状况转化;以KJKJKK为同步位,同步字段里的最终的2位是同步字段结束的记号,而且标志了包标识 符(PID,Packet Identifier)的开端。然后依据不同的PID别离进入地址态或数据态, 紧跟在地址态后边的 是端点态,因为地址和端点别离是有7位和4位构成共11位,所以只需5位CRC校验就能够了,CRC校验完后就要结束此次的包传输,USB协议中以2个 SE0态和一个J态来表明包的结束。在数据态判别是否为SE0态, SE0态表明8个字节的数据都发送结束,因为非SE0态即J、K态都表明作业态,所以在数据态中假如总线上 没有SE0到来就一向接纳数据。
2.3.4 ENDPCTL(端点操控)模块
规划顶用到两个端点,端点0和端点1.端点0是半双工传输,首要是在设备的枚举进程顶用于操控传输, 端点1是在枚举完结后的中止传输顶用设备和主机之间的数据传输。因为中止传输首要是经过端点1输入, 但也有少量输出(如键盘的LED灯输出),咱们为了节约资源,所以由端点0完结少量的输出。
2.3.5 BUFCTL(缓冲器操控)模块
缓冲器操控模块是USB和SRAM及ROM的衔接桥梁,在主机要求输入数据的IN token状况时,操控器 从SRAM或ROM中取出数据送给主机或主机输出数据的OUT token状况时,操控器把接纳到的数据寄存在 SRAM中,它首要依据串行接口引擎SIE的接纳或发送预备信号来操控读写信号,确保数据能正确传输。 USB与MCU同享通用寄存器区,usbREQUST为来自USB的恳求拜访存储器信号,usbADDR为USB拜访存 储器的地址信号,usbADDR[11:8]不等于零时归于USB拜访程序存储器的地址空间。当USB与MCU一起访 问数据存储器(SRAM)时,MCU具有优先权。
3 体系验证环境
在完结了Verilog 代码规划后,咱们进行了仿真、归纳验证,前仿用Modelsim、归纳用Synplify Pro、 归纳后仿真用Cadence 中的NC_Verilog,首要因为NC_Verilog 在后仿中的速度要优于Modelsim,提高了效 率;图5 是用NC_Verilog 仿真设备的枚举进程;
任何USB 的数据传输都是建立在成功经过枚举的基础上的,只需正确完结了枚举,USB 主机和设备之 间的通讯才正在建立起来。所以枚举是USB 通讯的最要害的一步。在验证进程中模仿了PC 主机向设备发送 各种指令来完结枚举。在图5 中pid[3:0]中D、3、9、2、1、B 别离表明Setup、DATA0、IN、Ack、Out、 DATA1.当设备插上PC 时主时机继续的SE0 来复位设备,这时设备的地址默以为00,然后主机第一次发送 Setup 包来获取设备的前8 个设备描绘符,当设备成功回来数据后,主机第2次发送Setup 包来给设备配 置地址,从图中faddr[7:0]能够看出咱们给设备装备的地址为02,在这今后主机都是经过这个地址向设备 获取悉数的18 个设备描绘符和悉数的装备描绘符集,在取完这些描绘符后主机对设备进行装备,主机就识 别出设备了。
4 结语
本文描绘了自主研制的MCU+USB设备操控器的规划思路。用Verilog语言对其进行了RTL级描绘。用 Modelsim进行前仿验证,并在Cadence公司的NC_Verilog上经过了归纳后仿验证。为了进一步验证规划的正 确性,本项目挑选了XILINX公司的Virtex xc2s2006pq208芯片及XC18V02的存储器,并把上述IP核归纳到此 FPGA上加以验证。归纳结果表明,协议层模块占用了1672个Slice(71%),652个Slice Registers(13%),2870个4 input LUTs(61%),51个bonded IOBs(36%)。使用上华工艺,该芯片现已流片回来了,并经过demo 板衔接到PC上,PC能够检测出为人体输入学设备,阐明该芯片彻底符合拟定的规划要求。