USB chirp信号测试

以下的内容转载自USB chirp信号测试,在这篇文章中详细的解释了USB高速设备的握手过程,以及通过分析D+和D-上面的波形来进行说明。很赞的一篇文章。


1 信号及原理分析

1.1 KJ信号说明

USBchirp信号分为K信号和J信号。根据USB速率将chirp信号做如下区别:

USB速率

Chirp

DP

DM

空闲状态

Low Speed

K

1

0

K

J

0

1

Full Speed

K

0

1

J

J

1

0

High Speed

K

0

1

SE0

J

1

0

SE0

0

0

1.2 USB全速高速识别过程分析

根据规范,全速(FullSpeed)和低速(LowSpeed)很好区分。因为在设备端有一个1.5k的上拉电阻,当设备插入hub或上电(固定线缆的USB设备)时,有上拉电阻的那根数据线就会被拉高,hub根据D+/D-上的电平判断所挂载的是全速设备还是低速设备。

USB全速/低速识别相当简单,但USB2.0,USB1.x就一对数据线,不能像全速/低速那样仅依靠数据线上拉电阻位置就能识别USB第三种速度——高速。因此对于高速设备的识别就显得稍微复杂些。

表1中图3展示了一个高速设备连接到USB2.0的hub上的协商(negotiation)情形。

高速设备初始是以一个全速设备的身份出现的,即和全速设备一样,D+线上有一个1.5k的上拉电阻。USB2.0的hub把它当作一个全速设备,之后,hub和设备通过一系列握手信号确认双方的身份。在这里对速度的检测是双向的,比如高速的hub需要检测所挂上来的设备是高速、全速还是低速,高速的设备需要检测所连上的hub是USB2.0的还是1.x的,如果是前者,就进行一系列动作切到高速模式工作,如果是后者,就以全速模式工作。

hub检测到有设备插入/上电时,向主机通报,主机发送Set_Port_Feature请求让hub复位新插入的设备。设备复位操作是hub通过驱动数据线到复位状态SE0(Single-ended0,即D+和D-全为低电平),并持续至少10ms。

高速设备看到复位信号后,通过内部的电流源向D-线持续灌大小为17.78mA电流。因为此时高速设备的1.5k上拉电阻还未撤销,在hub端,全速/低速驱动器形成一个阻抗为45欧姆(Ohm)的终端电阻,2电阻并联后仍是45欧姆左右的阻抗,所以在hub端看到一个约800mV的电压(45欧姆*17.78mA),这就是ChirpK信号。ChirpK信号的持续时间是1ms~7ms。

在hub端,虽然下达了复位信号,并一直驱动着SE0,但USB2.0的高速接收器一直在检测ChirpK信号,如果没有ChirpK信号看到,就继续复位操作,直到复位结束,之后就在全速模式下操作。如果只是一个全速的hub,不支持高速操作,那么该hub不理会设备发送的ChirpK信号,之后设备也不会切换到高速模式。

设备发送的ChirpK信号结束后100us内,hub必须开始回复一连串的KJKJKJ....序列,向设备表明这是一个USB2.0的hub。这里的KJ序列是连续的,中间不能间断,而且每个K或J的持续时间在40us~60us之间。KJ序列停止后的100~500us内结束复位操作。hub发送ChirpKJ序列的方式和设备一样,通过电流源向差分数据线交替灌17.78mA的电流实现。

再回到设备端来。设备检测到6个hub发出的Chirp 信号后(3对KJ序列),它必须在500us内切换到高速模式。切换动作有:

1.断开1.5k的上拉电阻;

2.连接D+/D-上的高速终端电阻(high-speedtermination),实际上就是全速/低速差分驱动器;

3.进入默认的高速状态。

执行1,2两步后,USB信号线上看到的现象就发生变化了:hub发送出来的ChirpKJ序列幅值降到了原先的一半,400mV。这是因为设备端挂载新的终端电阻后,配上原先hub端的终端电阻,并联后的阻抗是22.5欧姆。400mV就是由17.78mA*22.5Ohm得来。以后高速操作的信号幅值就是400mV而不像全速/低速那样的3V。

至此,高速设备与USB2.0hub握手完毕,进行后续的480Mbps高速信号通信。

1.3信号测试及判断注意事项

1.     高速检测握手协商是在主机发出复位(reset)信号期间,由设备发起的,由主机响应的过程;

2.     主机使用SE0状态reset设备之后需要使用高速握手协商(chirp handshake)才可以再次正常通信;

3.     主机使用全速的idle状态suspend设备之后需要通过resume过程使设备进入工作状态,这个过程不需要高速握手协商;

4.     全速/低速模式时主机resume设备的是通过保持K状态20ms;高速下这20ms的K状态以转换成SE0状态后结束,然后主机和设备在两次低速位(2 low speed bit times)内必须保持在高速终端模式;

5.     DEVICE_REMOTE_WAKEUP  feature,该特性用来在设备被挂起(suspend)后,主机可以使用resume信号来唤醒设备。该特性是主机使用SET_FEATURE和CLEAR_FEATURE请求对进行设置和清除的。

 


2 测试表格及结果分析

 (1)基于高速传输的电路


(2)高速同步模式

理论波形特征:

实测结果:

同步模式为实测波形的后半部分红圈所示,为正常波形。

(3)高速速率协商

理论波形特征:




实测结果



