U盤SoC的設(shè)計(jì)與實(shí)現(xiàn)
摘要:設(shè)計(jì)和實(shí)現(xiàn)了U盤SoC。本系統(tǒng)包括USB CORE和已驗(yàn)證過的CPU核、Nandflash、UDC_Control等模塊,模塊間通過總線進(jìn)行通信。其中USB CORE為本文設(shè)計(jì)的重點(diǎn),用Verilog HDL語言實(shí)現(xiàn),同時(shí)并為此設(shè)計(jì)搭建了功能完備的Modelsim仿真環(huán)境,進(jìn)行了仿真驗(yàn)證。
關(guān)鍵詞:U盤;片上系統(tǒng);USB;Verilog HDL
隨著便攜式設(shè)備的廣泛使用,移動(dòng)存儲(chǔ)設(shè)備被廣泛用于信息存儲(chǔ)和傳輸。在目前諸多存儲(chǔ)設(shè)備中,U盤憑借其體積小、容量大、攜帶方便、支持熱插拔等諸多優(yōu)點(diǎn),得到了迅速的普及。而且隨著USB技術(shù)的廣泛應(yīng)用,在各種SoC系統(tǒng)中集成USB功能也成為一種必然趨勢(shì)。所以對(duì)SoC芯片中集成USB接口的研究開發(fā),具有較高的實(shí)用價(jià)值。
文中通過分析USB協(xié)議,設(shè)計(jì)出了一種符合該協(xié)議的低速和全速的USB設(shè)備控制器,并將該控制器與8051CPU核,NandFlash,UDC_Control通過總線連接起來,組成了一個(gè)U盤SoC系統(tǒng),并對(duì)此U盤SoC系統(tǒng)加以仿真驗(yàn)證。
1 系統(tǒng)的整體設(shè)計(jì)
現(xiàn)在的USB控制器主要有兩種:帶USB接口的單片機(jī)(MCU)和純粹的USB接口芯片。純粹的USB接口芯片僅處理USB通信,必須有一個(gè)外部微處理器來進(jìn)行協(xié)議處理和數(shù)據(jù)交換。帶USB接口的單片機(jī)從應(yīng)用上又可以分成兩類,一類是從底層設(shè)計(jì)專用于USB控制的單片機(jī);另一類是增加了USB接口的普通單片機(jī),這類USB控制器的最大好處在于開發(fā)者對(duì)系統(tǒng)結(jié)構(gòu)和指令集非常熟悉,開發(fā)工具簡單,但價(jià)格比較高,不利于產(chǎn)品升級(jí)和改型。
根據(jù)上述情況,文中介紹了一種U盤SoC設(shè)計(jì):將CPU和USB CORE通過UDC_Control模塊連接起來,再加上NandFlash模塊,通過總線連接組成一個(gè)SoC系統(tǒng)。其整體框圖如下圖1所示。
2 模塊的詳細(xì)設(shè)計(jì)
2.1 USB CORE
此模塊為該設(shè)計(jì)的核心模塊,實(shí)現(xiàn)USB1.1總線接口層設(shè)備控制器的功能,是本文設(shè)計(jì)的重點(diǎn)。USB設(shè)備控制器的架構(gòu)框圖如圖2所示,rxdp、rxdm為從主機(jī)發(fā)送過來的信號(hào),txdp、txdm為USB模塊發(fā)送給主機(jī)的信號(hào)。其中MCU通過控制SIE來對(duì)USB設(shè)備進(jìn)行控制。如圖2所示,本設(shè)計(jì)分為6個(gè)模塊。下面分別介紹各個(gè)模塊。
2.1.1 rx模塊
rx模塊是總線接收模塊,實(shí)現(xiàn)USB數(shù)據(jù)傳輸接收物理層的功能,把串行的USB數(shù)據(jù)去掉數(shù)據(jù)包頭,進(jìn)行NRZI解碼,去掉填充位,并將串行的數(shù)據(jù)轉(zhuǎn)換成并行的8位數(shù)據(jù)。然后將數(shù)據(jù)送往下一模塊處理。本模塊又分為dpll、解碼和總線狀態(tài)監(jiān)測(cè)模塊。如圖3所示。
dpll模塊用48 MHz的時(shí)鐘把總線上傳輸?shù)臅r(shí)鐘和數(shù)據(jù)信號(hào)恢復(fù)出來。用48 MHz的時(shí)鐘對(duì)總線上的數(shù)據(jù)信號(hào)進(jìn)行采樣,以去掉抖動(dòng),然后產(chǎn)生總線信號(hào)電平變化的指示信號(hào)change信號(hào),change信號(hào)的改變可控制采樣點(diǎn),從而保證數(shù)據(jù)信號(hào)的采樣點(diǎn)固定在每位數(shù)據(jù)信號(hào)的中央。
NRZI解碼模塊檢測(cè)到同步頭后,根據(jù)NRZI的原理,將rxdp和rxdp延后一拍的數(shù)據(jù)進(jìn)行同或操作,得到的數(shù)據(jù)經(jīng)過去填充位,串并轉(zhuǎn)換后,送入解包模塊。
總線狀態(tài)監(jiān)測(cè)模塊監(jiān)測(cè)總線的狀態(tài),置位suspend,resume,reset等狀態(tài)指示信號(hào)。若Idle時(shí)間超過3ms時(shí),就將suspend信號(hào)置高,在suspend狀態(tài)時(shí)檢測(cè)到總線信號(hào)變化時(shí),將resume信號(hào)置高,若se0時(shí)間超過2.5μs時(shí),就將reset信號(hào)置高。
2.1.2 解包模塊
本模塊接收從rx模塊送過來的并行數(shù)據(jù),按照USB數(shù)據(jù)包協(xié)議規(guī)范對(duì)接收的數(shù)據(jù)進(jìn)行解釋,并對(duì)數(shù)據(jù)做CRC校驗(yàn),給出當(dāng)前接收包的類型,根據(jù)不同類型的包的結(jié)構(gòu),從包中解出相應(yīng)的信息送給下一模塊。
2.1.3 req_dec模塊
本模塊對(duì)setup階段USB的標(biāo)準(zhǔn)請(qǐng)求進(jìn)行解釋,提供和USB請(qǐng)求相關(guān)的信號(hào)給SIE模塊,判斷funetion和endpoint的地址是否合法。若標(biāo)準(zhǔn)請(qǐng)求中對(duì)某個(gè)端點(diǎn)所請(qǐng)求的操作和預(yù)定的不符,則會(huì)產(chǎn)生錯(cuò)誤信號(hào)。
2.1.4 SIE模塊
SIE(Serial Interface Engine)模塊是USB CORE的核心模塊,根據(jù)從解包模塊傳送過來的信號(hào)與從MCU傳送過來的接口握手信號(hào),按照USB的相關(guān)協(xié)議,產(chǎn)生打包模塊的控制信號(hào)和MCU的控制信號(hào),從而控制總線上的數(shù)據(jù)發(fā)送。
評(píng)論