USB2.0接口IP核的開發(fā)與設(shè)計(jì)
緩存控制器( Buffer Controller)
緩存控制器負(fù)責(zé)暫時(shí)存儲(chǔ)接收或發(fā)送的數(shù)據(jù),這些數(shù)據(jù)來自設(shè)備端的外部SDRAM或者主機(jī)??紤]到USB 2. 0 高速數(shù)據(jù)的傳輸要求,減小存儲(chǔ)或讀取數(shù)據(jù)的等待時(shí)間,本文采用了雙緩沖區(qū)的緩存結(jié)構(gòu),硬件電路可以自動(dòng)在兩個(gè)緩沖區(qū)間進(jìn)行轉(zhuǎn)換,這樣就可以同時(shí)對(duì)不同RAM分別讀寫,減少等待時(shí)間,提高了傳輸效率。不同的傳輸方式應(yīng)該有不同的專用緩沖區(qū)(主要是區(qū)別控制傳輸和其他傳輸方式) ,但是為了節(jié)省RAM的硬件開銷,本文采用了控制傳輸和其他傳輸方式緩沖區(qū)復(fù)用的結(jié)構(gòu)。這種緩存結(jié)構(gòu)也是整個(gè)USB 2. 0 接口硬件設(shè)計(jì)電路的特點(diǎn)之一。如圖4 所示,在控制傳輸時(shí),使用每個(gè)RAM地址為00H—31H 的存儲(chǔ)空間,因?yàn)榭刂苽鬏數(shù)淖畲髷?shù)據(jù)包容量為32 ×16 位;在其他傳輸方式時(shí),使用每個(gè)RAM地址為00H—FFH的存儲(chǔ)空間,數(shù)據(jù)包的最大容量為256 ×16 位。由此可知,每個(gè)RAM的大小為4 種傳輸方式中最大數(shù)據(jù)包的容量———512 字節(jié)。
本文設(shè)計(jì)的緩存結(jié)構(gòu)要求緩存控制器對(duì)不同的傳輸方式加以區(qū)分,相應(yīng)增加了一些控制邏輯的復(fù)雜度。對(duì)于控制傳輸,數(shù)據(jù)是在USB 協(xié)議控制器和MCU 之間傳輸;對(duì)于其他傳輸方式,數(shù)據(jù)則是在USB 協(xié)議控制器和DMA(Direct Memory AccESS) 之間傳輸??傮w來說,這種緩存結(jié)構(gòu)是非常合理且有效的:節(jié)省硬件開銷,而且保證傳輸速度。
MCU(Micro Control Unit)
MCU 采用的是51 系列的89C52 ,這部分是固件程序,負(fù)責(zé)協(xié)助完成控制傳輸,即USB 設(shè)備功能與設(shè)置配置的工作,利用MCU 可以降低硬件復(fù)雜度和硬件開銷。在控制傳輸中,利用MCU 的中斷程序來及時(shí)處理相應(yīng)的數(shù)據(jù)交換,在批量傳輸時(shí),MCU 幾乎不參與工作,這是因?yàn)槠涔ぷ魉俣容^慢,不能滿足大量數(shù)據(jù)傳輸對(duì)速度傳輸要求,影響傳輸效率。因?yàn)檫@部分不是硬件電路設(shè)計(jì),所以就不再贅述了。
測試方案及測試結(jié)果
測試電路
設(shè)計(jì)了一個(gè)測試電路來驗(yàn)證USB 2. 0 接口電路功能的正確性,如圖5 所示。在原USB 2. 0 接口電路的基礎(chǔ)上,添加了MCU 接口、DMA(Direct Memory Access) 、EPP(Enhanced Parallel Port) 和SDRAM。MCU 負(fù)責(zé)控制整個(gè)電路系統(tǒng)中各個(gè)模塊的協(xié)調(diào)工作。這個(gè)測試電路實(shí)際上基于數(shù)碼相機(jī)電路系統(tǒng),USB 為該系統(tǒng)與主機(jī)的接口電路。
在測試USB 上傳數(shù)據(jù)給主機(jī)時(shí),主機(jī)先通過EPP 將數(shù)據(jù)下載到SDRAM中,然后緩存控制器通過DMA總線將數(shù)據(jù)從SDRAM中讀出來,傳送給USB 協(xié)議控制器,經(jīng)過USB 協(xié)議控制器的打包處理,數(shù)據(jù)通過收發(fā)器傳送給主機(jī)。通過上傳到主機(jī)的數(shù)據(jù)和原數(shù)據(jù)的對(duì)比,就可以驗(yàn)證傳送數(shù)據(jù)的正確性。
下傳數(shù)據(jù)則和上傳數(shù)據(jù)的驗(yàn)證過程類似. 或者直接通過USB 先下傳然后再上傳來驗(yàn)證數(shù)據(jù)的正確性。值得一提的是,MCU 接口、DMA ,EPP 和SDRAM這幾個(gè)模塊沒有使用收發(fā)器芯片提供的30 MHz 時(shí)鐘,而是使用了另外的系統(tǒng)時(shí)鐘(13. 5 MHz/ 27 MHz/ 54 MHz) ,這樣可以保證在USB 接口電路沒有連接到主機(jī)或處在掛起狀態(tài)(收發(fā)器此時(shí)也處在掛起狀態(tài),不提供時(shí)鐘) 時(shí),主機(jī)可以自由地將數(shù)據(jù)通過EPP 上傳或下傳到SDRAM中,而不必受USB 接口電路工作與否的限制,便于整個(gè)系統(tǒng)的測試工作。這樣使得緩存控制器和DMA 之間的數(shù)據(jù)傳輸變?yōu)楫惒降墓ぷ髂J?增加了一些處理的復(fù)雜度。圖6 為USB 2. 0 接口電路FPGA 驗(yàn)證的驗(yàn)證平臺(tái)。
測試結(jié)果
上述硬件電路使用ISE 軟件綜合后下載到Xilinx 的SPARTAN2XC2S2002PQ208AFP0049 ,其規(guī)模大小為20 萬門,該FPGA 芯片的工作電壓為3. 3 V。綜合結(jié)果為:硬件邏輯開銷為1670 Slices ,RAM開銷為1 KB ,時(shí)鐘最快可達(dá)45 MHz ,這完全能夠滿足整個(gè)USB 2. 0 接口電路30 MHz 的工作頻率要求。利用邏輯分析儀和Bus Hound 軟件進(jìn)行相應(yīng)的邏輯功能分析,通過仔細(xì)的測試工作可知,在和主機(jī)建立連接后,整個(gè)USB 2. 0 接口電路可以和主機(jī)正常通信。因?yàn)檎麄€(gè)電路主要應(yīng)用于數(shù)碼相機(jī)的專用集成電路中,所以著重測試了控制傳輸和批量傳輸這兩種數(shù)據(jù)傳輸方式。
相應(yīng)的測試結(jié)果為:USB 2. 0 接口電路功能正確,在高速,全速和掛起狀態(tài)下的功耗(包括收發(fā)器以及其他的輔助模塊EPP , SDRAM 等) 分別為:584 ,254 ,102 mw。批量傳輸?shù)挠行?shù)據(jù)傳輸速率可以達(dá)到100 Mbps ,沒有達(dá)到當(dāng)然也不可能達(dá)到USB 2. 0 協(xié)議所規(guī)定的480 Mbps ,這是傳輸帶寬的限制和數(shù)據(jù)包中冗余信息(包開始符、包結(jié)束符、同步字段以及校驗(yàn)碼) 的存在所導(dǎo)致的,同時(shí)在USB 接口電路內(nèi)部緩存通過DMA總線和SDRAM交互數(shù)據(jù)的時(shí)候,由于DMA 總線速度的限制,緩存也增加了一定的等待時(shí)間??傮w來講,100Mbps 的批量傳輸速率還是令人滿意的。
本文提出的USB 2. 0 接口電路系統(tǒng),兼顧了軟硬件的優(yōu)缺點(diǎn),硬件電路與單片機(jī)有效結(jié)合使用,硬件實(shí)現(xiàn)簡單,造價(jià)低廉. 同時(shí)為了實(shí)現(xiàn)較高的傳輸速率,滿足USB 2. 0 高速傳輸?shù)囊?并有效節(jié)省RAM,電路采用了不同傳輸方式緩沖區(qū)復(fù)用的雙緩沖區(qū)的緩存結(jié)構(gòu)。在FPGA 的驗(yàn)證過程中,為了實(shí)現(xiàn)測試的方便性,部分電路采用了異步的工作模式。整個(gè)模塊已經(jīng)通過FPGA 驗(yàn)證,功能正確。現(xiàn)在FPGA 的驗(yàn)證工作已經(jīng)完成,下一步的任務(wù)就是在此基礎(chǔ)上實(shí)現(xiàn)USB 2. 0 接口電路的芯片設(shè)計(jì)。
pid控制相關(guān)文章:pid控制原理
pid控制器相關(guān)文章:pid控制器原理
評(píng)論