新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 一種嵌入式USB2.0主機(jī)控制器IP核的研究與設(shè)計(jì)

一種嵌入式USB2.0主機(jī)控制器IP核的研究與設(shè)計(jì)

作者: 時(shí)間:2013-08-31 來源:網(wǎng)絡(luò) 收藏

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)來選擇DMA 工作模式, 如下:

  此選擇信號(hào)值由配置寄存器配置, 當(dāng)總線沒有外部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)過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ù)傳輸過程不需要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)過CPU 來啟動(dòng)外部DMA 來搬運(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ù)緩沖器模塊用來緩沖從設(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 來取出其中的數(shù)據(jù), 同樣在OUT 傳輸中, 將從CPU 過來的數(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ì)中通過圖3 的狀態(tài)機(jī)來實(shí)現(xiàn)根集線器對(duì)設(shè)備的枚舉過程。

圖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ù)傳輸過程中超時(shí)的檢測(cè)。

  3 系統(tǒng)驗(yàn)證環(huán)境

  為了驗(yàn)證嵌入式USB2. 0 主, USB 接口用了PHY 模型和設(shè)備模型, 總線接口采用CPU和存儲(chǔ)器模型, 如圖4 所示, 外部CPU 和存儲(chǔ)器有兩個(gè)通道與嵌入式USB 主機(jī)作用: 寄存器通道和DMA通道。 CPU 通過寄存器通道來讀寫嵌入式USB 主機(jī)中配置寄存器中數(shù)據(jù), 而DMA 通道主要用來交換存儲(chǔ)器模型與嵌入式USB 主機(jī)中數(shù)據(jù)緩沖器中數(shù)據(jù)。

圖4 嵌入式USB2. 0 主仿真環(huán)境



關(guān)鍵詞: USB2.0主 機(jī)控制器 IP核

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