一種嵌入式USB2.0主機(jī)控制器IP核的研究與設(shè)計(jì)
出處:AIRWILL 發(fā)布于:2011-08-30 14:39:01
摘 要: 用硬件描述語(yǔ)言verilog HDL 設(shè)計(jì)實(shí)現(xiàn)了一種嵌入式USB2. 0 主機(jī)控制器IP 核, 簡(jiǎn)要介紹了嵌入式USB主機(jī)設(shè)計(jì)背景, 重點(diǎn)描述了USB 主機(jī)控制器IP 核的結(jié)構(gòu)劃分和各模塊的設(shè)計(jì)分析, 給出了nc2verilog 功能仿真方案以及FPGA 驗(yàn)證方案。 通過(guò)nc2verilog 功能仿真及FPGA 驗(yàn)證表明, 此IP 核可以作為一個(gè)獨(dú)立模塊應(yīng)用到嵌入式系統(tǒng)中。
1 引言
從通用串行總線(USB) 問(wèn)世, 到協(xié)議規(guī)范2. 0版本, USB 在不斷自我完善, 并走向成熟。 USB 的拓?fù)浣Y(jié)構(gòu)中居于地位的是主機(jī)(Host), 任何USB 的數(shù)據(jù)傳輸都必須由主機(jī)來(lái)發(fā)起和控制, 而目前, 大量扮演主機(jī)角色的是個(gè)人電腦( PC)。所有USB 設(shè)備都只能在PC 上使用, 只能通過(guò)PC 來(lái)進(jìn)行相互的文件和數(shù)據(jù)交換。 沒(méi)有了PC, 這些設(shè)備就失靈了( 指數(shù)據(jù)交換的功能)。
因此, 如何將USB 應(yīng)用到嵌入式領(lǐng)域? 如何實(shí)現(xiàn)USB 點(diǎn)對(duì)點(diǎn)的通信?0等問(wèn)題, 開始進(jìn)入了USB開發(fā)者的討論議程。 嵌入式USB 主機(jī)的設(shè)計(jì)在國(guó)內(nèi)處于剛剛起步的階段, 僅有不多的半導(dǎo)體公司提供接口芯片, 還很少有完整的嵌入式USB 主機(jī)產(chǎn)品上市。 廠家和USB 論壇所能提供的Demo 也限于依靠嵌入式操作系統(tǒng)WinCE 和Linux 等。因此, 項(xiàng)目研究具有一定的性。 正是在這種背景下, 業(yè)界和用戶的需求呼喚USB 主機(jī)實(shí)現(xiàn)嵌入式化。 本設(shè)計(jì)也是基于這種背景設(shè)計(jì)了一種支持高速和全速的嵌入式USB2. 0 主機(jī)控制器IP 核, 如圖1 所示。

圖1 嵌入式USB2. 0 主機(jī)控制器結(jié)構(gòu)
2 主機(jī)控制器IP 核的設(shè)計(jì)
2. 1 主控制器
主控制器是整個(gè)USB 主機(jī)設(shè)計(jì)中的模塊,它控制著嵌入U(xiǎn)SB 主機(jī)控制器中其它所有模塊, 此模塊主要采用一個(gè)總狀態(tài)機(jī)來(lái)實(shí)現(xiàn)其控制作用, 如圖2 所示。

