999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于FPGA的USB PD控制器的設計與實現?

2020-07-13 12:48:38牛雨萌焦繼業
計算機與數字工程 2020年5期
關鍵詞:設計

牛雨萌 焦繼業 李 晨

(西安郵電大學電子工程學院 西安 710121)

1 引言

目前市場上新發布的主流手機機型,已全面開始使用 USB Type-C[1]接口,且飛利浦、樂視等廠商已經推出USB Type-C接口的數字耳機,USB Type-C在消費類電子市場中得到了廣泛應用[2]。相比于傳統USB接口[3],最大的不同在于USB Type-C接口中新定義了一條CC線,USB PD[4]協議就是基于USB Type-C接口中的CC線實現的,它是一種主從單線通訊協議,不僅是用于實現快速充電的協議,實際上,USB PD是USB Type-C的靈魂所在。它與USB Type-C接口的結合可支持高達20V/5A的標準電能傳輸,利用協議中的VDM[5]消息建立 Type-C 替代模式的連接,可實現 DisplayPort[6~7]、HDMI[8]等高速數據傳輸,具有良好的應用前景[9]。

本文設計并實現了一種USB PD控制器,完成了PD數據包的正確發送、接收及校驗,并利用FP?GA進行驗證[10]。FPGA(Field-Programmable Gate Array),即現場可編程門陣列,具有豐富的可編程邏輯單元、嵌入式塊RAM、可編程輸入輸出單元等硬件資源,可以在其內部靈活實現各種數字電路設計。因此,采用FPGA技術進行驗證,可以快速修改代碼中的錯誤,為后續的IC設計提供正確保障。

2 PD控制器總體方案

USB PD協議采用BMC編碼,標準數據包格式如圖1。每個包的起始和結束分別以固定的64bit0/1交替的序列和01101作為標志;SOP*定義了通信類型;Message Header定義了數據對象的個數、Mes?sage ID、電力角色、數據角色、版本信息、消息類型等信息;Data Object是0~7個32bit數據對象,若該部分不存在則此條消息為控制消息,CRC為校驗碼,用于檢測包內容在傳輸過程中是否出錯。

圖1 PD控制器總體框圖

本文采用自頂向下的設計方法,先根據功能要求設計總體方案,再針對核心模塊逐步細化[11]。如圖2為PD控制器的總體框圖。系統時鐘clkin為20Mhz,rst為系統復位信號,高有效。PD控制器主要由PD_TX、PD_RX、CRC32校驗、波特率控制四個模塊組成,其中PD_TX和PD_RX是設計的核心模塊,負責PD數據包的發送和接收。CRC32[12]校驗模塊負責數據在傳輸過程中的檢錯。波特率控制模塊用于控制數據傳輸的速度。

圖2 PD控制器總體框圖

3 PD控制器模塊設計

3.1 波特率控制模塊設計

本文將標準時間設為300kHz,系統時鐘為20MHz,因此設定波特率控制寄存器mcpr0的值為20MHz/300kHz-1=66;采樣波特率控制寄存器mcsamp的值應設為20MHz/300kHz/4=16。

3.2 PD_TX模塊設計

PD_TX模塊[13]主要完成以下功能:接收從協議層發送來的PD消息數據包、將CRC32值添加至數據包尾、完成數據包的4b5b編碼、BMC編碼并將編碼后的數據包發送至CC線。如圖3為PD_TX的模塊內部結構圖,可細化為四個部分:4b5b編碼模塊、移位控制模塊、發送控制模塊和BMC編碼模塊。TX_STATE與外部信號交互,控制著整個發送過程。bmctl[4:0]、bmcth[4:0]及bmct4t5[7:0]用于存放待發送的數據,CRC32校驗值需要調用CRC32校驗模塊進行計算。存入bmct4t5[7:0]的值分為高四位bmct4t5[7:4]和低四位bmct4t5[3:0]兩部分,經過4b5b編碼模塊輸出至由Loaden0控制的數據選擇器。數據選擇器的輸出經過移位寄存器的右移操作每次將最低位tx_buf[0]輸出至CO_STATE狀態機進行BMC編碼。loaden0、load?en1、pdtxbf、dly_ok、tx_ok為內部控制信號,pdtx_da?ta為最終發送的數據。

圖3 PD_TX內部結構圖

發送控制模塊是該模塊的核心,采用狀態機設計實現,該狀態機的狀態轉移圖如圖4所示。其中,pdtxen是發送使能信號;mcpr0是波特率控制器寄存器;mct0是一個七位計數器,其值與mcpr0的值相等時則發送一位數據并清零;bmcr_cnt是一個兩位計數器,當計數器mct0計數到mcsamp的值時自加1,當mct0計數到mcpr0時清零,最大計數到2'b11。當系統復位或發送使能信號無效時保持在TX_IDLE狀態,發送使能信號有效則轉移到TX_WAIT狀態,該狀態在等待待發送數據寫入相應寄存器,loaden1和loaden0作為寫入標志位,當其中任何一個為0時,則轉移到TX_SYNC狀態。pdtxdly[3:0]表示在發送第一個前導碼之前延時的0的個數,用于控制TX_SYNC至TX_DLY或TX_OK的轉移。dly_ok是延遲結束標志位,由初值為 pdtxdly的自減 1計數器 dly_cnt[3:0]控制,當dly_cnt=1時,dly_ok標志位置1,此時從TX_DLY轉移到TX_OK。TX_BUF為發送狀態,tx_buf[9:0]的值被{1'b0,tx_buf[9:1]}的值更新。tx_ok為數據發送完成標志,由一個初值為4、5或10的自減1計數器tx_cnt控制。pdtxbf為1時表示發送正在進行,應由TX_OK跳轉到TX_BUF。

