<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > USB設備控制器端點緩沖區(qū)的優(yōu)化技術設計

          USB設備控制器端點緩沖區(qū)的優(yōu)化技術設計

          作者: 時間:2010-05-07 來源:網絡 收藏


          對于的控制端點,其接收的最大數(shù)據(jù)包為64 b。故本文的雙向FIFO使用的sram亦為64 b。使用memory complier生成。圖5是的雙向FIFO在Modelsim下的仿真波形圖。該波形顯示了方向0寫數(shù)據(jù),方向1讀數(shù)據(jù)和方向1寫數(shù)據(jù),方向0讀數(shù)據(jù)的過程。



          2.2 其他端點的

          對于的其他端點,由于其與控制端點有所不同??刂贫它c是一個雙向端點,而非控制端點單向的傳輸。故對于非控制端點對應的的容量設定,應使的帶寬利用率盡量達到最高。由于USB規(guī)范中規(guī)定必須有足夠的空間,可以為全(高)速容納一個時間片所能傳輸?shù)臄?shù)據(jù)量的兩倍的容量。這樣USB在處理一個數(shù)據(jù)分組的同時,可以接收下一個數(shù)據(jù)分組。以此種重疊可以提高總線利用率。如果批量端點的的深度設計為1 024 B。就可以得到最大的帶寬利用率。

          圖6是其他端點所采用的雙緩沖FIFO方案示意圖。在狀態(tài)1,req0控制訪問FIFO0,reql控制訪問FIFO1;在狀態(tài)2,req0切換到訪問FIFO1,req1切換到訪問FIFO0?;陔p緩沖FIFO的設計方案可使其他端點的帶寬利用率達到最高,滿足高速傳輸?shù)男枨蟆?br />


          3 電路的ASIC實現(xiàn)結果

          對上述設計方案采用Verilog硬件描述語言進行設計。仿真工具為Modelsim SE 6.2b,前仿真通過后,對設計好的電路使用Design Complier進行綜合。綜合所使用的工藝庫是SMIC 0.18 μm工藝庫。

          對于控制端點,考慮到其主要處在SIE時鐘和MCU時鐘之間,對其所加的時鐘約束分別為60 MHz和30 MHz;此外還對傳統(tǒng)的雙緩沖FIFO結構進行了綜合,兩者所加約束完全一致。將兩者的電路的綜合結果對比如表2所示。



          對比表2可知在保證控制端點功能的前提下,本文所采用的新型FIFO結構比傳統(tǒng)雙FIFO結構在電路的實現(xiàn)面積方面減小了45.3%。

          對于其他端點所采用的雙緩沖FIFO方案保證了傳輸速度,但卻是以犧牲面積為代價換來的。表3給出了批量(Bulk)傳輸端點(兩個深度為512 B的FIFO)的實現(xiàn)面積報告。



          4 結 語

          USB端點緩沖區(qū)的性能,直接關系到總線的帶寬利用率。這里分析了USB的四種傳輸類型并根據(jù)其特點靈活的設計了不同的方案,并給出了最終電路的ASIC實現(xiàn)結果。特別是針對控制端點所提出的一種新方案具有一定的通用性,該方案可以應用在其他類似場合的設計中。

          本文引用地址:http://www.ex-cimer.com/article/151876.htm

          pid控制器相關文章:pid控制器原理



          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();