圖2 主控制狀態(tài)機(jī)
其中每個(gè)狀態(tài)下又有相應(yīng)的子狀態(tài)機(jī)。 當(dāng)EOF1( end of frame1) 到來(lái)時(shí), 將進(jìn)入等待發(fā)送SOF( start of frame) 狀態(tài), 當(dāng)傳輸數(shù)據(jù)有效時(shí), 會(huì)有兩種傳輸情況, 如果是OUT 傳輸或( setup) 配置時(shí), 嵌入式主機(jī)讀取存儲(chǔ)器中數(shù)據(jù), 數(shù)據(jù)讀取完后會(huì)自動(dòng)跳轉(zhuǎn)到PIE 模塊中的OUT 傳輸或setup 的子狀態(tài)機(jī)來(lái)完成相應(yīng)的具體操作并進(jìn)入傳輸?shù)却隣顟B(tài)(waitfor eot) , 等待操作完成, 相應(yīng)操作完成后, PIE 模塊置EOT( end of transfer) 信號(hào)為1來(lái)宣告當(dāng)前傳輸完成, 同時(shí)會(huì)更新狀態(tài)寄存器中數(shù)據(jù)準(zhǔn)備下操作。 當(dāng)為IN 或ping 傳輸時(shí), 與OUT 或setup 傳輸類似, 都會(huì)跳轉(zhuǎn)到相關(guān)模塊來(lái)完成相應(yīng)的具體操作。
2. 2 配置寄存器
配置寄存器主要分為兩種: 狀態(tài)寄存器和控制寄存器。為了提高代碼可讀性, 設(shè)計(jì)中定義了5 個(gè)32 位寄存器: USB 命令寄存器; 端口狀態(tài)寄存器;USB 信息包域A 寄存器; USB 信息包域B 寄存器;傳輸狀態(tài)寄存器。 這些寄存器分別寄存數(shù)據(jù)傳輸中的一些控制命令, 傳輸狀態(tài), 端口狀態(tài)改變情況以及傳輸數(shù)據(jù)包特性等。
2. 2. 1 DMA 控制器
本設(shè)計(jì)將DMA 控制器設(shè)計(jì)為兩種工作模式:
DMA master 模式和DMA slave 模式。 采用一個(gè)模式選擇信號(hào)來(lái)選擇DMA 工作模式, 如下:
此選擇信號(hào)值由配置寄存器配置, 當(dāng)總線沒(méi)有外部DMA 控制器控制時(shí), USB 主機(jī)中DMA 控制器選擇工作在master 模式, 在這種模式中, 當(dāng)USB主機(jī)有數(shù)據(jù)傳輸?shù)男枨髸r(shí), DMA 控制器向CPU 發(fā)起請(qǐng)求, CPU 將對(duì)DMA 控制器配置數(shù)據(jù)傳輸?shù)钠鹗嫉刂罚?數(shù)據(jù)傳輸總大小, 傳輸數(shù)據(jù)包大小等信息,并釋放總線給DMA 控制器接管, 此時(shí)DMA 控制器完全接管對(duì)總線的控制, USB 主機(jī)與存儲(chǔ)器之間數(shù)據(jù)傳輸不經(jīng)過(guò)CPU, 而直接交換USB 主機(jī)外部存儲(chǔ)器和USB 主機(jī)內(nèi)數(shù)據(jù)緩沖器之間數(shù)據(jù)。 當(dāng)數(shù)據(jù)傳輸結(jié)束后DMA 控制器通知CPU 重新接管總線。
DMA master 模式一般用于高速地傳送成組的數(shù)據(jù)。
DMA mater 模式的主要優(yōu)點(diǎn)是速度快。 由于整個(gè)數(shù)據(jù)傳輸過(guò)程不需要CPU 干預(yù), 因此就省去了CPU操作時(shí)間, 減少了CPU 工作負(fù)擔(dān), 減小了對(duì)CPU 的要求, 很大程度的降低成本。 當(dāng)總線有外部DMA 控制器接管時(shí), USB 主機(jī)中DMA 控制器工作在slave模式, 此時(shí)USB 主機(jī)內(nèi)DMA 控制器模塊不起作用, USB 主機(jī)與外部存儲(chǔ)器之間數(shù)據(jù)傳輸必須經(jīng)過(guò)CPU 來(lái)啟動(dòng)外部DMA 來(lái)搬運(yùn)外部存儲(chǔ)器和USB主機(jī)內(nèi)數(shù)據(jù)緩沖器中的數(shù)據(jù), 這樣就加大了CPU 工作量, 對(duì)CPU 要求也相應(yīng)的提高, 數(shù)據(jù)傳輸速度也有所下降。
2. 2. 2 數(shù)據(jù)緩沖器
數(shù)據(jù)緩沖器模塊用來(lái)緩沖從設(shè)備端輸入的數(shù)據(jù)和CPU 端要輸出的數(shù)據(jù)。 本設(shè)計(jì)采用乒乓緩沖buffer0, buffer1, 在讀buffer0 數(shù)據(jù)的同時(shí)在向buffer1 里寫入下一個(gè)數(shù)據(jù), 然后讀buffer1 的數(shù)據(jù)并寫數(shù)據(jù)到buffer0, 這樣交替讀寫數(shù)據(jù), 很大程度的提高了數(shù)據(jù)傳輸速度。 在IN 傳輸中, 將從設(shè)備端輸入的數(shù)據(jù)寫入數(shù)據(jù)緩沖器中, 數(shù)據(jù)寫完后會(huì)發(fā)起一個(gè)中斷信號(hào)通知CPU 來(lái)取出其中的數(shù)據(jù), 同樣在OUT 傳輸中, 將從CPU 過(guò)來(lái)的數(shù)據(jù)寫入數(shù)據(jù)緩沖器中, 隨后將寫入的數(shù)據(jù)傳輸?shù)皆O(shè)備端。
2. 2. 3 根集線器及PIE
根集線器其實(shí)也是一種特殊的設(shè)備, 它下游端口還可以繼續(xù)串聯(lián)其他集線器, 終能夠?yàn)?27 個(gè)USB 設(shè)備提供連接端口, 根集線器主要任務(wù)是管理連接到根集線器上的設(shè)備以及負(fù)責(zé)設(shè)備與主機(jī)之間的數(shù)據(jù)通信。 設(shè)計(jì)中通過(guò)圖3 的狀態(tài)機(jī)來(lái)實(shí)現(xiàn)根集線器對(duì)設(shè)備的枚舉過(guò)程。

