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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 使用FPGA實(shí)現(xiàn)靈活的USB Type-C接口控制

          使用FPGA實(shí)現(xiàn)靈活的USB Type-C接口控制

          作者: 時間:2015-04-27 來源:電子產(chǎn)品世界 收藏

             接口的對稱連接包含:

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

            D+/D-:當(dāng)3接口不可用時,這些引腳為2信號提供信號通道。

            Vbus/GND:這些引腳能夠?yàn)樯闲袛?shù)據(jù)接口提供高達(dá)100W的供電能力,或者在一些情況下支持點(diǎn)對點(diǎn)供電。

            剩余的連接是“非對稱”的,也就是說在連接器插入方向錯誤時這些連接無法正常工作,除非這些端口在電氣或邏輯方面做了修正。USB 的非對稱連接包含:

            Tx1/2 Rx1/2:提供最多2通道的超速數(shù)據(jù)鏈路,實(shí)現(xiàn)雙向高達(dá)20Gbps的帶寬。

            CC1/CC2:配置通道信號用于連接的發(fā)現(xiàn)、配置和管理。請注意它們中僅有一個信號用作配置通道,另一個在上行數(shù)據(jù)流端口中用于為USB邏輯供電。

            SBU1 & 2:邊帶使用(Side Band Use)信號適用于傳輸非USB信號,它們用于模擬音頻(Analog Audio)模式,也可用于可選(Alternate)模式。

            4 實(shí)現(xiàn)USB 應(yīng)用時所面臨的挑戰(zhàn)

            目前,要將USB Type-C接口添加到新的設(shè)計中,需要設(shè)計工程師進(jìn)行系統(tǒng)芯片開發(fā)來增加新的功能,因?yàn)闊o論是現(xiàn)有系統(tǒng)中的PHY、MCU還是應(yīng)用處理器(Application Processor, AP)都不支持USB Type-C接口的多項(xiàng)關(guān)鍵功能。這些必需的功能塊包含電纜偵測(Cable Detect, CD)、超速切換控制、供電(Power Delivery, PD)協(xié)商以及供應(yīng)商自定義消息(Vendor-Defined Messaging, VDM)。

            挑戰(zhàn)1:提供USB Type-C接口電纜偵測和供電的PHY功能。USB Type-C接口添加了大量絕大多數(shù)USB Type-C設(shè)備都需要的PHY層功能。大多數(shù)USB Type-C設(shè)備需要電纜偵測功能,用于判斷它們連接到的是DFP還是UFP以及電纜的方向。該機(jī)制通過在CC1和CC2通道上加上拉和下拉電阻,要實(shí)現(xiàn)CD功能,設(shè)備必須要能夠測得這些上拉和下拉電阻上的各種電壓值。任何CD解決方案都需要能夠測量這些模擬電壓。

            如果想要充分利用供電通訊來協(xié)商獲得更高功率、切換端口功能或使用VDM,就必須實(shí)現(xiàn)PD PHY層。PD通信使用一條CC通道,由USB 供電規(guī)范定義。它采用半雙工通信機(jī)制,使用雙相標(biāo)記編碼(Bi-phase Mark Coding, BMC)傳輸4b5b編碼的數(shù)據(jù),可簡化接收器設(shè)計。BMC可被認(rèn)為是一種曼徹斯特(Manchester)編碼。此外,數(shù)據(jù)使用循環(huán)冗余校驗(yàn)(Cyclic Redundancy Checking, CRC)算法來防止數(shù)據(jù)錯誤。

            盡管使用通用微控制器能夠?qū)崿F(xiàn)PD PHY,但是對于要求低功耗的解決方案來說,使用基于邏輯單元的器件更加合適。

            挑戰(zhàn)2:在沒有主系統(tǒng)處理器的情況下實(shí)現(xiàn)供電協(xié)商功能。如果想要讓UFP能夠利用USB Type-C提供的更高功率供電,這就要發(fā)起一個供電協(xié)議申請,DFP同意該供電申請或者給出它所能提供的供電功率。一旦協(xié)商成功,供電協(xié)議也就相應(yīng)地成立。在很多情況下,沒有系統(tǒng)處理器來實(shí)現(xiàn)上述功能。首先在某些情況下,如智能并不包含系統(tǒng)處理器。其次,可能需要在電池沒電的情況下進(jìn)行供電協(xié)議協(xié)商來實(shí)現(xiàn)快速充電。還有,在某些情況下(如為筆記本和智能手機(jī)同時供電時),最好讓主處理器處于休眠模式。

            雖然有很多方式可實(shí)現(xiàn)這種協(xié)商功能,但使用尺寸極小、功耗極低的方案將功能集成到現(xiàn)有的芯片中是最理想的選擇。

            挑戰(zhàn)3:支持結(jié)構(gòu)化和非結(jié)構(gòu)化的供應(yīng)商自定義消息。正如上文提到的,結(jié)構(gòu)化的供應(yīng)商自定義消息能夠用于協(xié)商使用諸多標(biāo)準(zhǔn)化的可選模式,以擴(kuò)展USB Type-C的功能。設(shè)計人員需要同時實(shí)現(xiàn)USB PD規(guī)范中定義模式的協(xié)商以及控制高速切換的功能,用于給USB連接器內(nèi)的數(shù)據(jù)對傳輸合適的信號。非結(jié)構(gòu)化的供應(yīng)商自定義消息允許制造商實(shí)現(xiàn)非標(biāo)準(zhǔn)化的功能。這可能包含使用閑置的信號通道來實(shí)現(xiàn)一些客制化的功能,如底座和固定在底座上的設(shè)備間的GPIO聚合或者為挑戰(zhàn)與應(yīng)答驗(yàn)證機(jī)制傳輸數(shù)據(jù)。設(shè)計人員必須實(shí)現(xiàn)通訊功能以及所需的處理、切換控制以及其他硬件。

            同樣地,有很多方式可以實(shí)現(xiàn)與VDM相關(guān)的協(xié)商和控制機(jī)制。但是,真正的挑戰(zhàn)在于怎樣通過集成來實(shí)現(xiàn)成本最低、尺寸最小的目標(biāo)。

            5 應(yīng)用實(shí)例

            本文的最后一部分提供相關(guān)實(shí)例來說明如何使用技術(shù)快速實(shí)現(xiàn)USB Type-C接口,并且充分利用該標(biāo)準(zhǔn)所提供的諸多優(yōu)勢。通過集成的方式提供小尺寸,基于邏輯的設(shè)計,可獲得極低的功耗以及很大的靈活性,可按需進(jìn)行更改。

            實(shí)例1:基于的PD功能,適用于智能由于USB Type-C接口最早出現(xiàn)在平板電腦、智能手機(jī)和其他移動設(shè)備上,它們要求能夠充分利用PD協(xié)商功能為充電設(shè)備提供所需電壓和電流,并協(xié)商供電協(xié)議(Power Contract)來最大程度滿足設(shè)備的需求。一旦供電協(xié)議建立,PD必須將電壓和電流要求傳輸至充電器內(nèi)部的電源管理集成電路(Power Management Integrated Circuit, PMIC)以獲得協(xié)議規(guī)定的電流和電壓。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          fpga相關(guān)文章:fpga是什么


          上拉電阻相關(guān)文章:上拉電阻原理


          關(guān)鍵詞: FPGA USB Type-C 充電器 嵌入式

          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁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); })();