基于MCU与USB设备控制器IP核的设计方案

最新更新时间:2014-06-14来源: 互联网关键字:MCU  USB  设备控制器 手机看文章 扫描二维码
随时随地手机看文章

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 个设备描述符,当设备成功返回数据后,主机第二次发送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可以检测出为人体输入学设备,说明该芯片完全符合制定的设计要求。

关键字:MCU  USB  设备控制器 编辑:探路者 引用地址:基于MCU与USB设备控制器IP核的设计方案

上一篇:输入功率和RMS电流测量解决方案
下一篇:一款简易示波器的设计方案

推荐阅读最新更新时间:2023-10-12 22:41

基于51单片机和ADC0809的数字电压表设计
本课题是利用单片机设计一个数字电压表,能够测量0-5V之间的直流电压值,四位数码显示,使用的元器件数目较少。外界电压模拟量输入到A/D转换部分的输入端,通过A/D转换变为数字信号,输送给单片机。然后由单片机给数码管数字信号,控制其发光,从而显示数字。 注:因为ADC0809的通道选择端口是使用插针,做出电路板后再用导线连起来的,在程序里也少了通道选择的语句,请注意一下。 一.原理图 二.仿真图 三.存储空间定义 (1)70H用于存放A/D转换结果,71H、72H、73H、74H分别存储显示用的三位数据如表所示。 (2)地址30H~39H存放显示在数码管上0~9的数。如表所示。 四.程序 程序可分为数据采
[单片机]
基于51<font color='red'>单片机</font>和ADC0809的数字电压表设计
瑞发科USB 3.0主控NS1081系列获USB-IF官方认证
USB 3.0主控市场“芯”秀: NS1081--采用专利技术、创新架构,既能做超高速USB 3.0 U盘(Flash Drive)又能做高端USB3.0读卡器(Card Reader)。 中国 北京 --- 2014年5月15日 — 专注于高速模拟电路技术及创新I/O架构的无晶圆芯片设计公司 — 天津瑞发科半导体技术有限公司宣布其新一代USB 3.0主控NS1081系列芯片(NS1081、NS1081S和NS1081C)都已取得 USB-IF (USB Implementers Forum)SuperSpeed USB产品认证。USB-IF SuperSpeed USB认证计划是针对产品特性与兼容性提供标准的测试规范,获
[嵌入式]
如何从ST官网下载官方USB
第一步,打开ST官网,可以看到网页语言可以在右上角选择。如下图: 第二步,用鼠标指向上部“产品”一栏,在下拉菜单中点击“微控制器”。如下图: 第三步,在转到的新页面左侧点击“产品列表”。如下图: 第四步,在转到的新页面左侧点击“STM32 ARM Cortex32位微控制器”。如下图: 第五步,在转到的新页面左侧点击“产品列表”。如下图: 第六步,在转到的新页面左侧点击“STM32主流MCU”。如下图: 第七步,在转到的新页面左侧点击“STM32F1系列”。如下图: 第八步,在转到的新页面左侧点击“产品列表”。如下图: 第九步,在产品列表下拉列表中选择“STM32F103”。如下图
[单片机]
如何从ST官网下载官方<font color='red'>USB</font>库
51单片机—使用PWM对直流电机调速
- 什么是PWM PWM(脉宽调制),是靠改变脉冲宽度来控制输出电压,通过改变周期来控制其输出频率。 (脉冲可以理解为是IO口的一次高低电平改变) - PWM是怎么对直流电机进行调速的 使用PWM对电极调速时,是靠改变占空比(改变脉冲宽度)来控制输出电压的,电压较小电机转速就会下降;再通过改变周期(脉冲的周期)来控制其输出频率,脉冲频率对电机的转速有着决定性作用,脉冲频率越高连续性就越好。 我们一般时通过改变占空比来改变电机转速的。 (占空比:占空比是指一个脉冲循环内,通电(高电平)时间相对于总时间所占的比例。) - 通过定时器中断实现PWM调速 因为51单片机不附带PWM硬件电路,所以我们一般通过软件模拟PW
[单片机]
USB获得高效的双轨电源
设计5V以外电源的小功率USB电路时,您必须确定是使用独立电池,还是使用来自主机的小型电源。如果电路需要大于5V的双轨电源(如采用了基于运放的仪表放大器),或必须用于便携计算机如笔记本电脑上,则问题就更复杂了。   USB2.0标准规定了对连接设备的功率要求,即耗电最大100mA,视为小功率;耗电最大500mA,则视为大功率。本文所述电路原用于一个热致发光(TL)仪器设计,设计中的微控制器、USB接口控制器,以及10个运放均作为小 功率器件 ,从一个USB端口获得全部电源。   设备的运行需要有高性能、低噪声拾取,使系统射频辐射尽可能低。在搭建电路以前,做过仿真与验证,然后用于TL系统。本设计的吸引力在于,由于它采用的是常见
[嵌入式]
基于MCU+FPGA模式的RFID读写器设计
      射频识别技术RFID是一种非接触的自动识别技术,其基本原理是利用射频信号和空间耦合(电感和电磁耦合)传输特性,实现对被识别物体的自动识别,射频识别系统一般由两部分组成,射频标签(Tag)和射频读写器(Reader)。在RFID应用中,电子标签附着在被识别物体上,当带有射频标签的被识别物品进入读写器的可识读范围内,读写器自动以无接触方式将射频标签中约定的信息读取出来,从而实现自动识别物品和收集物品标志信息的功能。   RFID技术在生产、零售、物流和交通等行业有着广阔的应用前景 。为解决后勤物资在请领、运输、分发等环节中的可视化动态监控问题,在军事物流领域广泛使用RFID技术,其基本用法是在仓库、码头、车站、重要交通
[网络通信]
时间片轮转调度在微控制器C8051F020中的实现及应用
  在微机控制领域中,多数系统是实时控制系统。实时的含义是对随机发生的外部事件做出及时的响应并对其进行处理。为了更好地完成实时数据的采集、处理、存储和相应的多种实时控制操作,必须同时考虑到实时性和多任务并行性这2个因素。既要保证系统以足够快的速度对外部事件进行响应并处理,又能在宏观上并行执行多个任务。实时多任务系统依靠适当的任务调度方法来决定在系统中哪个任务可以获得CPU和其他系统资源,哪个任务暂时退出运行状态,从而达到实时处理多任务的目的。时间片轮转算法是实现多任务调度的常用算法。在这种算法中,如果将某个时间片分配给某个任务,那么在此时间片内,这个任务获得CPU并运行,然后在下个时间片到来时又将CPU分配给另一个任务。这样,
[单片机]
无线数据传输后端RFW—D100的原理与应用
引 言   短程RF通信是一种比较热门的通信技术。支持该通信技术的标准很多,如lEEE802.11a、Hiperlan2、IEEE802.15.1(蓝牙)、HomeRF和IEEE802.1]b(Wi—Fi)等,但总的来说,支持这些标准的器件不适合低端产品,功耗大、结构复杂、价格高。以色列RF Waves公司面向低端市场,推出的RFWl02芯片组和RFW302芯片组,符合FCC(美国联邦通信委员会)和ETSI(欧洲电信标准协会)的技术规范,用于短程RF通信,取得了很好的效果。RF Waves公司还为这两种芯片组提供了RFW—D1OO数字后端。笔者在以W78LE516单片机、RFWl02芯片组和RFW—D1OO数字后端为核心开发
[应用]
小广播
最新电源管理文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved