一種嵌入式USB2.0主機控制器IP核的研究與設計
2. 2 配置寄存器
配置寄存器主要分為兩種: 狀態(tài)寄存器和控制寄存器。為了提高代碼可讀性, 設計中定義了5 個32 位寄存器: USB 命令寄存器; 端口狀態(tài)寄存器;USB 信息包域A 寄存器; USB 信息包域B 寄存器;傳輸狀態(tài)寄存器。 這些寄存器分別寄存數(shù)據(jù)傳輸中的一些控制命令, 傳輸狀態(tài), 端口狀態(tài)改變情況以及傳輸數(shù)據(jù)包特性等。
2. 2. 1 DMA 控制器
本設計將DMA 控制器設計為兩種工作模式:
DMA master 模式和DMA slave 模式。 采用一個模式選擇信號來選擇DMA 工作模式, 如下:
此選擇信號值由配置寄存器配置, 當總線沒有外部DMA 控制器控制時, USB 主機中DMA 控制器選擇工作在master 模式, 在這種模式中, 當USB主機有數(shù)據(jù)傳輸?shù)男枨髸r, DMA 控制器向CPU 發(fā)起請求, CPU 將對DMA 控制器配置數(shù)據(jù)傳輸?shù)钠鹗嫉刂罚?數(shù)據(jù)傳輸總大小, 傳輸數(shù)據(jù)包大小等信息,并釋放總線給DMA 控制器接管, 此時DMA 控制器完全接管對總線的控制, USB 主機與存儲器之間數(shù)據(jù)傳輸不經(jīng)過CPU, 而直接交換USB 主機外部存儲器和USB 主機內數(shù)據(jù)緩沖器之間數(shù)據(jù)。 當數(shù)據(jù)傳輸結束后DMA 控制器通知CPU 重新接管總線。
DMA master 模式一般用于高速地傳送成組的數(shù)據(jù)。
DMA mater 模式的主要優(yōu)點是速度快。 由于整個數(shù)據(jù)傳輸過程不需要CPU 干預, 因此就省去了CPU操作時間, 減少了CPU 工作負擔, 減小了對CPU 的要求, 很大程度的降低成本。 當總線有外部DMA 控制器接管時, USB 主機中DMA 控制器工作在slave模式, 此時USB 主機內DMA 控制器模塊不起作用, USB 主機與外部存儲器之間數(shù)據(jù)傳輸必須經(jīng)過CPU 來啟動外部DMA 來搬運外部存儲器和USB主機內數(shù)據(jù)緩沖器中的數(shù)據(jù), 這樣就加大了CPU 工作量, 對CPU 要求也相應的提高, 數(shù)據(jù)傳輸速度也有所下降。
2. 2. 2 數(shù)據(jù)緩沖器
數(shù)據(jù)緩沖器模塊用來緩沖從設備端輸入的數(shù)據(jù)和CPU 端要輸出的數(shù)據(jù)。 本設計采用乒乓緩沖buffer0, buffer1, 在讀buffer0 數(shù)據(jù)的同時在向buffer1 里寫入下一個數(shù)據(jù), 然后讀buffer1 的數(shù)據(jù)并寫數(shù)據(jù)到buffer0, 這樣交替讀寫數(shù)據(jù), 很大程度的提高了數(shù)據(jù)傳輸速度。 在IN 傳輸中, 將從設備端輸入的數(shù)據(jù)寫入數(shù)據(jù)緩沖器中, 數(shù)據(jù)寫完后會發(fā)起一個中斷信號通知CPU 來取出其中的數(shù)據(jù), 同樣在OUT 傳輸中, 將從CPU 過來的數(shù)據(jù)寫入數(shù)據(jù)緩沖器中, 隨后將寫入的數(shù)據(jù)傳輸?shù)皆O備端。
2. 2. 3 根集線器及PIE
根集線器其實也是一種特殊的設備, 它下游端口還可以繼續(xù)串聯(lián)其他集線器, 最終能夠為127 個USB 設備提供連接端口, 根集線器主要任務是管理連接到根集線器上的設備以及負責設備與主機之間的數(shù)據(jù)通信。 設計中通過圖3 的狀態(tài)機來實現(xiàn)根集線器對設備的枚舉過程。
圖3 枚舉狀態(tài)機
有高速能力的設備在第一次連接到USB 總線時必須使用全速。 而后, 該設備在總線重置階段中向根集線器發(fā)送一個Chirp K, 如上游的集線器支持高速速率, 則應答一個Chirp K 與Chirp J 交替序列,這樣高速集線器和高速設備都使用高速傳輸速率通信, 如根集線器不支持高速速率, 則忽略高速設備發(fā)送的Chirp K, 即不應答ChirpK 與Chirp J 交替序列。 這樣高速設備必須維持在全速模式。
PIE 模塊在設計中實現(xiàn)對傳輸?shù)男畔幚?,如包拆分?包封裝等。 其內部設計的子模塊有crc. v,pid decoder. v, pid encoder. v, rec packet. v,trans packet. v, timeout. v 等等。 實現(xiàn)傳輸信息包中pid 的編碼, 譯碼以及對pid 的檢錯等功能, 同時還包括對信息包的crc 檢測及對數(shù)據(jù)傳輸過程中超時的檢測。
3 系統(tǒng)驗證環(huán)境
為了驗證嵌入式USB2. 0 主機控制器, USB 接口用了PHY 模型和設備模型, 總線接口采用CPU和存儲器模型, 如圖4 所示, 外部CPU 和存儲器有兩個通道與嵌入式USB 主機作用: 寄存器通道和DMA通道。 CPU 通過寄存器通道來讀寫嵌入式USB 主機中配置寄存器中數(shù)據(jù), 而DMA 通道主要用來交換存儲器模型與嵌入式USB 主機中數(shù)據(jù)緩沖器中數(shù)據(jù)。
圖4 嵌入式USB2. 0 主機控制器仿真環(huán)境
評論