女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>可編程邏輯>基于FPGA的USB2.0控制器設計資料下載

基于FPGA的USB2.0控制器設計資料下載

2021-04-12 | pdf | 373.98KB | 次下載 | 5積分

資料介紹

如圖1所示由視頻A/D采集的原始視頻數據,在Philips公司生產的TM1300專用視頻處理器中壓縮后,通過USB控制器送至PC機。PC機的整個通過USB控制器傳輸到TM1300,解壓后發送至視頻D/A。1 控制器結構原理USB2.0控制器結構框圖如圖2所示。控制器主要由兩個部分組成,其一為與外設的接口,另一個是內部協議層邏輯PL(Protocol Layer)。內部存儲器仲裁器實現對內部DMA和外部總線對存儲器訪問之間的仲裁。PL則實現USB的數據I/O和控制。接口有三種:一種是與微控制器之間的功能接口;一種是與單口同步靜態存儲器(SSRAM)之間的接口;另外一種是與物理層之間的接口。這里符合UTMI(USB Transceiver Macrocell Interface)規范定義。2 控制器實現控制器接口的信號框圖如圖3所示。存儲器采用標準的單口SRAM,其信號接口由32位數據線SRAM_DATA、15位地址線SRAM_ADDR及讀寫信號(SRAM_WE和SRAM_RD)組成,系統所需SRAM的容量為2 15×32bit=128KB。而與微控制器之間的接口信號包括32位數據線DATA、18位地址線ADDR以及DMA請求和響應信號(DMA_REQ和DMA_ACK)。由于要支持到128KB,需要17位地址線,另外還需要一根地址線來選通SSRAM和USB控制器內部的寄存器,總共需要18根地址線addr[17:0]。定義如下:USB_RF_SEL <= !addr[17];USB_MEM_SEL <=addr[17];第18位地址addr[17]為高時選擇緩沖存儲器,否則選擇內部寄存器。地址addr[16:2]直接用于存儲器SSRAM的地址。2.1 UTMI接口UTMI接口信號包括:與發送數據相關的信號(TxValid、TxReady等),與接收數據相關的信號(RxActive、RxValid、RxError等)以及16位雙向數據線。在物理層,該控制器需要一個外部的USB收發器(Transceiver),本文采用的是Philips公司的ISP1501芯片。該芯片用作USB2.0的模擬前端,從USB電纜來的差分信號進行反轉不歸零碼(NRZI)解碼和位解填充轉換成16位并行數據;反之,16位并行數據通過一個差分驅動電路經過串行化、位填充和NRZI編碼輸出到USB電纜上。ISP1501通過管腳MODE0和MODE1決定收發器的工作模式,共有4種工作模式:MODE[1:0]為“00”時,收發器處于斷開狀態;為“01”時處于全速(Full Speed)模式(此時USB帶寬為12Mb/s);為“10”時是高速(High Speed)模式(此時USB最大帶寬是480Mb/s);為“11”時是HS chirp模式。UTMI接口通過譯碼MODE[1:0]來控制ISP1501在HS和FS之間轉變。If mode_hs='1'thenMODE<='10'Elsif mode_hs='0'thenMODE<='01'End if;2.2 協議層控制器的核心邏輯位于PL(Protocl Layer)模塊,負責管理所有USB數據I/O和控制通信,其結構如圖4所示。DMA和存儲器接口提供隨機存儲器訪問和DMA操作。該模塊使PL和外部微控制器采用DMA方式訪問SSRAM。當外部總線有訪問SRAM的請求時,且PL沒有請求訪問存儲器,控制邏輯如下:req、ack分別對應外部總線和存儲器之間的請求和響應信號,din、addr和we分別是外部總線給出的數據、地址和寫信號,mreq是內部DMA向存儲器發送的請求信號,mdin、maddr和mwe分別是內部DMA給出的數據、地址和寫信號。sel <=(req OR ack_r) AND(NOT mreq);if sel='1' thensram_out<=din;sram_adr<=addr;sram_we<=req AND we;elsesram_out<=mdin;sram_adr<=maddr;sram_we <=mwe;end if;由控制邏輯可看出,內部DMA操作的優先級比外部總線高。協議引擎(Protocol Engine)處理所有標準的USB握手信號和控制通信。分組組裝器組裝分組并送入輸出FIFO,先組裝分組頭,插入適當的PID(分組標識)和校驗和,然后加入數據域。分組拆裝器先解碼出PID和序列號以及校驗和,再從8位PID取低4位(或高4位取反)得到PID[3:0],通過USB2.0協議的PID類型定義譯碼出PID名,判斷是Token分組(OUT、IN、SOF和SETUP)還是DATA分組(DATA0、DATA1、DATA2和MDATA)。Pid_Token<=pid_OUT OR pid_IN OR pid_SOF OR pid_SETUP;Pid_DATA <=pid_DATA OR pid_DATA1 OR pid_DATA2 OR pid_MDATA;如果是Token分組(格式定義如圖5所示),則將后續的16bit數據分別放入兩個8bit臨時Token寄存器token0和token1,然后取出分組中的7位地址、4位端點號及5位CRC校驗碼。Token_fadr<=token0[6:0];Token_endp<=token1[2:0] & token0[7];Token_crc5<=token1[7:3];對于特殊的Token須進行特殊的處理,本文實現的控制器只對SOF這一特殊Token進行操作,解出PID后的11位幀號及5位CRC5校驗碼。Frame_no<=token1[2:0] & token0;Token_crc5<=token1[7:3];檢驗校驗碼是否出錯,如果出錯等待下一個Token,否則將地址、端點號和幀號等放入相應寄存器。Token類型如果是IN,則執行組裝分組并發送寄分組;如果是OUT則拆卸接收到的數據分組。對于其他不支持的Token則視為錯誤處理:Pid_ERROR<=pid_ACK OR pid_NACK OR pid_STALL OR pid_NYET OR pid_PRE OR pid_ERR OR pid_SPLIT OR pid_PING;如果出錯則不進行Token的解碼,而等待下一個Token的到來。如果是DATA分組,則緊接著PID的是最大載荷為1024字節的數據和16位CRC16校驗碼。對數據的處理先寫入端點寄存器,然后通過DMA操作寫入SSRAM。下面詳細介紹端點寄存器和DMA操作2.3 端點操作數據的傳輸實際上通過端點(Endpoint)進行,控制器通過寫端點的寄存器來配置端點,該控制器最多可有16個端點,每個端點有相應的4個寄存器:Epn_CSR、Epn_INT、Epn_BUF0和Epn_BUF1(這里n=0、1、2或3),其格式如圖6所示。本文使用addr[8:2]7根據地址線來訪問這些寄存器,addr[8:4]用來選擇端點號,其值(16進制)從4到19分別表Epn(n=0...15)。addr[3:2]指定寄存器類型:“00”代表CSR(Control Status Register);“01”代表中斷寄存器;“10”指向Buffer0;“11”代表Buffer1。這兩個Buffer用來作臨時數據存儲,Buffer0和Buffer1分別作為專用的輸入/輸出緩沖器來提高USB的數據吞吐能力。雙Buffer能夠減少微控制器和驅動軟件之間的延遲。其中端點的CSR寄存器指定端點的工作模式并且向控制器報告指定端點的狀態。Ep_CSR[31:30]必須初始化為“00”(最初使用Buffer0),通過讀這2位可以知道下次所要處理的緩沖器;為“01”時,指定Buffer1。Ep_CSR[27:26]和Ep_CSR[25:24]分別指定端點類型和傳輸類型,Ep_CSR[21:18]指定端點號,總共可以有16個端點。Ep_CSR[15]時DMA使能位,為“1”時允許外部DMA操作,否則不允許DMA操作。當控制器收到中斷時,讀中斷源寄存器(Ep_INT[6:0])來判斷中斷源和產生的原因。可自定義中斷源,如Ep_INT[2]定義為該控制器接收到不支持的PID而產生的中斷:Ep_INT[2]<=Pid_ERROR。Ep_INT[4]和Ep_INT[3]分別表示Buffer1和Buffer0的滿或空的狀態位。Ep_BUF[31](標記緩沖器是否被使用過)在使用后被控制器置“1”,在清空或重填充該緩沖器后,控制器清除該位。該閏初始化時為“0”。Ep_BUF[30:17]指定緩沖器能容納的字節數。Ep_BUF[16:0]緩沖器的指針,裝載存儲器SRAM中數據的地址。控制端點(Endpoint0)比較特殊,由于它既要接收也要發送數據,因此對于控制端點,Buffer0用于OUT緩沖器,Buffer1則是IN緩沖器。從SETUP和OUT分組來的數據,寫入Buffer0,IN分組的數據則是從Buffer1中獲取。2.4 DMA操作DMA操作允許控制器與功能接口之間數據的透明傳輸。一旦設置了DMA操作,則不需要微控制器的干預。每個端點有一對DMA_REQ和DMA_ACK信號。當CSR寄存器中DMA使能信號位(Ep_CSR[15])被置位時,USB控制器使用DMA_REQ和DMA_ACK這兩個信號來進行DMA的流控制。當緩沖區有數據或為空需要填充時發送DMA請求信號DMA_REQ,每傳輸4字節,響應一個DMA_ACK信號。由于USB2.0協議定義的事務操作以8bit為單位,因此完成一次32bit的DMA操作需要進行4次寫8bit。內部DMA采用高效的One-hot狀態機設計方法,狀態轉換如圖7所示。當需要將接收到的數據存儲到SRAM(rx_dma_en=1)時進入WAIT_MRD狀態,在該狀態選中一個臨時數據寄存器,并向存儲器發送請求信號mreq,從存儲器中預取4字節(當接收到的數據少于4字節時,保證有4字節的數據寫入存儲器)到該寄存器中,然后進入MEM_WR狀態。當PL的分組拆裝器接收到1字節數據時,將該字節寫入臨時存儲器,轉入下一狀態MEM_WR1;當分組拆裝器沒數據給DMA仲裁器時則進入MEM_WR2狀態,在此狀態將臨時存儲器中的數據寫入SRAM,然后回到IDLE狀態。在操作過程中,使用計數器adr_cb對傳輸字節數進行計數,通過addr_cb[1:0]的值標識當前傳輸的是32bit中的哪個字節。計數器sizu_c每接收1字節數值加1。在需要讀取SRAM中的數據(tx_dma_en=1)時,DMA仲裁器由IDIE狀態進入MEM_RD1狀態,讀取4字節數據到發送緩沖區中,然后進入狀態MEM_RD2,再讀4字節進入狀態MEM_RD3,這8字節輪流使用Buffer0和Buffer1緩沖區:在需要讀取SRAM中的數據(tx_dma_en=1)時,DMA仲裁器由IDLE狀態進入MEM_RD1狀態,讀取4字節數據到發送緩沖區中,然后進入狀態MEM_RD2,再讀4字節進入狀態MEM_RD3,這8字節輪流使用Buffer0和Buffer1緩沖區:if((NOT adr_cb[2]) AND mackthen Buffer0<=SRAM_DATA_I;elsif (adr_cb[2] AND mack)then Buffer1<=SRAM_DATA_I;end if;在MEM_RD3狀態判斷是否還需要讀下一個數據,如果需要再進入狀態MEM_RD2,否則在傳輸完所有字節后,返回到IDLE狀態。在發送數據過程中,使用14bit計數器sizd_c決定傳輸字節數,取自Ep_BUF[30:17],每發送1字節數據,它的值減1。在圖7中的各個狀態中,由于超時、CRC校驗錯誤或得到的數據發生錯誤時,PE產生的Abort信號會使當前狀態都回到IDLE。文中闡述了USB2.0功能控制器的一種實現方案。 其VHDL語言實現代碼,已在XILINX公司的FPGA Virtex XVV3006fg456中通過了Xilinx ISE的仿真、綜合及布局布線。FPGA的規模是32萬門,1536個CLB(可配置邏輯單元)。該控制模塊占用2050個Slice(66%),使用了1697個Slice觸發器(27%)和3047個4輸入LUT表(49%)。整個FPGA的速度可達到56.870MHz,完全滿足視頻數據的高速傳輸(對32bit數據操作,達到480Mb/s的速度時鐘只需15MHz)。該方案實現的控制器便于修改且易于實現,可作為一個功能模塊嵌入到SOC中,可使不同情況最大限度地靈活設計片上系統。(mbbeetchina)
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1電子電路原理第七版PDF電子教材免費下載
  2. 0.00 MB  |  1491次下載  |  免費
  3. 2單片機典型實例介紹
  4. 18.19 MB  |  95次下載  |  1 積分
  5. 3S7-200PLC編程實例詳細資料
  6. 1.17 MB  |  27次下載  |  1 積分
  7. 4筆記本電腦主板的元件識別和講解說明
  8. 4.28 MB  |  18次下載  |  4 積分
  9. 5開關電源原理及各功能電路詳解
  10. 0.38 MB  |  11次下載  |  免費
  11. 6100W短波放大電路圖
  12. 0.05 MB  |  4次下載  |  3 積分
  13. 7基于單片機和 SG3525的程控開關電源設計
  14. 0.23 MB  |  4次下載  |  免費
  15. 8基于AT89C2051/4051單片機編程器的實驗
  16. 0.11 MB  |  4次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234313次下載  |  免費
  3. 2PADS 9.0 2009最新版 -下載
  4. 0.00 MB  |  66304次下載  |  免費
  5. 3protel99下載protel99軟件下載(中文版)
  6. 0.00 MB  |  51209次下載  |  免費
  7. 4LabView 8.0 專業版下載 (3CD完整版)
  8. 0.00 MB  |  51043次下載  |  免費
  9. 5555集成電路應用800例(新編版)
  10. 0.00 MB  |  33562次下載  |  免費
  11. 6接口電路圖大全
  12. 未知  |  30320次下載  |  免費
  13. 7Multisim 10下載Multisim 10 中文版
  14. 0.00 MB  |  28588次下載  |  免費
  15. 8開關電源設計實例指南
  16. 未知  |  21539次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935053次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537793次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234313次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191183次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183277次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138039次下載  |  免費