摘 要: UTMI定義了USB2.0底層信號(hào)的物理約束,,為實(shí)現(xiàn)USB2.0高速(480 Mb/s)通信提供了可靠的保障,。實(shí)現(xiàn)了協(xié)議中串/并轉(zhuǎn)換、位填充/剔除,、非歸零編解碼等內(nèi)容,并在SMIC 0.13 ?滋m CMOS工藝庫(kù)下完成了收發(fā)器電路設(shè)計(jì),。仿真結(jié)果顯示,該收發(fā)器設(shè)計(jì)功能正確,,滿足協(xié)議要求,。
關(guān)鍵詞: USB2.0; 收發(fā)器; UTMI
通用串行總線USB(Universal Serial Bus)以其簡(jiǎn)單易用、連接靈活,、高帶寬等特點(diǎn)已經(jīng)成為計(jì)算機(jī)連接外部設(shè)備最常用的一種方式[1],。如今,越來(lái)越多專用集成電路(ASIC)和嵌入式系統(tǒng)都內(nèi)置了USB接口,。很多公司采用其他公司生產(chǎn)的收發(fā)器(USB2.0 transceiver)IP核,,再配合其他自行設(shè)計(jì)的電路模塊來(lái)進(jìn)行相關(guān)產(chǎn)品的開(kāi)發(fā)。本文在SMIC 0.13 ?滋m CMOS工藝下采用Verilog HDL描述電路,,通過(guò)仿真,、綜合、布局布線等流程完成收發(fā)器電路設(shè)計(jì),。
1 UTMI整體結(jié)構(gòu)
USB收發(fā)器在USB總線中的位置處于各種USB設(shè)備與USB總線的接口處,。它的作用是處理USB物理層的協(xié)議和信號(hào),其中接收部分接收USB總線上的串行數(shù)據(jù),,經(jīng)過(guò)NRZI(Not Return to Zero Inverse)編碼,、“0”比特剔除,最后轉(zhuǎn)成并行數(shù)據(jù)后交給串行接口引擎SIE(Serial Interface Engine),;發(fā)送部分完成相反的操作,,接收SIE的并行數(shù)據(jù),經(jīng)過(guò)并/串轉(zhuǎn)換,、“0”比特添加、NRZI編碼后發(fā)送給USB總線[2]。
圖1所示為USB2.0收發(fā)器的功能框圖,,主要完成的功能為:
(1) 支持480 Mb/s高速,、12 Mb/s全速兩種不同的數(shù)據(jù)傳輸速率。
(2) 同步字包頭SYNC(Synchronization)/包尾EOP(end of Packe)產(chǎn)生和檢測(cè),、比特填充/去填充,、比特填充錯(cuò)誤檢測(cè)、非歸零編碼等,。
(3) 能夠在高速和全速終端/信號(hào)之間切換,支持USB2.0測(cè)試模式,。
(4) 支持USB協(xié)議中喚醒、掛起檢測(cè),、恢復(fù)邏輯等檢測(cè),。
從中可以看出,收發(fā)器是一塊具有一定復(fù)雜度的數(shù)/?;旌想娐?。設(shè)計(jì)時(shí)將數(shù)字電路和模擬電路分開(kāi),分成以下三部分:
(1) 數(shù)字邏輯部分,。該部分完成串/并,、并/串轉(zhuǎn)換,比特填充/去填充以及相應(yīng)的發(fā)送與接收狀態(tài)機(jī)等協(xié)議的邏輯功能,,這也是本文所要闡述的電路設(shè)計(jì)內(nèi)容,。
(2) 時(shí)鐘產(chǎn)生與數(shù)據(jù)恢復(fù)電路。其功能是產(chǎn)生本地高速時(shí)鐘,并從USB總線的串行數(shù)據(jù)流中恢復(fù)出時(shí)鐘和數(shù)據(jù),,以便于后級(jí)電路進(jìn)行相應(yīng)的操作,。
(3) 發(fā)送與接收接口部分電路。USB總線有比較嚴(yán)格的電氣特性要求,,比如USB高速信號(hào)是±400 mV的差分信號(hào),,對(duì)地電阻為45 ?贅,還有電纜斷連檢測(cè),、squelch檢測(cè)等,,這些電氣特性要求均由模擬接口電路實(shí)現(xiàn)[3]。
2 模塊設(shè)計(jì)
2.1發(fā)送電路模塊
根據(jù)UTMI規(guī)范的功能要求,,USB收發(fā)器的發(fā)送部分應(yīng)該包括并/串轉(zhuǎn)換,、比特“0”填充、非歸零編碼以及發(fā)送控制狀態(tài)機(jī)四部分,。四部分的關(guān)系如圖1中發(fā)送部分(Tx)所示,。
比特“0”填充規(guī)則為:對(duì)發(fā)送的串行數(shù)據(jù)進(jìn)行“111111”序列檢測(cè),每檢測(cè)到6個(gè)連續(xù)的“1”序列后,,在該序列后插入一個(gè)比特“0”,。NRZI編碼規(guī)則為:邏輯“1”用電平的不變來(lái)表示,,邏輯“0”用電平的翻轉(zhuǎn)來(lái)表示。比特“0” 插入與NRZI編碼配合使用,,可以有效防止傳輸?shù)臄?shù)據(jù)中出現(xiàn)連續(xù)的沒(méi)有電平變化的序列,,避免導(dǎo)致接收部分PLL(Phase Locking Loop)時(shí)鐘失鎖的情況出現(xiàn)。
串行數(shù)據(jù)中插入填充比特,,會(huì)使發(fā)送的數(shù)據(jù)多于要發(fā)送的數(shù)據(jù),。為了平衡比特插入前后的數(shù)據(jù)個(gè)數(shù)偏差,設(shè)計(jì)時(shí)在串行數(shù)據(jù)中每插入8個(gè)“0”后,,使發(fā)送狀態(tài)機(jī)輸出TXready為低電平,,讓SIE等待一個(gè)時(shí)鐘周期,即8 bit串行數(shù)據(jù)的時(shí)間(因?yàn)镾IE的時(shí)鐘為60 MHz,,串行數(shù)據(jù)速率為480 MHz,。8 bit串行數(shù)據(jù)的傳輸時(shí)間正好等于一個(gè)并行數(shù)據(jù)的傳輸時(shí)間)。在本文的電路設(shè)計(jì)中,,比特“0”插入操作使用了兩個(gè)計(jì)數(shù)器,,其中一個(gè)對(duì)串行數(shù)據(jù)中連續(xù)“l(fā)”進(jìn)行計(jì)數(shù),用來(lái)檢測(cè)“111111”序列,;另一個(gè)對(duì)已經(jīng)插入到串行數(shù)據(jù)的“0”進(jìn)行計(jì)數(shù),,這兩個(gè)計(jì)數(shù)器都采用移位計(jì)數(shù)器來(lái)實(shí)現(xiàn)。發(fā)送電路比特填充和數(shù)據(jù)平衡的實(shí)現(xiàn)如圖2所示[4],。
發(fā)送部分的狀態(tài)轉(zhuǎn)移圖如圖3所示,。復(fù)位進(jìn)入Reset態(tài),復(fù)位結(jié)束后進(jìn)入TX Wait態(tài)等待TXValid信號(hào)的到來(lái),,當(dāng)收發(fā)器接收到SIE發(fā)送數(shù)據(jù)的指令時(shí)(即TXValid信號(hào)為高電平),,進(jìn)入Send SYNC態(tài),發(fā)送電路開(kāi)始發(fā)送傳輸數(shù)據(jù)包的包頭,即同步字SYNC,。全速數(shù)據(jù)包的SYNC字為8 bit的“KJKJKJKK”序列,,高速數(shù)據(jù)包的SYNC字為32 bit的“KJKJKJK…JKJKJKK”序列,序列中的“K”對(duì)應(yīng)于USB差分信號(hào)“DP邏輯低電平,,DM邏輯高電平”的總線狀態(tài),,序列中的“J”對(duì)應(yīng)于 “DP邏輯高電平,DM邏輯低電平”的總線狀態(tài),。同步字發(fā)送完成之后,,進(jìn)入Data Load態(tài)且置TXready為高電平,收發(fā)器開(kāi)始從SIE讀取8 bit的并行數(shù)據(jù)到Hold Reg中,,當(dāng)Hold Reg中的數(shù)據(jù)沒(méi)有被shift reg讀取時(shí),,狀態(tài)機(jī)將會(huì)跳轉(zhuǎn)到Data Wait態(tài);當(dāng)shift reg中的數(shù)據(jù)做完并/串轉(zhuǎn)換,, Hold Reg中的數(shù)據(jù)會(huì)被shift reg讀取,,此時(shí)狀態(tài)跳轉(zhuǎn)到Data Load態(tài),。當(dāng)收發(fā)器檢測(cè)到SIE停止發(fā)送數(shù)據(jù)的指令(TXValid信號(hào)為低電平),狀態(tài)機(jī)進(jìn)入Send EOP態(tài),,開(kāi)始發(fā)送EOP數(shù)據(jù)且置TXready為低電平,, 全速數(shù)據(jù)包的EOP為總線上2 bit的“SE0” (“SE0”對(duì)應(yīng)于USB差分信號(hào)“DP和DM均為邏輯低電平”的總線狀態(tài))狀態(tài)以及其后1 bit的“J”狀態(tài),高速數(shù)據(jù)包的EOP為8 bit的“01111111”數(shù)據(jù)序列,,這個(gè)數(shù)據(jù)序列沒(méi)有像正常發(fā)送過(guò)程的數(shù)據(jù)一樣進(jìn)行比特“0”插入操作,以便區(qū)別于一般的數(shù)據(jù),。當(dāng)EOP發(fā)送完,,狀態(tài)機(jī)進(jìn)入TX Wait態(tài),否則停留在Send EOP態(tài)繼續(xù)發(fā)送EOP數(shù)據(jù),。
2.2 接收電路模塊
收發(fā)器的接收電路與發(fā)送電路相反,,將數(shù)據(jù)從總線上的差分信號(hào)中提取出來(lái),交給USB SIE進(jìn)行后續(xù)的協(xié)議處理,。這部分電路包括NRZI解碼,、比特“0”去除、串/并轉(zhuǎn)換以及一個(gè)接收狀態(tài)機(jī),。這部分的相互關(guān)系如圖1中接收部分(Rx)所示,。接收部分的狀態(tài)轉(zhuǎn)移圖如圖4所示。
復(fù)位進(jìn)入Reset態(tài),,復(fù)位結(jié)束后進(jìn)入RX Wait態(tài),,開(kāi)始同步字SYNC檢測(cè),若未檢測(cè)到同步字,則在原狀態(tài)循環(huán);當(dāng)檢測(cè)到同步字后進(jìn)入Strip SYNC態(tài),同時(shí)使 RXactive 有效,,由于高速SYNC有32 bit,,所以在Strip SYNC態(tài)會(huì)維持?jǐn)?shù)個(gè)時(shí)鐘周期。當(dāng)SYNC檢測(cè)完畢并抓到第一個(gè)字節(jié)后,,跳轉(zhuǎn)到RX Data態(tài),。由于去比特填充造成數(shù)據(jù)速率的下降,使得狀態(tài)在RX Data和RX Data Wait之間跳轉(zhuǎn),,每次去掉8個(gè)填充位后,,狀態(tài)機(jī)跳到RX Data Wait態(tài),同時(shí)拉低RXvalid信號(hào),。
當(dāng)檢測(cè)到錯(cuò)誤時(shí),,進(jìn)入Error態(tài),如果此時(shí)數(shù)據(jù)線DP和DM上已經(jīng)沒(méi)有數(shù)據(jù)傳輸了,,則進(jìn)入Abort1態(tài),,再直接跳轉(zhuǎn)到RX Wait態(tài);如果此時(shí)數(shù)據(jù)總線DP和DM上還有數(shù)據(jù)在傳輸,,則跳轉(zhuǎn)到Abort2態(tài),,直到數(shù)據(jù)總線上的數(shù)據(jù)傳輸完才跳到Terminate態(tài),,再直接跳轉(zhuǎn)到RX Wait態(tài)。
去比特“0”填充的過(guò)程就是將發(fā)送過(guò)程中插入到數(shù)據(jù)包的“0”比特從數(shù)據(jù)包中去除,,也就是將數(shù)據(jù)包中“1111110”序列中的“0”去除,,以恢復(fù)出正確的數(shù)據(jù)。這里同樣需要進(jìn)行數(shù)據(jù)平衡,,通過(guò)RXValid信號(hào)來(lái)實(shí)現(xiàn),。接收電路去比特的實(shí)現(xiàn)如圖5所示。
3 仿真及驗(yàn)證
發(fā)送數(shù)據(jù)時(shí),,UTMI置drive_enable為低電平,,以使驅(qū)動(dòng)器處于發(fā)送狀態(tài)。當(dāng)TXValid為高電平時(shí),,表明并行數(shù)據(jù)線上有數(shù)據(jù)等待發(fā)送,。UTMI首先發(fā)送同步字SYNC,然后讀取并行數(shù)據(jù)線上的數(shù)據(jù)到Hold Reg中,,完成串/并轉(zhuǎn)換后依次進(jìn)行位填充和NRZI編碼,,再把數(shù)據(jù)發(fā)送到數(shù)據(jù)總線上(即DP和DM)。完成1 B的發(fā)送后,,UTMI應(yīng)該置TXReady為高電平,,表明 UTMI可以繼續(xù)發(fā)送下一個(gè)字節(jié)。數(shù)據(jù)發(fā)送完成后,,UTMI應(yīng)該繼續(xù)發(fā)送EOP信號(hào), 表明1個(gè)數(shù)據(jù)包發(fā)送完畢,。高速模式下的部分發(fā)送波形如圖6所示。
接收數(shù)據(jù)時(shí),,UTMI首先匹配SYNC字段,。匹配完成后,系統(tǒng)進(jìn)入接收數(shù)據(jù)狀態(tài),,此時(shí)RXActive為高,。UTMI對(duì)接收到的串行數(shù)據(jù)進(jìn)行NRZI解碼,剔除填充位(此時(shí)drop_bit為高),,送到轉(zhuǎn)移寄存器和保持寄存器,,滿8位后輸出到并行數(shù)據(jù)線(此時(shí)RXValid為高)。UTMI檢測(cè)到EOP以后,,拉低RXActive,,表明接收完一個(gè)數(shù)據(jù)包。高速模式下的部分接收波形如圖7所示,。
將此設(shè)計(jì)在SMIC 130 nm CMOS工藝下進(jìn)行綜合,,布局布線,可滿足UTMI協(xié)議中480 Mb/s的數(shù)據(jù)率要求。經(jīng)仿真驗(yàn)證分析,,該設(shè)計(jì)符合UTMI接口協(xié)議,正確實(shí)現(xiàn)了收發(fā)器邏輯電路的功能,。
本文結(jié)合UTMI協(xié)議,對(duì)USB2.0收發(fā)器整個(gè)體系結(jié)構(gòu)和工作原理進(jìn)行了分析,。完成了USB收發(fā)器邏輯電路的設(shè)計(jì),滿足協(xié)議要求,。仿真結(jié)果表明,,所設(shè)計(jì)的收發(fā)器功能正確,適用于USB系統(tǒng)開(kāi)發(fā),?! ?/p>
參考文獻(xiàn)
[1] 黃菁,劉青春. 通過(guò) USB 接口控制數(shù)/模轉(zhuǎn)換器的電路設(shè)計(jì)[J].微型機(jī)與應(yīng)用, 201231(14):27-30.
[2] Intel Corporation.USB2.0 Transceiver MacrocellInterface(UTMI)specification[S].Version 1.05,,March 29,,2001.
[3] Compaq, Hewlett-Packard. Universal serial bus specifica-tion[S]. Revision 2.0, April 27, 2000.
[4] Huang Kai. A multiprocessor prototype and its SoC designmethodology[J]. DianziXuebao (Acta Electronica Sinica), 2009(2):305-311.