圖3 枚舉狀態(tài)機(jī)
有高速能力的設(shè)備在次連接到USB 總線時(shí)必須使用全速。 而后, 該設(shè)備在總線重置階段中向根集線器發(fā)送一個(gè)Chirp K, 如上游的集線器支持高速速率, 則應(yīng)答一個(gè)Chirp K 與Chirp J 交替序列,這樣高速集線器和高速設(shè)備都使用高速傳輸速率通信, 如根集線器不支持高速速率, 則忽略高速設(shè)備發(fā)送的Chirp K, 即不應(yīng)答ChirpK 與Chirp J 交替序列。 這樣高速設(shè)備必須維持在全速模式。
PIE 模塊在設(shè)計(jì)中實(shí)現(xiàn)對(duì)傳輸?shù)男畔幚?,如包拆分?包封裝等。 其內(nèi)部設(shè)計(jì)的子模塊有crc. v,pid decoder. v, pid encoder. v, rec packet. v,trans packet. v, timeout. v 等等。 實(shí)現(xiàn)傳輸信息包中pid 的編碼, 譯碼以及對(duì)pid 的檢錯(cuò)等功能, 同時(shí)還包括對(duì)信息包的crc 檢測(cè)及對(duì)數(shù)據(jù)傳輸過(guò)程中超時(shí)的檢測(cè)。
3 系統(tǒng)驗(yàn)證環(huán)境
為了驗(yàn)證嵌入式USB2. 0 主機(jī)控制器, USB 接口用了PHY 模型和設(shè)備模型, 總線接口采用CPU和存儲(chǔ)器模型, 如圖4 所示, 外部CPU 和存儲(chǔ)器有兩個(gè)通道與嵌入式USB 主機(jī)作用: 寄存器通道和DMA通道。 CPU 通過(guò)寄存器通道來(lái)讀寫嵌入式USB 主機(jī)中配置寄存器中數(shù)據(jù), 而DMA 通道主要用來(lái)交換存儲(chǔ)器模型與嵌入式USB 主機(jī)中數(shù)據(jù)緩沖器中數(shù)據(jù)。

