當前位置:首頁 > 工業(yè)控制 > 工業(yè)控制
[導讀]摘要:設(shè)計和實現(xiàn)了U盤SoC。本系統(tǒng)包括USB CORE和已驗證過的CPU核、Nandflash、UDC_Control等模塊,模塊間通過總線進行通信。其中USB CORE為本文設(shè)計的重點,用Verilog HDL語言實現(xiàn),同時并為此設(shè)計搭建了功能完備的

摘要:設(shè)計和實現(xiàn)了U盤SoC。本系統(tǒng)包括USB CORE和已驗證過的CPU核、Nandflash、UDC_Control等模塊,模塊間通過總線進行通信。其中USB CORE為本文設(shè)計的重點,用Verilog HDL語言實現(xiàn),同時并為此設(shè)計搭建了功能完備的Modelsim仿真環(huán)境,進行了仿真驗證。
關(guān)鍵詞:U盤;片上系統(tǒng);USB;Verilog HDL

    隨著便攜式設(shè)備的廣泛使用,移動存儲設(shè)備被廣泛用于信息存儲和傳輸。在目前諸多存儲設(shè)備中,U盤憑借其體積小、容量大、攜帶方便、支持熱插拔等諸多優(yōu)點,得到了迅速的普及。而且隨著USB技術(shù)的廣泛應(yīng)用,在各種SoC系統(tǒng)中集成USB功能也成為一種必然趨勢。所以對SoC芯片中集成USB接口的研究開發(fā),具有較高的實用價值。
    文中通過分析USB協(xié)議,設(shè)計出了一種符合該協(xié)議的低速和全速的USB設(shè)備控制器,并將該控制器與8051CPU核,NandFlash,UDC_Control通過總線連接起來,組成了一個U盤SoC系統(tǒng),并對此U盤SoC系統(tǒng)加以仿真驗證。

1 系統(tǒng)的整體設(shè)計
   
現(xiàn)在的USB控制器主要有兩種:帶USB接口的單片機(MCU)和純粹的USB接口芯片。純粹的USB接口芯片僅處理USB通信,必須有一個外部微處理器來進行協(xié)議處理和數(shù)據(jù)交換。帶USB接口的單片機從應(yīng)用上又可以分成兩類,一類是從底層設(shè)計專用于USB控制的單片機;另一類是增加了USB接口的普通單片機,這類USB控制器的最大好處在于開發(fā)者對系統(tǒng)結(jié)構(gòu)和指令集非常熟悉,開發(fā)工具簡單,但價格比較高,不利于產(chǎn)品升級和改型。


    根據(jù)上述情況,文中介紹了一種U盤SoC設(shè)計:將CPU和USB CORE通過UDC_Control模塊連接起來,再加上NandFlash模塊,通過總線連接組成一個SoC系統(tǒng)。其整體框圖如下圖1所示。

2 模塊的詳細設(shè)計
2.1 USB CORE
   
此模塊為該設(shè)計的核心模塊,實現(xiàn)USB1.1總線接口層設(shè)備控制器的功能,是本文設(shè)計的重點。USB設(shè)備控制器的架構(gòu)框圖如圖2所示,rxdp、rxdm為從主機發(fā)送過來的信號,txdp、txdm為USB模塊發(fā)送給主機的信號。其中MCU通過控制SIE來對USB設(shè)備進行控制。如圖2所示,本設(shè)計分為6個模塊。下面分別介紹各個模塊。


2.1.1 rx模塊
    rx模塊是總線接收模塊,實現(xiàn)USB數(shù)據(jù)傳輸接收物理層的功能,把串行的USB數(shù)據(jù)去掉數(shù)據(jù)包頭,進行NRZI解碼,去掉填充位,并將串行的數(shù)據(jù)轉(zhuǎn)換成并行的8位數(shù)據(jù)。然后將數(shù)據(jù)送往下一模塊處理。本模塊又分為dpll、解碼和總線狀態(tài)監(jiān)測模塊。如圖3所示。


    dpll模塊用48 MHz的時鐘把總線上傳輸?shù)臅r鐘和數(shù)據(jù)信號恢復出來。用48 MHz的時鐘對總線上的數(shù)據(jù)信號進行采樣,以去掉抖動,然后產(chǎn)生總線信號電平變化的指示信號change信號,change信號的改變可控制采樣點,從而保證數(shù)據(jù)信號的采樣點固定在每位數(shù)據(jù)信號的中央。
    NRZI解碼模塊檢測到同步頭后,根據(jù)NRZI的原理,將rxdp和rxdp延后一拍的數(shù)據(jù)進行同或操作,得到的數(shù)據(jù)經(jīng)過去填充位,串并轉(zhuǎn)換后,送入解包模塊。
    總線狀態(tài)監(jiān)測模塊監(jiān)測總線的狀態(tài),置位suspend,resume,reset等狀態(tài)指示信號。若Idle時間超過3ms時,就將suspend信號置高,在suspend狀態(tài)時檢測到總線信號變化時,將resume信號置高,若se0時間超過2.5μs時,就將reset信號置高。
