<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系統組成及模塊設計

USB系統組成及模塊設計

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

3.3 USB協(xié)議層

  協(xié)議層主要分成三個(gè)子模塊:解包模塊、打包模塊和協(xié)議引擎模塊。這一層主要是將經(jīng)過(guò)串口接口引擎模塊過(guò)來(lái)的數據進(jìn)行解包,剔除USB協(xié)議中的信息。同時(shí)將端點(diǎn)中要發(fā)送的數據,在協(xié)議引擎控制下進(jìn)行相應的打包,然后通過(guò)SIE模塊傳送給USB主機。

3.3.1 解包模塊

  本模塊主要將接收到的信息包數據進(jìn)行解析,解析出包標識(PID),端點(diǎn)地址和USB設備地址以及包含在包中的有效數據。在解包時(shí),對令牌包進(jìn)行CRC5校驗,對數據包進(jìn)CRCl6檢驗,若出錯則進(jìn)行相應的出錯處理。從上面所述可知,任何包都有同步字段而同步字段在串口接口引擎模塊中已經(jīng)除去了,因此本模塊不用關(guān)心同步字段。整個(gè)解包數據流如圖3所示。


整個(gè)解包過(guò)程如下:首先判斷接收的包是什么包,若為T(mén)OKEN包(0UT或IN或SOF或SETUP或ACK或NAK或STALL或PRE)則轉入到TOKEN包的處理進(jìn)程,若為數據包(DATA0或DATAl)則轉入到DATA包的處理進(jìn)程。在TOKEN包或DATA包中若發(fā)現數據有錯則丟棄此包并報錯。
3.3.2 打包模塊
  根據PE送來(lái)的PID組織相應的信息包,把要發(fā)送的數據安排在相應的數據包,或者組織令牌包。發(fā)送令牌包時(shí),不必產(chǎn)生CRC5校驗位。在發(fā)送數據包時(shí),需要把有效數據的CRCl6校驗位放在末尾一起發(fā)送。這個(gè)模塊主要就是如何把協(xié)議層引擎模塊送過(guò)來(lái)的數據進(jìn)行打包,打包的概念其實(shí)質(zhì)就是把要發(fā)送的數據根據其相應的信息安排相應的發(fā)送順序。同樣打包的過(guò)程中也不用考慮同步字段,同步字段在串口接口引擎層加入。整個(gè)打包數據流如圖4所示。
3.3.3 協(xié)議層引擎模塊
  在USB設備中,某一個(gè)時(shí)刻和主機通信的只能是一個(gè)端點(diǎn),當前操作都基于這個(gè)端點(diǎn)地址。主機不能同時(shí)和幾個(gè)端點(diǎn)進(jìn)行通信,端點(diǎn)的屬性在設備和主機剛開(kāi)始連接時(shí)進(jìn)行的枚舉過(guò)程中已經(jīng)確定,保存在各端點(diǎn)對應的寄存器中,比如是IN還是OUT端點(diǎn),是支持控制傳輸、批量傳輸還是中斷傳輸的端點(diǎn)等。協(xié)議引擎模塊是整個(gè)協(xié)議層的核心控制單元,控制了其他所有模塊的工作方式,根據當前端點(diǎn)的配置或當前狀態(tài)處理傳輸事務(wù),并在傳輸事務(wù)中實(shí)時(shí)更新控制與狀態(tài)寄存器。他的功能包括:有效處理IN,OUT和SETUP事務(wù),確定當前傳輸事務(wù)要操作的端點(diǎn)地址,正確應答各種包和管理數據的發(fā)送和接收,同時(shí)實(shí)現USB協(xié)議中的錯誤恢復機制。
3.4 端點(diǎn)控制模塊和端點(diǎn)模塊
  端點(diǎn)模塊:端點(diǎn)其實(shí)就是USB進(jìn)行通信時(shí),用于存數據的緩沖區,為了提高數據存取的速度,本的端點(diǎn)設計成FIFO。端點(diǎn)控制模塊:主要是端點(diǎn)控制寄存器和端點(diǎn)狀態(tài)寄存器,此模塊中包含了USB 的頂層控制和狀態(tài)寄存器。如USB設備的狀態(tài)控制寄存器、設備地址寄存器、中斷屏蔽寄存器和中斷源寄存器等。為了增加靈活性,在設計時(shí)針對每一個(gè)端點(diǎn)分別設計了設置和功能相同但地址不同的寄存器,包括端點(diǎn)的控制狀態(tài)寄存器、中斷源寄存器、中斷屏蔽寄存器、緩沖區的指針寄存器。端點(diǎn)根據協(xié)議可以配置1到16個(gè),在實(shí)際設計中根據本身系統需要可以對USB 配置端點(diǎn)數,增加了USB IP核端點(diǎn)可擴展性。
