一、概述。
光端机的结构很简单,由发送端和接收端组成。如下图所示,单向传输。
光端机也可以是双向传输,只要使用2对光模块,或者光模块支持波分复用就可以了。
常用的光端机有:以太网光端机,视频光端机(包括VGA、DVI、HDMI、SDI、DP接口),音频光端机,电话光端机,串口/CAN光端机,还有专用的鼠标、键盘光端机等。
其中较为棘手的是USB光端机(以下只讨论USB2.0光端机),因为所有的USB信号在DP、DM一对差分线上收发,也就是半双工模式,而且最高速率达到480Mbps,还有那些复杂的协议。
主要难点在于USB协议有部分数据包对时间有严格要求。
USB总线的所有通信都由主机发起,从机不能发起。
主机会周期性地发送SOF包给从机。
SOF包由主机发送给设备。
1) 对于全速总线,每隔1.00 ms ±0.0005 ms发送一次;
2) 对于高速总线,每隔125 μs ±0.0625 μs发送一次;
SOF包,如果USB设备连续3次没接收到SOF包,则会挂起,然后复位总线。
当主机发起SOF包,从机需要回应EOP包。
由基本的包组成四种传输方式,分别是控制传输、块传输、中断传输、同步传输。
其中,控制传输和块传输对时间没要求。
而同步传输和中断传输的传输时间间隔,则由USB设备决定,最小为1ms。
此外,USB总线上还有一个最长响应时间限制。
当主机连续发送三次需要应答的包,而从机在一段时间内都没有应答,主机就会认为从机挂起。
而这个最长响应时间由主机决定,可以设定在1s~10s。
二、方案论证。
1、CH317方案。
江苏沁恒的CH317,CH317内部封装了USB PHY和以太网PHY。它内部把USB的差分信号打包成以太网的数据包,并通过RGMII接口直接透传到对端。能支持高速、全速、低速设备以及Hub,由于CH317芯片固有的bug,所以传输距离约为260米,而且要单独一条光纤专门传USB信号,增加了成本。
2、AX6800x方案。
AX6800x是一块内部封装了USB PHY的SOC芯片。它内部用代码解析USB协议,再转成串行口输出,只支持键盘、鼠标,也支持Hub下挂载键盘、鼠标。传输距离可达500米以上。由于AX6800x芯片内部代码的问题,所以不支持除键盘、鼠标、全速Hub以外的USB设备。
3、ARM解析协议方案。
ARM9内部集成了USB PHY。利用ARM解析USB协议,并传到对端。能支持U盘、部分串口、部分鼠标。
传输距离达500米以上。但是ARM芯片本身的缺陷(端点数量有限),使得它不能支持更多USB设备。
把ARM9设置为主机模式时,能支持三种速度,而从机模式只支持高速和全速,包括其它ARM芯片,如:Cortex A5、Cortex A8、Cortex A31系列的芯片,从机模式均只支持高速和全速。只有NXP的MCP85xx系列芯片在主、从机模式下均支持三种速度。
4、USB3300或USB3500方案。
USB3300是一块单纯的USB PHY芯片,它能把USB的差模信号转成并行8位的共模信号,并以ULPI接口的形式引出。能支持高速、全速、低速设备以及Hub。
USB3300能配置成USB主机或者USB设备模式。
而USB3500用的是UTMI接口,接的线比USB3300多一些。
下文均以USB3300或USB3500方案展开论述。
三、UTMI接口和ULPI接口对比。
UTMI+接口,分四个等级(0~3级)。
USB3500是UTMI+接口,特点操作时序简单,但是信号线多达31根。
USB3500是UTMI+ Level3芯片,UTMI+接口,QFN56封装,3.3V供电,并行8位数据接口,不需要配置寄存器,直接拉高或拉低引脚以配置芯片的工作模式。
USB3300是ULPI接口,特点信号线只有12根,但是操作时序稍微复杂。
USB3300是UTMI+ Level3芯片,ULPI接口,QFN32封装,3.3V供电,并行8位数据接口,需要配置寄存器才能工作。
由上图可知,若要对USB3300进行操作,则必要先发命令,再发数据,以配置内部寄存器,它才能正常工作。
四、USB3300检测USB设备速度的流程描述。
由于USB主机的DP、DM引脚带有下拉15K欧电阻,而USB设备的DP、DM引脚带有上拉1.5K欧电阻。
所以,当USB设备跟USB主机对接时,能利用上、下拉电阻来设置总线上的电平。
对于低速设备,在DM引脚上拉1.5K。
对于全速设备,在DP引脚上拉1.5K。
对于高速设备,则需要握手协议。
a、USB主机检测到全速设备,即:DP引脚上拉1.5K。
b、USB主机复位总线,即向总线发送SE0,此SE0持续时间不得小于2.5us。
c、高速设备检测到SE0持续时间不小于2.5us后,向总线发送Chirp K信号,此Chirp信号持续时间不小于1ms且不大于7ms。
d、总线回复到SE0状态。如果USB主机支持高速模式,则必须在Chipr K信号结束后100us内做出响应。
e、USB主机在Chipr K信号结束后100us内做出响应,向总线发送连续的Chirp K/J对,每个Chirp K信号或Chirp J信号的宽度不小于40us且不大于60us,每2个相邻的Chirp K和Chirp J信号之间的间隔不应大于2.5us。
f、高速设备在检测到连续的最少3对Chirp K/J对后,在500us内必须断开DP上的上拉电阻,并连接D+和D-上的对地高速端接电阻,完成高速握手,进入高速传输模式。
高速模式的握手协议,反应在USB3300的时序,如下图所示。
五、USB Hub的工作原理。
只要USB Hub工作在高速模式,则接到USB主机的上行(Upstream)速率则固定为高速,全速模式也一样。
在高速模式下传输全速或低速数据包,需要使用SPLIT包,即分离传输,传输过程较复杂。
在全速模式下传输低速数据包,需要使用PRE包。
SPLIT包和PRE包则由传输翻译器(Transaction Translator)翻译成相应的速率,然后传到下行(Downstream)端口,供USB设备使用。
六、USB-HUB控制器USB2422。
USB2422是个USB-HUB控制器,它可以控制DP、DM引脚交换,可以增强USB信号,在高速模式下,可以支持6米以上的距离。
可以说USB2422是个短距离的延长器。
在下游可以把USB3300接到USB2422,最终只要透传USB2422的信号即可。
七、最终方案。
最后把方案调整为如下图所示。
在远端,增加USB2422作为Hub接下游设备,远端和近端都使用STM32来配置USB2422以及处理事务。
这样,可以实现USB透传,解决ARM方案的端点不足问题,也能把处理后的数据包封装在视频上,以减少光纤数量,降低成本。
八、主机延长器。
把USB光端机和视频光端机合并在一起就是主机延长器,这样,可以把主机集中放在机房中,而用户只放一台光端机、鼠标、键盘、显示器。
主机延长器可以应用在网吧、办公室、出租屋中。不用担心主机被偷、数据被偷。主机更新换代时,能二手倒卖更高价格。