MCU與USB設(shè)備控制器IP核的設(shè)計(jì)
1 引言
在傳統(tǒng)的計(jì)算機(jī)系統(tǒng)上常采用串口(如RS232)和并口連接外圍設(shè)備,但串口和并口都存在著通信速度 慢,接口獨(dú)占不利于擴(kuò)展等無(wú)法克服的缺點(diǎn),而通用串行總線(Universal Serial Bus,即USB)因具有傳輸 速度快、支持熱插拔、擴(kuò)展方便、抗干擾強(qiáng)、成本低、數(shù)據(jù)傳輸質(zhì)量高、節(jié)省系統(tǒng)資源等優(yōu)點(diǎn)而得到了廣 泛的應(yīng)用,當(dāng)前它已成為計(jì)算機(jī)最常用的接口之一。
現(xiàn)在USB控制器主要有兩種:帶USB接口的單片機(jī)(MCU) 和純粹的USB接口芯片。純粹的USB接口芯片僅處 理USB通信,必須有個(gè)外部微處理器來(lái)進(jìn)行協(xié)議處理和數(shù)據(jù)交換。典型產(chǎn)品有Philips公司的PDIUSBD11(I2C 接口)、PDIUSBD12(并行接口);NS公司的USBN9603/9*(并行接口)。帶USB接口的單片機(jī)從應(yīng)用上又可以 分成兩類,一類是從底層設(shè)計(jì)專用于USB控制的單片機(jī);另一類是增加了USB接口的普通單片機(jī),如Cypress 公司的EZ—USB(基于8051),選擇這類USB控制器的最大好處在于開(kāi)發(fā)者對(duì)系統(tǒng)結(jié)構(gòu)和指令集非常熟悉,開(kāi) 發(fā)工具簡(jiǎn)單,但價(jià)格比較高,不利于產(chǎn)品升級(jí)和改型。
然而,國(guó)內(nèi)產(chǎn)品中所用到的USB 芯片都依賴進(jìn)口,主要由國(guó)外的IC 設(shè)計(jì)芯片廠商如Cypress,NEC 等 一些國(guó)際著名公司提供。鑒于USB 芯片有很好的市場(chǎng)前景和利潤(rùn)空間,盡管國(guó)內(nèi)企業(yè)或研究機(jī)構(gòu)目前還只 是處于USB 芯片應(yīng)用開(kāi)發(fā)的技術(shù)水平,人們還是希望自主開(kāi)發(fā)出有自主知識(shí)產(chǎn)權(quán)的USB 芯片。因此,近 年來(lái)國(guó)內(nèi)也有許多單位在探索獨(dú)立設(shè)計(jì)USB 芯片。
本論文針對(duì)USB1.1 協(xié)議規(guī)范,本著自主開(kāi)發(fā)USB 控制芯片,把MCU 和USB 設(shè)備控制器用軟核的形式集成在一塊芯片上,微控制器我們是用14 位指令字長(zhǎng)度,且是單字節(jié)指令和單周期指令,其核心指令只有 39 條,容易掌握和設(shè)計(jì),而且完全滿足總體設(shè)計(jì)的要求。
2 MCUUSB 設(shè)備控制器工作原理及總體設(shè)計(jì)
整個(gè)設(shè)計(jì)的總體結(jié)構(gòu)如圖1 所示,差分信號(hào)線D+和D-連接主機(jī),接收時(shí)主機(jī)發(fā)送的串行數(shù)據(jù)通過(guò)收 發(fā)器和USB 設(shè)備控制器解碼和校驗(yàn)等處理后存儲(chǔ)到相應(yīng)的RAM 中;發(fā)送時(shí)由仲裁模塊控制從RAM 或 ROM 中提取相應(yīng)數(shù)據(jù)經(jīng)過(guò)USB 設(shè)備控制器組合和收發(fā)器串行發(fā)送給主機(jī)。MCU 主要協(xié)助USB 控制器完 成設(shè)備和主機(jī)之間的數(shù)據(jù)傳輸。
2.1 MCU 的設(shè)計(jì)
MCU主要完成各種中斷處理,而且協(xié)助控制器使主機(jī)檢測(cè)和識(shí)別設(shè)備;設(shè)備剛插上PC時(shí),MCU通過(guò)讀取 ROM中的指令來(lái)初始化專用功能寄存器,使能全局中斷GIE和USB中斷USBint,使控制器能及時(shí)響應(yīng)各種USB 中斷;全局中斷允許位GIE置位時(shí),允許所有中斷;清零時(shí),禁止所有中斷。當(dāng)一個(gè)中斷被響應(yīng)時(shí),GIE 位被清零以禁止其它中斷,并裝載中斷服務(wù)程序,將中斷返回地址壓入堆棧。引起裝載中斷服務(wù)程序的中 斷標(biāo)志位在重新允許GIE之前通過(guò)軟件清零,以避免重復(fù)響應(yīng)中斷。在中斷服務(wù)程序中,通過(guò)檢測(cè)中斷標(biāo) 志位可以判斷中斷源,各中斷標(biāo)志位的置位不受GIE的影響;在設(shè)備與主機(jī)通信過(guò)程中,MCU處理setup包、 in包、out包、ack、nak、stall包等的中斷處理,我們規(guī)定了USB中斷、定時(shí)器中斷、外部中斷、GPIO中斷 的中斷入口地址分別為04H、08H、0CH、10H;MCU同時(shí)還對(duì)各功能寄存器進(jìn)行相應(yīng)的操作,比如寫(xiě)端點(diǎn)0的 輸入輸出包允許的最大值,數(shù)據(jù)的觸發(fā)位DSQ(即Data Toggle機(jī)制)等。
2.2 arbRAM、arbROM(仲裁模塊)的設(shè)計(jì)
在設(shè)計(jì)中含有兩種存儲(chǔ)器:程序存儲(chǔ)器(ROM)和數(shù)據(jù)存儲(chǔ)器(SRAM),這兩種存儲(chǔ)器都有自己的總線, 在一個(gè)時(shí)鐘周期內(nèi),可以同時(shí)對(duì)兩種存儲(chǔ)器進(jìn)行訪問(wèn)。USB 和MCU 都可以訪問(wèn)SRAM 和ROM,仲裁模塊就是 為兩者同時(shí)訪問(wèn)時(shí)不起沖突而設(shè)置的;USB 訪問(wèn)ROM 的地址空間100h-fffh(我們把設(shè)備的描述符存放在這 里),且USB 訪問(wèn)僅取14 位寬的低8 位數(shù)據(jù)。當(dāng)USB 與MCU 同時(shí)訪問(wèn)ROM 時(shí),MCU 優(yōu)先。USB 與MCU 共享通 用寄存器(SRAM),當(dāng)USB 的請(qǐng)求訪問(wèn)存儲(chǔ)器信號(hào)到來(lái)時(shí), USB 訪問(wèn)存儲(chǔ)器的地址信號(hào)的高三位不等于零 時(shí)屬于USB 訪問(wèn)程序存儲(chǔ)器的地址空間。當(dāng)USB 與MCU 同時(shí)訪問(wèn)通用寄存器(SRAM)時(shí),MCU 具有優(yōu)先權(quán)。
2.3 USB 設(shè)備控制器的設(shè)計(jì)
USB 設(shè)備控制器是設(shè)計(jì)的重點(diǎn)部分,是本論文介紹的重點(diǎn),總體的模塊劃分如圖2 所示;
2.3.1 收發(fā)器的設(shè)計(jì)
USB 收發(fā)器作為USB 接口的模擬前端主要把主機(jī)發(fā)送過(guò)來(lái)的模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)VP、VM 傳到數(shù)字鎖相環(huán)或把協(xié)議引擎發(fā)送過(guò)來(lái)的VP0、VM0 數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào),并完成串并和并串的轉(zhuǎn)換;
評(píng)論