·上一文章:STM32中采用DMA实现方波的产生和捕获
·下一文章:基于GPS定位及3G通信客运车辆监控系统设计
6b/5b解码和4b/3b解码模块根据编码表,选择输入10 b数据对应输出5 b或3 b。当高4位为“1001”,“0110”,“1010”,“0101”时,数据字符和控制字符其对应的输出是不同的;并且高4位为“0001”,“1110”时也是特殊情况。输入10 b数据中有1 024个数据,有440个有效数据字符,24个控制字符,还有560个错码。当输入为错码时,无效码检测模块会检测出错,输出1个errdetect。不平衡度检测模块主要是根据前面模块输出的disp和当前的disp(current-disp),判断解码是否发生错误。当disp_4 b=0时,disp_6 b!=0,则current_disp应该等于disp_6 b,如果不等则发生错误。即要保持不平衡度在“+2,0,-2”三个值中变化,超出则发生编码错误。
4 仿真分析
本文完成了8 b/10 b编解码器的RTL设计,并在Modelsim上进行功能仿真。编码、解码的仿真波形图4,图5所示。
图6是编解码联调的仿真波形,可以看出输入的数据经过编码器编码成10 b的数据,然后在经过解码器所还原的数据跟之前输入的数据一样,说明编解码功能正确,并且最高的工作频率能够达到500 MHz,满足USB 3.0的数据传输速度。
5 结语
本文采用的分块编解码方法,使用了少量的逻辑完成了8 b/10 b编解码器设计。该编解码器在USB 3.0数据传输中能够得到很好的运用,满足了USB 3.0高速数据传输的要求。