3.5 總線(xiàn)適配器模塊
  此模塊是為了提高本IP核的可重用性而設計的。他主要包括WishBone總線(xiàn)接口、AMBA ASB總線(xiàn)接口和相應的配置寄存器。若使用于WishBone總線(xiàn)結構的SoC中,則在綜合前通過(guò)宏定義進(jìn)行設置啟用WishBone總線(xiàn)接口,這樣整個(gè)USB IP核可以無(wú)縫接入WishBone總線(xiàn)結構的SoC中。若使用于A(yíng)MBA ASB總線(xiàn)結構的SoC中,則在綜合前通過(guò)宏定義進(jìn)行設置啟用AMBA總線(xiàn)接口無(wú)縫接入其SoC中。由于是在綜合前通過(guò)宏定義的,因此在實(shí)際綜合的時(shí)候,只會(huì )將宏定義的總線(xiàn)模塊綜合成實(shí)際電路,而不會(huì )兩個(gè)總線(xiàn)接口模塊都給綜合,節省資源。同時(shí)當此IP核要應用于其他的總線(xiàn)結構SoC中,如Altera的Avalon總線(xiàn),則只要根據此總線(xiàn)協(xié)議再設計一個(gè)總線(xiàn)接口模塊,在綜合時(shí)啟用此總線(xiàn)接口模塊就可以將此IP核直接應用于此SoC中。因此本USB IP核對于不同總線(xiàn)的SoC利用總線(xiàn)適配器使具體較強靈活性,可重用性強。
4 FPGA驗證
  本USB IP核已經(jīng)應用于一款數據采集單芯片系統中。因此在進(jìn)行FPGA驗證時(shí),是將此IP核嵌入于此單芯片系統中進(jìn)行的。此單芯片系統中嵌入UART模塊可與PC機的串口進(jìn)行通信,此系統中的增強型8051MCU核對整個(gè)USB IP核進(jìn)行相應的控制。FPGA驗證采用了Xilinx公司的ISE集成開(kāi)發(fā)環(huán)境,在調試的過(guò)程中用了ChipSeope Pro軟邏輯分析儀。硬件平臺用Xilinx公司的Virtex4系列中XC4VLX60器件。
  整個(gè)過(guò)程如下:

 ?。?)USB從設備與PC機的USB接口連接,此時(shí)USB從設備要完成設備枚舉的過(guò)程。

 ?。?)設備枚舉完成PC機會(huì )提示驅動(dòng)程序還沒(méi)有裝,要求加載驅動(dòng)程序在PC機上加驅動(dòng)程序,USB的驅動(dòng)程序直接與PC機的操作系統聯(lián)系,項目中的USB接口是在WindowsXP操作系統中調試的。

 ?。?)在驅動(dòng)程序加載完成后,PC機會(huì )提示“現在可以正常通訊”,表明現在可以利用USB的應用層軟件進(jìn)行通信了。

 ?。?)將數據從PC機的應用層輸入,通過(guò)USB接口發(fā)給嵌入USBIP核的數據采集SoC芯片,然后通過(guò)其中的SoC中UART將數據返回給PC機,經(jīng)過(guò)比較兩者數據完全相同,驗證表明了此IP核的正確。

  圖5是在進(jìn)行IP核FPGA驗證時(shí),設備枚舉階段PC的USB主機發(fā)送給USBIP核的幀開(kāi)始(SOF)包。
  
fs_clk為從PC機發(fā)過(guò)來(lái)的比特流恢復過(guò)來(lái)的12MHz的時(shí)鐘信號。rx_data表示收到的數據,如圖5所示在rx_valid高電平時(shí),表明收到的rx_data是有效的,從圖中可以看出收到了十六進(jìn)制數“A5—43—85”,此包正是PC機發(fā)給USBIP核的SOF包。rxdp和rx_dn是串口接口引擎模塊中的信號,他經(jīng)過(guò)一個(gè)三態(tài)門(mén)與圖1所示的D+和D一相連接。由圖中可以看出,在“85”收到時(shí),rxdp和rx_dn的波形表明收到了PC機發(fā)過(guò)來(lái)的兩個(gè)fS_clk時(shí)鐘周期的“SE0”表示包結束的信號。

5結語(yǔ)

  本USBIP核在設計時(shí),充分考慮到可重用性,其USB端點(diǎn)可進(jìn)行相應的配置和擴展。同時(shí)針對目前SoC中常用的WishBone總線(xiàn)和AMBAASB總線(xiàn)結構設計了總線(xiàn)適配器,在綜合前進(jìn)行相關(guān)的宏定義就可以無(wú)縫接入SoC中。本USBIP核在實(shí)際項目中,與MCU核以及其他的IP核集成于一款數據采集SoC芯片中,該數據采集SoC已經(jīng)處于版圖后仿真階段,即將流片。

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

評論


相關(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>