圖4 嵌入式USB2. 0 主機(jī)控制器仿真環(huán)境
3. 1 CPU 模型
CPU 工作在12~ 160MHz 時(shí)鐘頻率。 CPU 模型通過(guò)讀命令文件master. cmd 來(lái)觸發(fā)嵌入式USB 主機(jī)開始配置寄存器的讀寫。
3. 2 存儲(chǔ)器模型
在IN 傳輸中, 存儲(chǔ)器模型通過(guò)DMA 通道從嵌入式USB 主機(jī)中數(shù)據(jù)緩沖器模塊讀出數(shù)據(jù), 并將讀出的數(shù)據(jù)寫入data. dmp 文件中, 在OUT 傳輸中,嵌入式USB 主機(jī)通過(guò)DMA 通道讀存儲(chǔ)器模型中的數(shù)據(jù)到數(shù)據(jù)緩沖器, 而存儲(chǔ)器模型中數(shù)據(jù)是存放在ehin. dat 文件中。
3. 3 PHY 模型
此處的PHY 模型包括USB 主機(jī)方的PHY1 和USB 設(shè)備方的PHY2, 本設(shè)計(jì)主要用于高速和全速的數(shù)據(jù)傳輸, 所以接入的PHY 模型為2. 0 版本。 它主要功能是串行數(shù)據(jù)與并行數(shù)據(jù)之間相互轉(zhuǎn)換, 因?yàn)樵谇度胧経SB 主機(jī)中都為并行數(shù)據(jù), 而在USB電纜中是以串行數(shù)據(jù)傳輸?shù)摹?/FONT>
3. 4 USB 設(shè)備模型
此模塊通過(guò)讀命令文件dev1. cmd 來(lái)控制USB信息包的發(fā)送與接收, 若IN 傳輸時(shí)設(shè)備模型將dev1 sen. dat 文件中所包含的數(shù)據(jù)發(fā)送給主機(jī), 在OUT 傳輸中將主機(jī)輸出的數(shù)據(jù)也儲(chǔ)存在dev1rcv. dat 中。
為了方便觀察仿真結(jié)果, 設(shè)計(jì)中還加入了一個(gè)驗(yàn)證傳輸中數(shù)據(jù)對(duì)錯(cuò)的模塊, 在IN 傳輸中將設(shè)備模型中從dev1 sen. dat 發(fā)出的數(shù)據(jù)與USB 主機(jī)收到的數(shù)據(jù)進(jìn)行對(duì)比, 在OUT 傳輸時(shí)將進(jìn)入U(xiǎn)SB 主機(jī)的數(shù)據(jù)與設(shè)備模型中dev1 rcv. dat 收到的數(shù)據(jù)進(jìn)行對(duì)比, 由此可以清楚的看出在USB 主機(jī)與設(shè)備之間是否正確傳輸數(shù)據(jù)。
這里采用nc2verilog 分別對(duì)高速和全速中IN,OUT 傳輸以及枚舉過(guò)程進(jìn)行的功能仿真, 部分仿真波形如圖5、圖6 所示。 可以看到: 全速和高速的整個(gè)枚舉過(guò)程中狀態(tài)機(jī)enmumerate state 的變化直到傳輸使能; 整個(gè)主控制狀態(tài)機(jī)mast ectrlst 中各狀態(tài)的轉(zhuǎn)換; 在每次數(shù)據(jù)傳輸中utmtxready, utm rxactive, utm rxvalid 以及utm rx2validh 的跳變過(guò)程。 在高速和全速的仿真中, 驗(yàn)證先IN 傳輸再OUT 傳輸, 即先從USB 設(shè)備模型中dev1sen. dat 文件中讀出數(shù)據(jù)進(jìn)行4 個(gè)信息包的IN 傳輸, 然后執(zhí)行4 個(gè)信息包的OUT 傳輸。

