2011年9月15日 现代电子技术 Sep.2011 第34卷第18期 Modern Electronics Technique VoI_34 NO.18 USB 3.0中8 b/1 0 b编解码器的设计 徐进,马 琪 (杭州电子科技大学微电子CAD研究所,浙江杭州 310037) 摘 要:为了在USB 3.0中实现数据的8 b/10 b编解码,采用了查找表法和组合逻辑相结合的方法,把8 b/lO b编解码 分解成5 b/6 b编解码和3 b/4 b编解码,用Verilog HDL语言实现了算法的描述,并通过了Modelsim仿真,然后在FPGA 上实现了具体的硬件电路。采用500 MHz的时钟信号,经过测验满足了USB 3.0的传输速率5 Gb/s。该创新方法使用了 少量逻辑,实现了8 b/10 b编解码器,并且满足USB 3.0高速数据传输的要求。 关键词:USB 3.0;8 b/10 b编解码;RTL设计;仿真验证 中图分类号:TN492—34 文献标识码:A 文章编号:1004—373X(2Ol1)18—0009—03 Design of 8 b/lO b CODEC in USB3.0 Xu Jin,MA Qi (Microelectronics CAD Institute,Hangzhou Dianzi University,Hangzhou 310037,China) Abstract:In order tO achieve the 8 b/lO b data coding and decoding in the USB3.0 system,a method of combining the lookup table method and the combinational logic is adopted to decompose the 8 b/lo b CODEC into 5 b/6 b and 3 b/4 b CO— DEC.The algorithm description is realized by Verilog HDL 1anguage.Modelsim simulation was performed.A specific hard— ware circuit was achieved in FPGA.The testing result indicates that it can meet the transmjission rate of 5 Gb/s confined by USB3.0 due tO the application of 500MHz clock signa1.This innovative method uses a small amount of logic tO achieve the 8 b/10 b CODEC and meet the high—speed data transmission requirements of USB3.0. Keywords:USB3.0;8 b/lO b C0DEC;design of RTL;simulation and verification 0 引 言 K…表示,其中z表示与8 b的低5位(EDcBA)对应的 十进制数值;y表示与8 b的高3位(HGF)对应的十进 8 b/lO b是目前许多高速串行总线采用的编码机 制数值。发送端在编码时,根据编码表将低5位变成 制,如USB 3.o,1394b,Serial ATA,PCI Express,Infi- 6位,高3位变成4位。编码完成后,将10 b的并行字 ni—band,Fiber Channel,Rapid10等总线或网络。8 b/ 符转换成串行发送出去。接收端在解码时先进行串并 10 b编码方式最初由IBM公司于1983年发明并应用 转换得到10 b字符,再将该字符分解成6 b和4 b,根 于ESC0N(200M互连系统),发表A1 Widmer和Peter 据相应编码表看是否有效,最后完成解码。编解码转换 FranaszekIBM刊物的“研究与开发”。8 b/10 b编解码 流程如图1所示。 之所以能得到广泛的运用,主要有以下优点:采用嵌人 Transmit Rcccivc 式时钟,可保持DC平衡;能够更加有效地检测错误;隔 t TX(7 0>Control<Z> RX(7 0>.Control<Z> 离数据码元和控制码元。 MSB t I LSB 1 USB 3.0中的8 b/lO b编解码原理 叵区压Ⅱ互正圈曰 曰 T 8 b.Control 仃Ol H,G,F,E,D,C,B,A,Z H,G,F,E,D,C,B,A,Z 在USB 3.0分层结构中,发送端先对数据或者控 制字(K)加扰,然后把加扰后的8 b数据编码成10 b发 送出去;接收端先把接收到的10 b数据进行解码得到 8 b数据,然后再解扰得到原始数据。 8 b/10 b编码包含对256个数据字符和12个控制 字符的编码_1]。数据字符和控制字符分别用 . 和 十 图1 8 b/lO b编解码转换图 收稿日期:2011-04—11 1O 现代电子技术 201 1年第34卷 不平衡度disp(disparity)表示编码后1个码字中“1” 数目与“0”的数目差。“1”用+1表示,“O”用一1表示,码 字中的所有“+1”与“一1”之和就是disp。8 b/10 b编码 的disp取3种状态:“+2”(6个1与4个0),“0”(5个0 与5个1),“一2”(6个0与4个1)。而运行不一致RD (Running Disparity)是一个二进制参数,只有正、负2种 状态,用于编码模式控制。在8 b/10 b编码表中,lO b字 符分为2种码表(RD一和RD+)。编码过程中,通过对 RD值正负的判断来选择对应码表,如果当前RD为负 (RD一),编码器会在RD一编码表中选择对应值输出,并 且检测对应输出的lO b值的disp,如果disp一0,则RD不 变保持RD一,否则RD值变为RD十;如果当前RD为正 (I +),则在RD+编码表中选择对应值输出,并且检测 输出值对应的disp,如果disp=0,则RD不变保持RD+, 否则RD变为负RD-。总之,在disp为正或者负时,RD 发生交替变换,这种方法是为了使0和1分布更均匀,减 小差分信号的直流分量。 2 8 b/lO b编码器的设计 8 b/lO b编码器是把8 b数据输入拆成低5位和 高3位分别进行5 b/6 b和3 b/4 b编码,根据编码表 执行编码。因为其中有些特殊的3 b/4 b编码 ],所以 需要一个特殊3 b/4 b编码模块。编码后数据通过RD 控制模块选择输出,并且把此时的RD状态反馈给下一 轮编码。对于8 b控制输入,由于K控制编码只有 l2种有效,所以需要一个对无效K码的识别模块。因 此,编码器分为5个模块:5 b/6 b编码、3 b/4 b编码、 特殊3 b/4 b编码、无效K码检测、RD—controller,前 4个部分在RD—controller的控制下进行并行编码,如 图2所示。图中,kin为8 b控制输入,data—in为8 b数 据输入。由于USB 3.O传输速度为5 Gb/s,编码器elk 为500 MHz。 s 编码 竺竺 4 b) — L————————J RD COntTOI1er _ ̄ sp _4b _RkDNP:- 图2 编码器结构框图 5 b/6 b编码模块、3 b/4 b编码模块对输入的8 b 数据输入分为低5位和高3位进行并行编码,输出6 b 和4 b数据构成lO b编码,而输出disp一6b,disp一4b足 6 b和4 b数据的不平衡度。 由于在8 b/10 b转换表中,8 b数据输入商3位为 “111”、低五位分别为“01011”,“01 101”,“0l110”, “10001”,“10010”,“10100”时,输出的4 b是特殊情况, 特殊3 b/4 b编码模块就是完成对这几种特殊情况输 出,输出sp一4b—RDN和sp一4b—RDP是特殊编码的不 平衡度。 当8 b输入是控制K码时,控制码只有12种[ 足 有效的,无效K码检测模块就是检测输入的控制码是 否有效,如果无效输出invalid—k一1,如果有效则输出 invalid—k一0。 RD控制模块 除了将编码后数据选择输出,主要 是根据disp一6b,disp一4b,sp一4b—RDN和sp一4b—RDt 来跟新当前RD值,并反馈到下一轮编码的RD输入, 保持差分信号传输的直流平衡。 3 8 b/10 b解码器的设计 8 b/10 b解码器接收到的数据是lO b,根据8 b 10 b解码原理,把lO b数据分开为低6 b和高4 b,然后 分别对低6位和高4位进行解码,划分为2个模块6 b/ 5 b解码、4 b/3 b解码。这些10位的数据分为特殊 K字符和有效数据字符,特殊K字符是控制字符。解 码器结构0一。 如图3所示,分为4个模块:6 b/5 b解码, 4 b/3 b解码,无效码检测、不平衡度检测[_6]。 图3 解码器结构框图 6 b/5 b解码和4 b/3 b解码模块根据编码表,选择 输入10 b数据对应输出5 b或3 b。当高4位为 “1001”,“0llO”,“1010”,“0101”时,数据字符和控制字 符其对应的输出是不同的;并且高4位为“000l”, “1110”时也是特殊情况。输入10 b数据中有l 024个 数据l_7],有440个有效数据字符,24个控制字符,还有 560个错码。当输入为错码时,无效码检测模块会检测 出错,输出1个errdetect。不平衡度检测模块主要是根 据前面模块输出的disp和当前的disp(current—disp), 判断解码是否发生错误。当disp一4 b一0时,disp— 第18期 徐进等:USB 3.0中8 b/10 b编解码器的设计 11 6 b!一0,则current—disp应该等于disp一6 b,如果不等 则发生错误。即要保持不平衡度在“+2,0,一2”三个值 中变化,超出则发生编码错误。 4仿真分析 5 结 语 本文采用的分块编解码方法,使用了少量的逻辑完 成了8 b/10 b编解码器设计。该编解码器在USB 3.0 数据传输中能够得到很好的运用,满足了USB 3.0高 速数据传输的要求。 参考文献 本文完成了8 b/10 b编解码器的RTL设计,并在 Modelsim上进行功能仿真嘲。编码、解码的仿真波形 图4,图5所示。 [1]Hewlett—Packard Company,Intel,NEC,et a1.Universal serial bus 3.0 specification r R].USA:Hewlett—Packard Company,2008. 图4编码器的仿真波形 [2][美]BUDRUK R,ANDERSON D,SHANLEY T.PCI Ex— press系统体系结构标准教材EM].田玉敏,译.北京:电子工 业出版社,2005. [3]ADERSON Don.USB系统体系[M].2版.北京:中国电力 出版社,2007. r4]CRUICKSHANK H,SUN Z,FAN Z.Universal serial bus implementation in an integrated access chip for ISDN[J]. 图5 解码器的仿具波形 IEE Proc.Communication,2001,148:207—21t. 图6是编解码联调_g]的仿真波形,可以看出输入的 数据经过编码器编码成10 b的数据,然后在经过解码 Es]王福昌,熊兆飞,黄本雄.通信原理[M].北京:清华大学出 版社,2006. 器所还原的数据跟之前输入的数据一样,说明编解码功 能正确,并且最高的工作频率_l。。能够达到500 MHz,满 足USB 3.0的数据传输速度。 [6]林锦棠.8 b/10 b编解码器在PCI Express总线中的实现 [J].微计算机信息,2008,24(3):140—142. [7]李宥谋.8 b/10 b编码器的设计及实现[J].电视技术,2005 (3):79—80. [8]夏宇闻.Verilog数字系统设计[M].2版.北京:北京航空航 天大学出版社,2008. [9]林丰成,竺红兰,李立.数字集成电路设计与技术[M].北 京:科学出版社,2008. [10]SHOCKLEY w-11iam.How we built the transistor[M]. 图6编解码联调的仿真波形 rS.1.]:New Scientist,1972. 作者简介:徐进 男,1985年出生,硕士研究生。研究方向为集成电路设计与EDA技术。 严君、f‘、 英人、路义玲编菩定价:58元 本书系统地介绍r学好无线电技术所必需的基础理论和基本技能。内容包括无线电、电了产品 的设计步骤,元器件选择的原则及方法,整机组装 调试,常见故障 榆修等。这些技能和方法都 是经过提炼和浓缩的,特别适合零起点的无线电爱好者,读者按照书中介绍的步骤及方法,就能一 步一步达到目的,逐步成为行家里于。 书中涉及的无线电技术内容令面、深入浅Ⅲ、图文并茂、实用性强,儿中的方法和技巧都足从 实际1:作绛验中总结出来的,对读者具有一定的指导和帮助作用。 奉书适合业余无线l乜爱好者、_乜子技术初学者 读,也可作为从事通信、IU气维修等技术人员 的参考用书。 以上图书由化学_T-业出版社电气分社出版。更多的专业图书信息,请登录WWW.ciP.tom.cn。 如要出版新著,请与编辑联系。 地址:北京市东城区青年湖南街1 3号(10001I) 邮购电话:O10—64 51968 3/5 编辑:010—64 519262,sh—CiP一2004 ̄163.tom