【从零开始のIC学习笔记】USB2.0协议-物理层

6 篇文章 0 订阅
5 篇文章 3 订阅

USB协议分类

USB1.1 : 支持12Mbps(全速传输)和1.5Mbps(低速传输)

USB2.0: 兼容1.1,并增加了480Mbps(高速传输)

USB3.0:兼容2.0,并增加了5Gbps(超速传输)


USB2.0总线结构

USB2网络采用阶梯式星形结构,一个USB网络中只能有一个主机,USB中所有的数据传输都由主机发起。主机内设置了一根集线器(HUB),提供了主机上的初始附属点。每个设备都被分配了一个唯一标识的地址,地址范围0~127(因为USB数据包的地址数据仅有8位)

Note:集线器(HUB)也算在一个地址。


检测设备连接和速度

USB2.0仅有4根线,D+与D-的差分双绞线、VCC和GND。

引脚编号信号名称缆线颜色
1VCC
2Data-(D-)
3Data+(D+)绿
4GND

D+与D-共有四种状态:

Data J State : D+ = 1, D- = 0;

Data K State: D+ = 0, D- =1;

SE0: D+ = D- = 0;

SE1: D+ = D- = 1;

USB主机的D+与D-端都下拉了15K电阻;

对于低速设备,在D-端口上拉1.5K电阻至VCC,空闲状态【D+,D-】显示为01(J状态);

对于全速设备,在D+端口上拉1.5K电阻至VCC,空闲状态【D+,D-】显示为10(K状态);


NRZI-I(No Return Zero-Inverse)非归零反相编码

USB所需要传输的数据经过非归反相零编码,该编码方式只有正负电平之分,没有零电平;

使用非归零编码不但可以保证数据传输的完整性,而且不要求传输过程有独立的时钟

遇0翻转,遇1保持

例如:0001对应的非归零反相编码为0100

           11011对应的非归零反相编码为11000

每传递6个1,需要强制插入一个0

例如:1111110  (需要发送7bit)

对应的非归零反相编码为 111111 0 1  (实际发送的8bit)


数据采样(鉴相)

USB全速传输的速度为12Mbps,而Phy的时钟可能与该速度部匹配,例如,Phy的时钟为48M,也就意味着每4个时钟,USB的数据才传输一拍,需要确定哪一拍的时钟(时钟序列)进行采样,保证采样的正确性。

在每个数据发送时,会有一个SYNC(同步码,00000001),在该过程中,进行鉴相,确定采样的序列号


毛刺滤除

数据传输过程中存在着毛刺,如果不将其过滤会严重影响数据的正确性,滤除毛刺的方式一般有两种:1.模拟电路的方式(原理类似按键消抖) 2.模拟电路的方式(使用寄存器打拍处理) 本文主要介绍数字电路的处理方式

毛刺有向上的毛刺与向下的毛刺

对于高电平而言,需要滤除向下的毛刺,向上的毛刺不会影响数据的判断;

对于低电平而言,需要滤除向上的毛刺,向下的毛刺不会影响数据的判断;

以下图为例,介绍数字电路的处理方式,标记的位置为出现毛刺的位置

 滤除高电平中向上的毛刺:

使用寄存器打一拍(向右移动一个周期时钟),并与原信号进行或运算,具体图示如下:

 查看波形,可以看出,高电平的毛刺被滤除,需要注意的是,这种方式会使得高电平延长一个周期

滤除低电平中向下的毛刺

打使用寄存器打一拍(向右移动一个时钟周期,并于原信号进行与运算,具体图示如下:

 查看波形,可以看出,低电平的毛刺被滤除,需要注意的是,这种方式会使得低电平缩短一个周期

因此,需要将二者级联(不需要考虑先后顺序),能够获得完整的滤波电路,伪代码示意如下:

reg a,b,b1,c;
//高电平毛刺滤除
a <= signal;
b = a || signal;
//低电平毛刺滤除
b1 <= b;
c = b1 && b;

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值