2.1.2 解包模塊
   
本模塊接收從rx模塊送過來的并行數(shù)據(jù),按照USB數(shù)據(jù)包協(xié)議規(guī)范對接收的數(shù)據(jù)進行解釋,并對數(shù)據(jù)做CRC校驗,給出當前接收包的類型,根據(jù)不同類型的包的結(jié)構(gòu),從包中解出相應(yīng)的信息送給下一模塊。
2.1.3 req_dec模塊
   
本模塊對setup階段USB的標準請求進行解釋,提供和USB請求相關(guān)的信號給SIE模塊,判斷funetion和endpoint的地址是否合法。若標準請求中對某個端點所請求的操作和預定的不符,則會產(chǎn)生錯誤信號。
2.1.4 SIE模塊
    SIE(Serial Interface Engine)模塊是USB CORE的核心模塊,根據(jù)從解包模塊傳送過來的信號與從MCU傳送過來的接口握手信號,按照USB的相關(guān)協(xié)議,產(chǎn)生打包模塊的控制信號和MCU的控制信號,從而控制總線上的數(shù)據(jù)發(fā)送。
    控制傳輸?shù)膶崿F(xiàn):
    SETUP階段:從圖4中可看出,當token_valid_i、Pid_setup、ep0_sel有效時,表明收到一個有效的令牌包,udc_as_o被拉高,表示開始數(shù)據(jù)傳送,轉(zhuǎn)入ctrl_setup_stage狀態(tài),此時cpu把device_bufok_i信號拉高,隨后開始接收數(shù)據(jù),在setup階段8個字節(jié)的標準請求數(shù)據(jù)接收完成后,send_hdsk_pkt_o信號變高,表示數(shù)據(jù)接收正確,要求發(fā)送一個ACK的握手包。


    DATA階段:數(shù)據(jù)階段是可選的,并且數(shù)據(jù)階段的傳送方向可以是IN或OUT。以IN為例來介紹,當Pid_in、token_valid_i、ep0_sel有效時,udc_as_o被拉高,表示開始數(shù)據(jù)傳送,轉(zhuǎn)入ctrl_in_stage_empty,接著轉(zhuǎn)入ctrl_in_stage狀態(tài),CPU將device_bufok_i拉高,表示開始接收數(shù)據(jù),等待數(shù)據(jù)傳完后,send_hdsk_pkt_o信號變高,表示數(shù)據(jù)接收正確,并將toggle機制翻轉(zhuǎn),要求打包模塊發(fā)送一個ACK的握手包。
    STATUS階段:STATUS階段也分為STATUS IN和STATUS OUT兩種情況。在STATUS OUT階段,接受到HOST發(fā)送過來的空數(shù)據(jù)包后,狀態(tài)機會將send_hdsk_pkt_o信號拉高,發(fā)送ACK包給HOST。其狀態(tài)機同SETUP狀態(tài)機類似。
    中斷、批量、同步傳輸?shù)腎N實現(xiàn):在硬件設(shè)計上,中斷、批量和同步3種傳輸方式的處理都是一樣的,只是在系統(tǒng)配置時,各傳輸方式對應(yīng)的端點不同。下面以3種傳輸方式的IN傳輸來介紹。圖5為3種傳輸方式的IN傳輸?shù)臓顟B(tài)機。


    從上圖可看出,在收到IN令牌后,狀態(tài)機將tide_as_o拉高,表示開始傳送數(shù)據(jù),轉(zhuǎn)入In_transfer_empty狀態(tài),再轉(zhuǎn)入In_transfer狀態(tài),cpu若能傳送數(shù)據(jù),則把device_buf_ok_i信號置高,開始接收數(shù)據(jù),等待數(shù)據(jù)傳送完畢時,狀態(tài)機會將send_data_pkt_o拉高,將此信號送至打包模塊,從而將所需要的數(shù)據(jù)發(fā)送給HOST。
2.1.5 打包模塊
   
本模塊接收從SIE傳來的控制信號,根據(jù)USB協(xié)議,產(chǎn)生所需要的包傳送給發(fā)送模塊。
2.1.6 tx模塊
    tx模塊是總線發(fā)送模塊。它將打包模塊發(fā)送過來的包信息,進行并串轉(zhuǎn)換,位填充,NRZI編碼后,將數(shù)據(jù)發(fā)送給主機。此模塊同rx模塊類似,不再贅述。
2.2 8051CPU
   
此設(shè)計中的CPU為一個驗證過的IP核。它包含:1個8位中央處理器、1個片內(nèi)振蕩器及時鐘電路、4 KB ROM程序存儲器、128B RAM數(shù)據(jù)存儲器、可尋址64 KB外部數(shù)據(jù)存儲器和64 KB外部程序存儲器的控制電路、32條可編程的I/O線(4個8位并行I/O接口)、2個16位的定時,計數(shù)器、1個可編程全雙工串行接口、5個中斷源、2個優(yōu)先級嵌套中斷結(jié)構(gòu)。將USB的通信請求接入到CPU的一個外部中斷接口上,當USB的通信請求到來時,系統(tǒng)會產(chǎn)生一個中斷,轉(zhuǎn)入中斷服務(wù)程序。
    此外,還需要設(shè)計一個CPU的固件firmware,實現(xiàn)USBCORE的上電初始化過程(向UDC_Control中的控制寄存器和狀態(tài)寄存器寫入初始數(shù)據(jù))、USB CORE中斷處理并完成USB傳輸事務(wù)、使設(shè)備擺脫異常狀態(tài)等功能。