圖4 發送狀態機狀態轉移圖

PD協議中規定數據以BMC碼的形式傳輸,圖3中的CO_STATE用來實現BMC編碼,具體的狀態轉移圖如圖5所示。當TX_STATE=TX_BUF時狀態機開始工作,根據 bmcr_cnt,mct0,mcpr0及 txbuf[0]的值來控制狀態轉移。若發送的數據為0則在一個發送波特率時間段內保持不變,若發送的數據為1則有翻轉。

圖5 BMC編碼狀態轉移圖

3.3 PD_RX模塊設計

PD_RX模塊主要完成以下功能:接收CC線上發來的數據、進行BMC解碼、探測SOP和EOP、進行5b4b解碼、驗證CRC32的值,若正確則將PD數據包發送至協議層解析,若不正確則丟棄。如圖6為PD_RX的內部結構圖,可細化為BMC解碼模塊、移位控制模塊、接收雙緩存、5b4b解碼模塊、控制信號產生模塊和RX_STATE控制模塊。控制信號產生模塊和RX_STATE與外部信號交互,控制著整個接收過程。接收到的數據由bmcr_ccdat進入BMC解碼模塊。移位控制模塊將經過BMC解碼的數據^bmcr_sdat依次右移進bmcr5b[4:0]作為接收雙緩存模塊的輸入,該模塊受bmcrcnt[2:0]控制,當該計數器計數到5即接收完一個5b數據時將bmcr5b的值賦給bmc_rlbf[4:0],同時bmc_rlbf[4:0]的值將賦值給bmc_rhbf[4:0],這兩個寄存器的值經過5b4b解碼模塊輸出最終結果bmcr5t4[7:0]。rcover為接收溢出標志,pd_rcif為接收中斷標志,err_flag為錯誤標志。

圖6 PD_RX內部結構圖

從CC線接收數據之后應先進行BMC解碼,如圖7為BMC解碼采樣原理圖,在一個發送波特率時間段內采樣兩次,如采樣點①和采樣點②的采樣值分別為1和0,取它們的異或值則為BMC解碼后的值。采樣點③和采樣點④同理。

圖7 BMC解碼采樣原理圖

RX_STATE和控制信號產生模塊為接收模塊的核心,其中接收狀態機的狀態轉移圖如圖8所示。當系統復位或接收使能信號pdrcen無效時保持在IDLE狀態,當pdrcen有效時轉移到WAIT狀態,等待接收數據。SYN64、SYN1、DATA和EOP分別對應接收一個標準的PD數據包中的64位前導碼、SOP中的 sync-1、Data Object及 EOP狀態。sync_flag64是PD數據包中前導碼接收完畢標志位。由于前導碼的0/1交替性,且每次計數到奇數所對應的值為0,每次計數到偶數所對應的值為1,利用此規則作為計數器preamble_cnt[5:0]自加1的條件,如不滿足則清零。當前導碼被判斷正確時,從SYNC64跳轉到SYNC1狀態。sync1_flag、sync2_flag、sync3_flag、eop_flag分 別 為 接 收 到sync1、sync2、sync3及EOP標志位,均用5b數據寄存器bmcr5b的值來判定。當bmcr5b的值不等于sync-1、sync-2、sync-3、rst_1、rst_2及EOP中的任何一個并且5b4b譯碼失敗時,表明接收到的數據有誤,此時接收錯誤標志err_flag置1,并不再繼續接收數據,直接跳轉到IDLE狀態。當位于EOP狀態時,整個PD數據包已被正確接受完畢,此時無條件跳轉到IDLE狀態。

圖8 接收狀態機狀態轉移圖

3.4 CRC32校驗模塊設計

為防止PD消息在傳輸的過程中出錯或者丟失,PD_TX和PD_RX都要調用CRC32校驗模塊[14]。循環冗余檢驗(Cyclic Redundancy Check,CRC)作為數據傳輸中差錯控制的基本方法之一,廣泛應用于測控及通信領域中。PD_TX調用該模塊對PD消息的Message Header和Data Object部分進行CRC32計算,PD_RX調用該模塊對接收到的數據的相應部分再次進行CRC32計算,并與原來的CRC32的值進行比較,若一致表明數據接收正確,若不一致該數據包會被丟棄。CRC32校驗的生成多項式為 G(x)=x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1,初始值為FFFF FFFFh。

4 設計驗證

4.1 仿真

