<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 一種高速USB設備控制器IP核的設計與實(shí)現

一種高速USB設備控制器IP核的設計與實(shí)現

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

3.2.3 PL

  協(xié)議層模塊是整個(gè)SIE 的核心,控制著(zhù)整個(gè)數據傳輸??偭鞒虉D如圖4(a)所示。該過(guò)程主要有兩個(gè)步驟:第一,檢查PID 的有效性;第二,如果PID 有效,則根據PID 確定數據及傳輸類(lèi)型。因此該模塊實(shí)際上是4 個(gè)進(jìn)程處理:IN、OUT、SETUP 事務(wù)以及特殊事務(wù)。在具體的模塊設計實(shí)現中, 由于解包(Packet disassemble)、打包(Packet assemble)過(guò)程在4 個(gè)進(jìn)程中都必不可少,所以統一編寫(xiě)而在PL 頂層調用。內部狀態(tài)機的翻轉以及復位都是以事務(wù)為周期,所以實(shí)現起來(lái)比較容易。在接收數據時(shí),解析出各種令牌以及把數據包的內容寫(xiě)入RAM 中, 完畢以后填寫(xiě)相應的接收信息。發(fā)送數據時(shí),從RAM 中讀取數據并形成正確的數據PID。如果是0 長(cháng)度的數據,則只有2 個(gè)字節的全0 CRC16 校驗碼。在一個(gè)事務(wù)的握手(handshake)階段,則根據接收情況提交握手信號。圖4(b)中給出了一個(gè)PID 為IN 令牌包的流程。

  在USB 規范中,PID 為SETUP 標志的控制傳輸也稱(chēng)作消息(Message)傳輸,其實(shí)際上可以理解成為一種特殊的OUT 傳輸, 主要用來(lái)對USB 設備的配置以及向設備發(fā)送和數據傳輸相關(guān)的命令字。有著(zhù)固定的格式:以PID[3:0]=1101 的SETUP 令牌包開(kāi)始的建立階段+數據階段+狀態(tài)階段。數據階段可以沒(méi)有, 如HOST 給設備下放地址時(shí)的控制傳輸,但是狀態(tài)階段是必需的,以確保傳輸的正確性。

  3.2.4 MIA

  存儲接口仲裁。存儲管理設計的好壞直接影響控制器整體性能,需要謹慎處理。對存儲單元進(jìn)行讀、寫(xiě)操作者是HOST 與MCU 兩者。設計中要注意的是MCU 的讀寫(xiě)信號與內部時(shí)鐘的同步問(wèn)題,這在后面部分還會(huì )進(jìn)一步討論。

  3.2.5 DPRAM 與CSR

  DPRAM 暫存傳輸中事務(wù)的數據, 同時(shí)把該次事務(wù)的接收狀態(tài)信息寫(xiě)入對應的CSR(狀態(tài)控制寄存器)。本設計把DPRAM 配置成端點(diǎn)FIFO,共16個(gè), 總容量為8K。MCU 的工作是基于中斷的,當SIE 給出中斷時(shí),首先會(huì )讀出相應端點(diǎn)的CSR 從而知道中斷產(chǎn)生的原因以及上次事務(wù)的狀態(tài):成功或失敗。若失敗則進(jìn)入相應的中斷例行程序。

  3.3 設計中若干問(wèn)題及其解決

  3.3.1 端點(diǎn)的存儲管理單元(MMU)

  在USB1.x 規范中,由于數據有效載荷較小,純粹意義上的FIFO, 由于不需尋址即可實(shí)現存取操作、邏輯控制簡(jiǎn)單等原因而作為端點(diǎn)的最好實(shí)現方法。但在USB2.0 規范中,由于帶寬、吞吐量劇增,且FIFO 不便動(dòng)態(tài)配置等原因, 故端點(diǎn)存儲選擇RAM來(lái)實(shí)現。無(wú)論在FPGA 設計還是ASIC 設計中,都可使用兩種類(lèi)型的RAM:單口(single port)RAM 與雙口(dual port)RAM。對于雙口RAM,其特別之處在于可同時(shí)讀寫(xiě), 即HOST 與MCU 可以同時(shí)對同一個(gè)端點(diǎn)進(jìn)行讀寫(xiě)操作。比如在由HOST 到設備方向的高速同步傳輸中,如果使用SPRAM 的話(huà),同步端點(diǎn)的深度至少應配置為1024 (除非使用雙緩沖)且必須等到端點(diǎn)"Full"然后才產(chǎn)生中斷讓MCU 讀取端點(diǎn)內的數據。因此為了實(shí)現同步傳輸,SPRAM 配置實(shí)現的話(huà),為了節省存儲單元而一般需要雙緩沖機制, 但增加了端點(diǎn)讀寫(xiě)控制的復雜性; 而雙口RAM 由于能夠同時(shí)對不同地址的存儲單元進(jìn)行讀寫(xiě)(如果同時(shí)讀寫(xiě)相同地址的話(huà),則看RAM 具體的時(shí)序了),因此雙口RAM 只需要很少的緩沖存儲容量就可以滿(mǎn)足了, 為了使MCU 能夠及時(shí)地讀取數據,同時(shí),又不致對MCU 的中斷過(guò)于頻繁,只要在寫(xiě)入到端點(diǎn)深度的一半處產(chǎn)生中斷信號即可。因此設計中采用DPRAM,既可節省存儲資源(減小了芯片面積),又可提高同步傳輸的"實(shí)時(shí)同步"性。

  3.3.2 異步時(shí)鐘域之間的數據交互

  從前面的功能劃分可以看到,整個(gè)USB 分成3 個(gè)不同的時(shí)鐘域。時(shí)域1 和時(shí)域2 之間實(shí)際上是同步的, 因為PHY 為時(shí)域2 提供了與數據同步的30MHz 的時(shí)鐘,所以這里的異步時(shí)鐘域主要是指時(shí)域2 與時(shí)域3 之間, 這在SIE 與MCU 之間的讀寫(xiě)信號很容易看到。由于MCU 發(fā)出的最小讀寫(xiě)有效脈寬比時(shí)域2 內的時(shí)鐘周期要小很多,比如在本設計中最小讀寫(xiě)脈寬為15ns,而內部的時(shí)鐘為30MHz(T=33.3ns)。當MCU 要讀取數據時(shí),可以采用"超前送數"策略,即根據MCU 的讀寫(xiě)命令字在讀有效信號來(lái)之前把數據放入三態(tài)數據輸出端口的輸入端, 用讀有效電平作為三態(tài)的開(kāi)關(guān)即可。

  MCU 讀完本次數據以后,SIE 內部的異步讀寫(xiě)控制邏輯立即對內部的MMU 產(chǎn)生一個(gè)讀請求(如果還沒(méi)有讀空),準備好下一個(gè)數據。整個(gè)MMU 收到的讀寫(xiě)信號是由異步讀寫(xiě)控制邏輯內部產(chǎn)生的,對MCU 接口透明, 該方法在FPGA 驗證中實(shí)現通過(guò)。

  上述異步讀寫(xiě)控制邏輯的設計是基于8051 類(lèi)MCU的,值得注意的是,若MCU 是wishbone SoC 總線(xiàn)規范兼容的接口, 則不需上述復雜的讀寫(xiě)控制邏輯,在這兩個(gè)時(shí)鐘域之間交換數據時(shí),為了解決亞穩態(tài)問(wèn)題,只須增加一級由本地時(shí)鐘觸發(fā)的寄存器實(shí)現作為過(guò)渡即可。

  3.3.3 傳輸中一些錯誤檢測及其處理

  為了精簡(jiǎn)MCU 的編程,設計中提出"在保證傳輸正確的基礎上盡量減少中斷" 的設計原則。

  USB2.0 規范中列出了種類(lèi)繁多的錯誤產(chǎn)生及其相應的檢測、恢復方法。筆者認為,USB 設計者沒(méi)有必要對傳輸過(guò)程中發(fā)生的任何錯誤都向外部MCU 提出中斷,對規范中部分類(lèi)型的錯誤,內部應有處理及恢復機制。例如超時(shí)的發(fā)生有幾種情形:正確接受完畢來(lái)自HOST 的非同步數據包后,必須及時(shí)返回一個(gè)成功接收握手;HOST發(fā)出IN 令牌包接收到數據以后, 同樣必須及時(shí)地返回握手包,否則超時(shí)。對后者,沒(méi)有必要馬上向MCU 產(chǎn)生中斷, 下一個(gè)IN 令牌到來(lái)時(shí)自動(dòng)重傳上次數據, 且最多嘗試3 次。若問(wèn)題依舊, 再中斷MCU,說(shuō)明設備上游的線(xiàn)路可能出了故障。另一個(gè)就是Toggle 同步機制, 出錯也完全沒(méi)有必要通知MCU,可在協(xié)議實(shí)現的內部來(lái)處理。值得一提的是,控制傳輸比較特殊:在控制傳輸的建立階段,SETUP令牌包后面的數據包的PID 一定是DATA0,然后在這個(gè)基礎上進(jìn)行觸發(fā)切換。在狀態(tài)階段的數據包PID 肯定是DATA1。否則,在FPGA 驗證中,即使觸發(fā)位出錯,主機還是會(huì )返回ACK,造成數據已正常接收的假象,而實(shí)際上主機已摒棄了數據。

  4 系統仿真及FPGA驗證

  在設計的編碼過(guò)程中,先分別對各模塊進(jìn)行了功能仿真,子模塊仿真正確后對整個(gè)模塊進(jìn)行了整體功能仿真,然后綜合代碼、設置引腳、自動(dòng)布局布線(xiàn)后下載到FPGA 內。本設計FPGA 器件采用Altera 的ACEX1K EP1K100QC208-3。USB 電纜的一端接在測試板的transceiver 上, 另一端接至PC機的USB 接口上,如果SIE 邏輯功能正確,則Windows會(huì )識別出一個(gè)新的USB 設備, 完成了PnP 過(guò)程。為了功能驗證和應用測試,額外編寫(xiě)了一個(gè)模塊,用于USB 設備枚舉時(shí),模擬MCU 的部分功能。

  Windows 在對USB 設備進(jìn)行枚舉時(shí),按如下順序進(jìn)行:

 ?。?) 主機發(fā)出一個(gè)復位信號;

 ?。?) 初次得到設備描述符的控制傳輸;

 ?。?) 給設備分配地址。數據包DATA0 的第三個(gè)Byte 就是分配的地址;

 ?。?) 以新的地址獲取設備描述符;

 ?。?) 初次獲取設備配置描述符,以確定配置描述符+接口描述符+端點(diǎn)描述符的長(cháng)度,這次主機只獲取9 個(gè)字節的配置描述符。

 ?。?) 獲取字符串描述符(可能沒(méi)有),根據設備描述符中是否有STRING 索引而定;

 ?。?) 獲取完整的設備配置描述符,一次性獲取相應長(cháng)度的上述三個(gè)描述符。

  若以上步驟都正確, 則主機發(fā)現新的USB 設備,要為該設備安裝驅動(dòng)程序。然后利用Windriver可以在Windows 環(huán)境看到這個(gè)USB 設備以及相關(guān)端點(diǎn)信息等資源。在該驅動(dòng)程序的控制臺上,可以對USB 設備控制器的管道進(jìn)行讀寫(xiě)操作,并且報告操作結果,以驗證核的功能是否正確。

  5 結束語(yǔ)

  系統邏輯功能仿真、綜合后門(mén)級網(wǎng)表(gate levelnetlist) 功能仿真以及最后的FPGA 驗證都表明:本設計中,雙口RAM 配置、異步時(shí)鐘域之間讀寫(xiě)時(shí)的"超前送數策略"以及"盡可能減少錯誤中斷產(chǎn)生"原則,簡(jiǎn)化了編碼實(shí)現以及外部MCU 編程,在實(shí)現 設備控制器的設計過(guò)程中是有效的、切實(shí)可行的。該方案實(shí)現的USB2.0 設備控制器IP 核便于修改、易于實(shí)現,既可以進(jìn)一步完成ASIC 設計,也可作為一個(gè)功能模塊嵌入到SOC 中。

參考文獻:

[1].bulkdatasheethttp://www.dzsc.com/datasheet/bulk_2523104.html.
[2].ISP1501 datasheethttp://www.dzsc.com/datasheet/ISP1501+_1083529.html.


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 高速USB 設備控制器 IP核

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>