圖5 高速數(shù)據(jù)批量傳輸仿真圖

圖6 全速數(shù)據(jù)批量傳輸仿真圖
4 FPGA 驗(yàn)證
FPGA 驗(yàn)證環(huán)境如圖7 所示, 驗(yàn)證中外接一塊USB2. 0 的PHY 子板和memory 子板, 其中FPGA芯片為Altara 公司的stratixIIs180, 其中實(shí)現(xiàn)嵌入式USB 主機(jī)IP 核和CPU 平臺(tái), memory 子板用來(lái)實(shí)現(xiàn)嵌入式軟件, 在驗(yàn)證時(shí)分別接入支持高速和全速的U 盤作為設(shè)備, 對(duì)U 盤進(jìn)行了數(shù)據(jù)的讀寫, 不管是在高速下還是在全速下都能正常完成U 盤的讀寫過(guò)程, 并與預(yù)期的讀寫數(shù)據(jù)一致。

圖7 嵌入式USB2. 0 主機(jī)控制器驗(yàn)證環(huán)境
從nc2verilog 的功能仿真和FPGA 驗(yàn)證表明, 此嵌入式USB2. 0 主機(jī)控制器IP 核成功地實(shí)現(xiàn)了高速和全速下數(shù)據(jù)傳輸。
5 結(jié)束語(yǔ)
此嵌入式USB2. 0 主機(jī)控制器IP 核在設(shè)計(jì)中采用了乒乓緩沖模式提高了數(shù)據(jù)傳輸?shù)乃俣龋?還采用了DMA master 和slave 模式, 很大程度的減小了CPU 的要求, 在仿真和FPGA 驗(yàn)證中分別采用了CPU 頻率為12MHz 和160MHz, 此IP 核都通過(guò)了功能驗(yàn)證。 目前已流片, 且通過(guò)芯片驗(yàn)證。 因此可以說(shuō)此IP 核能夠獨(dú)立地用于數(shù)碼相機(jī), MP3 播放器里。 這樣, 這些嵌入式的主機(jī)就可以直接和移動(dòng)硬盤、打印機(jī)等設(shè)備連接用了, 不需要通過(guò)PC 機(jī)來(lái)進(jìn)行相互的文件和數(shù)據(jù)交換, 實(shí)現(xiàn)了脫離PC 機(jī)的夢(mèng)想, 方便了更多使用者。
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 什么是氫氧燃料電池,氫氧燃料電池的知識(shí)介紹2025/8/29 16:58:56
- SQL核心知識(shí)點(diǎn)總結(jié)2025/8/11 16:51:36
- 等電位端子箱是什么_等電位端子箱的作用2025/8/1 11:36:41
- 基于PID控制和重復(fù)控制的復(fù)合控制策略2025/7/29 16:58:24
- 什么是樹莓派?一文快速了解樹莓派基礎(chǔ)知識(shí)2025/6/18 16:30:52
- PCB高頻高速信號(hào)布線設(shè)計(jì)核心規(guī)范(實(shí)操版)
- 基于FPGA的FIR濾波器硬件實(shí)現(xiàn):架構(gòu)優(yōu)化與資源管理
- 工業(yè)自動(dòng)化設(shè)備連接器選型指南
- 提高電源管理IC可靠性的設(shè)計(jì)方法
- MOSFET柵極驅(qū)動(dòng)電路設(shè)計(jì)技巧
- PCB電源完整性設(shè)計(jì)核心規(guī)范(PowerIntegrity)
- 工業(yè)電源與消費(fèi)級(jí)電源的差異
- 機(jī)器學(xué)習(xí)在濾波器設(shè)計(jì)中的應(yīng)用:自動(dòng)化優(yōu)化與性能預(yù)測(cè)
- 連接器失效的常見原因分析
- 過(guò)流、過(guò)壓保護(hù)在電源IC中的實(shí)現(xiàn)