2.3 UDC_Control
    UDC_Control模塊位于CPU和USB CORE之間,它完成CPU對USB通信的控制和數(shù)據(jù)的讀寫操作。UDC_CTRL模塊中設(shè)有22個特殊功能寄存器,來完成USB通信。
    USB_INT1和USB_INT2為中斷寄存器,其各個位分別表示USB通信的9種中斷請求(剩下的位為保留位),但USBCORE一次只能向CPU提供一個中斷信號,這兩個USB_INT寄存器供軟件在進入中斷后查詢是USB的何種中斷。EP0_CTRL、EP0_INFIFO_DATA、EPO_INFIFO_CNT、EP0_OUTFIFO_ DATA、EP0_OUTFIFO_CNT這5個寄存器都是與Endpoint0相關(guān)的,Endpoint0是由一個輸入端點和一個輸出端點組成,用來實現(xiàn)控制傳輸。所有支持USB標準請求和Class定義的請求都通過這個端點來處理。其中EP0_CTRL用來對Endpoint0的傳輸進行控制,當CPU要向USB主機傳送數(shù)據(jù)時,就會將數(shù)據(jù)寫入EP0_INFIFO_DATA,EP0_INFIFO_CNT是CPU向EP0_INFIFO_DATA中寫入數(shù)據(jù)的字節(jié)數(shù)。EP0_OUT,Endpoint1,Endpoint2,Endpoint3,Endpoint4的寄存器情況類似,在此不再多做介紹。UDC_STATUS和DEVICE_CTRL是接口狀態(tài)和控制寄存器,對CPU和USB CORE的通信進行監(jiān)控。
2.4 NandFlash
   
針對NandFlash讀寫的特點,特別是其可隨機讀,但無法隨機寫的問題,需要通過設(shè)置緩沖區(qū)來解決。在與USB Host進行數(shù)據(jù)交換的過程中,最小的單位是扇區(qū):512字節(jié)。由于NandFlash在寫之前必須先擦除,而一擦又必須擦一個Block,因此在擦除某Block之前必須保存同一個Block中有關(guān)扇區(qū)的數(shù)據(jù)。因此,如果每收到一個扇區(qū)的內(nèi)容就進行一次擦、保存、寫的操作,系統(tǒng)任務(wù)將十分繁重,無法及時響應(yīng)USB Host端的請求。因此,在系統(tǒng)中設(shè)置32K的緩沖區(qū),每完一次數(shù)據(jù)傳輸后,記下本次要寫的開始扇區(qū)和總扇區(qū)數(shù),將本次要寫的數(shù)據(jù)涉及的扇區(qū)以外的數(shù)據(jù)從NandFlash中讀出來,存放在緩沖區(qū)中對應(yīng)位置,然后擦除一個Block,再將緩沖區(qū)中內(nèi)容一次全部重新寫入NandFlash。

3 仿真與驗證
3.1 仿真環(huán)境的介紹
   
為了驗證此設(shè)計,需要建立一個和實際應(yīng)用情況類似的仿真驗證平臺,這個仿真系統(tǒng)平臺包括USB CORE的RTL代碼、CPU核、控制軟件的二進制代碼、UDC_Control、NandFlash、USB Host的仿真模型等。整個系統(tǒng)的Modelsim仿真環(huán)境如圖6所示。


    USB HOST的仿真模型用來模擬PC機上的主機控制器,完成上電檢測、標準設(shè)備請求、批量傳輸請求等功能,用來檢測USB設(shè)備應(yīng)答數(shù)據(jù)是否正確。負責讀取主控制器的事務(wù)處理列表,并將它們安排在一系列長度的幀中,發(fā)送到USB總線上。
3.2 仿真結(jié)果
   
通過此測試平臺,成功的完成了USB主機與U盤SoC之間的通信。仿真圖如圖7所示。


    從仿真圖中可以看出,通過控制傳輸對設(shè)備進行了復位、獲取設(shè)備描述符、配置地址等操作。接著進行了一個bulkout和bulk in傳輸。主機準確的將數(shù)據(jù)寫入了NandFlash,并且正確的將數(shù)據(jù)讀出。仿真表明,設(shè)計的結(jié)果滿足了USB設(shè)備控制器的規(guī)格要求。

4 結(jié)束語
   
文中探討了U盤SoC的設(shè)計,并結(jié)合仿真工具通過了RTL級仿真,證明了本設(shè)計的可行性。該U盤SoC設(shè)計具有便于修改、易于實現(xiàn)的特點。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