如实测波形图,上图为整体波形,下图为上图红圈的放大部分,可见,

1.      模块被退出idle(2.9V左右电平)模式1.5ms之后;

2.      首先D-上发出持续2ms左右的chirp K信号(800mV电平);

3.      主机回复chirp JK序列(800mV电平)

4.      设备收到之后断开1.5K上拉电阻,波形赋值降低一半(400mV电平);

上述第2步是设备通知主机自己是高速设备,第3步是主机响应设备的通知,第4步电平赋值减半表示协商成功,执行同步动作。

800mV400mV电平正常,空闲状态高电平2.9V左右(与理论不符)

(4)主机复位设备--RESET

理论波形特征:


从图序3可以看出,复位信号是正常的。

电平幅值较低

(5)主机挂起设备--SUSPEND

理论波形特征:

实测结果:


正常,高电平值2.8V左右

(6)主机唤醒设备--RESUME



  • 11
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: Chirp信号是一种频率随时间变化的信号,广泛应用于雷达、通信和声学等领域。在Matlab中检测Chirp信号可以采用多种方法。 一种常见的方法是通过傅里叶变换实现频域分析。首先,使用Matlab中的chirp函数产生一段Chirp信号,并设置信号的起始频率、终止频率、信号长度和采样率等参数。然后,使用fft函数对信号进行傅里叶变换,得到信号的频谱。在频谱中,Chirp信号的特征是频率随时间线性变化,可以通过观察频谱斜率的变化来检测Chirp信号。 另一种方法是通过时域分析实现。可以使用Matlab中的匹配滤波器对输入信号进行处理,得到与Chirp信号匹配的滤波器响应。通过观察滤波器响应的波形,可以判断输入信号中是否包含Chirp信号。此外,还可以使用相关性函数对输入信号进行自相关、互相关等计算,进一步检测和分析Chirp信号。 除此之外,还有基于小波分析、短时傅里叶变换等方法进行Chirp信号检测。根据具体应用场景和数据特点,选择合适的方法进行分析和处理,可以有效地实现Chirp信号的检测和提取。 ### 回答2: 在信号处理领域中,chirp信号(又称扫频信号)是一种频率逐渐变化的信号。它的变化速度不固定,可以是线性的,也可以是非线性的。在实际应用中,chirp信号常用于雷达探测、医学成像、声波传输等领域。 在Matlab中,可以通过调用信号处理工具箱中的函数来实现chirp信号的生成和检测。具体步骤如下: 1. 生成chirp信号。可以使用chirp()函数来生成一个具有线性或非线性频率变化的chirp信号。该函数的语法如下: y = chirp(t, f0, t1, f1, 'linear') 其中,t是时间向量,f0和f1是起始和终止频率,t1是信号的持续时间。'linear'参数表示使用线性的频率变化方式。 2. 添加噪声。为了模拟实际应用中的情形,在生成的chirp信号中加入一些噪声是必要的。可以使用awgn()函数来添加高斯白噪声。该函数的语法如下: y_noise = awgn(y, SNR) 其中,y是原始信号,SNR是信噪比。该函数将在信号中添加一定程度的高斯白噪声。 3. 进行信号检测。通过检测chirp信号的回波来实现信号的检测。可以使用matchfilter()函数来实现匹配滤波。该函数的语法如下: [mf, lag] = xcorr(y_noise, y_chirp) 其中,y_noise是生成的带噪声的chirp信号,y_chirp是原始chirp信号。matchfilter()函数将使用y_chirp进行匹配滤波,得到匹配滤波响应mf。lag是y_chirp在y_noise中出现的滞后时间。 4. 检测信号。根据匹配滤波响应mf,可以确定信号是否存在。可以通过设置一个阈值,当匹配滤波响应超过该阈值时,判定为检测到了信号。可以使用findpeaks()函数来寻找匹配滤波响应中的峰值。该函数的语法如下: [pks, locs] = findpeaks(mf, 'MinPeakHeight', threshold) 其中,threshold是设定的峰值阈值。pks和locs分别是匹配滤波响应中的峰值和其位置。 总之,chirp信号的检测是信号处理领域中的重要任务之一,它在很多实际应用中都有着广泛的应用。通过Matlab中的信号处理工具箱,我们可以方便地生成和检测chirp信号,从而实现很多实际应用中的任务。 ### 回答3: chirp信号,即扫频信号,是一种在一段时间内以固定频率变化的信号,它在信号处理领域中有着广泛的应用。在matlab中实现chirp信号检测可以通过以下步骤进行: 首先,定义一个chirp信号。可以使用matlab中的chirp()函数,该函数允许您指定生成chirp信号所需的参数,例如起始频率、终止频率、信号长度、采样率等。 其次,针对定义生成的chirp信号,可以进行信号的加噪处理模拟实际场景中可能出现的环境噪声,以更贴近实际应用。 接下来,通过计算信号的功率谱密度(PSD)来检测chirp信号。matlab中提供了多种方法来计算信号的PSD,例如通过pwelch()函数可以进行较快的PSD计算。 最后,可以通过图像表示结果来进行视觉化分析。 除此之外,还可以通过matlab中其他的信号处理函数来进一步分析chirp信号,例如傅里叶变换(FFT)、相关分析等。这些方法可以帮助我们更深入地理解chirp信号,并在实际应用场景中发挥更大的作用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值