本設計在VCS+Verdi環境下進行功能仿真,仿真結果完全正確,由于仿真波形圖較大,在此不再貼出。

4.2 驗證

選用型號為EP4CE6E22C8N的FPGA作為驗證平臺,用mplab編寫C文件配置相應寄存器,將編譯生成的hex文件下載進FPGA,并與POWER-Z PD誘騙器連接,用邏輯分析儀抓取Type-C接口中的CC線上的PD通信波形,驗證環境如圖9所示。

圖9 驗證平臺實物圖

如圖10為邏輯分析儀抓出來的PD通信波形:FPGA先給PD誘騙器發送一個標準PD數據包,PD誘騙器接收到之后應回復一個GOODCRC包;PD誘騙器給FPGA發送一個標準數據包,FPGA接收到之后也回復一個GOODCRC包。

圖10 PD通信波形圖

此外,由于PD數據包格式復雜且數據量很大,手動分析耗時耗力且不準確。為了更好地說明驗證結果及方便未來進一步的研究與調試,用Python將邏輯分析儀導出的txt文件按格式讀入,深入分析PD協議并編寫PD數據包解析程序,程序運行結果可顯示PD通信的細節,方便設計的調試與檢錯。

5 結語

本文深入研究了USB PD協議中的消息類型、消息格式、消息發送、接收和校驗的機制,在此基礎上設計并實現了一種基于FPGA的USB PD控制器,完成了接收模塊、發送模塊、CRC32校驗模塊、波特率控制模塊的設計,并對每個模塊的設計思路進行了說明[15],在VCS+Verdi仿真環境下通過了功能仿真,并且經過FPGA驗證,驗證結果表明該控制器可實現PD數據包的正確發送、接收及校驗。后續將在此基礎上做進一步研究,實現PD協議中VDM消息的通訊,使USB Type-C接口進入替代模式,完成視頻的傳輸。

猜你喜歡
設計
二十四節氣在平面廣告設計中的應用
河北畫報(2020年8期)2020-10-27 02:54:06
何為設計的守護之道?
現代裝飾(2020年7期)2020-07-27 01:27:42
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
基于PWM的伺服控制系統設計
電子制作(2019年19期)2019-11-23 08:41:36
基于89C52的32只三色LED搖搖棒設計
電子制作(2019年15期)2019-08-27 01:11:50
基于ICL8038的波形發生器仿真設計
電子制作(2019年7期)2019-04-25 13:18:16
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
從平面設計到“設計健康”
商周刊(2017年26期)2017-04-25 08:13:04
主站蜘蛛池模板: 最新国产午夜精品视频成人| 亚洲综合婷婷激情| 亚洲精品视频免费| 欧美精品伊人久久| 久久永久视频| 日韩av电影一区二区三区四区 | 2021精品国产自在现线看| 婷婷综合色| 国产精品视频系列专区| 国产精品原创不卡在线| 亚洲三级视频在线观看| 欧美人人干| 综合色亚洲| 婷婷六月在线| 91精品国产自产91精品资源| 亚洲综合激情另类专区| 五月综合色婷婷| 在线99视频| 在线视频一区二区三区不卡| 亚洲最猛黑人xxxx黑人猛交| 囯产av无码片毛片一级| 99er这里只有精品| 欧美精品亚洲二区| 国产成人综合日韩精品无码首页| 91无码人妻精品一区| 国产人前露出系列视频| 国产视频只有无码精品| 欧美日韩国产系列在线观看| 992tv国产人成在线观看| 国产成人禁片在线观看| 国产精品视频久| 亚洲免费播放| 丁香婷婷激情网| 日本五区在线不卡精品| 国产成人综合在线视频| 久久精品无码中文字幕| 国产成人福利在线| 精品国产免费第一区二区三区日韩| 国产va免费精品观看| 欧美a网站| 精品一区二区三区四区五区| 亚洲福利视频网址| 中文字幕乱妇无码AV在线| 久久99热这里只有精品免费看| 99伊人精品| 试看120秒男女啪啪免费| 九九这里只有精品视频| 大学生久久香蕉国产线观看| 亚洲人成高清| 亚洲第一中文字幕| 欧美h在线观看| 国产靠逼视频| 五月天丁香婷婷综合久久| 老熟妇喷水一区二区三区| 亚洲精品男人天堂| 漂亮人妻被中出中文字幕久久| 国内精品九九久久久精品| 99视频在线看| 夜色爽爽影院18禁妓女影院| 中文字幕在线看| 色偷偷综合网| 97se亚洲综合在线| 婷婷丁香色| 免费观看成人久久网免费观看| 亚洲天堂日本| 日韩福利视频导航| 欧美日韩国产精品综合| 日韩精品一区二区三区视频免费看| 丝袜久久剧情精品国产| 本亚洲精品网站| 亚洲乱码在线播放| 伊人成人在线| 精品無碼一區在線觀看 | 亚洲av无码成人专区| 久久无码av三级| 亚洲毛片网站| 91福利国产成人精品导航| 精品久久高清| 九色综合视频网| 国产午夜看片| 99视频全部免费| 亚洲日韩欧美在线观看|