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
主站蜘蛛池模板: 在线无码九区| 97久久人人超碰国产精品| 午夜视频日本| 欧美不卡二区| 无码日韩人妻精品久久蜜桃| 午夜成人在线视频| 婷婷综合缴情亚洲五月伊| 国产亚洲美日韩AV中文字幕无码成人 | 欧美国产日韩在线| 国产视频大全| 欧美伦理一区| 美女视频黄频a免费高清不卡| 91精品国产情侣高潮露脸| 丁香婷婷激情网| 91在线精品麻豆欧美在线| 99精品视频在线观看免费播放| 亚洲乱码精品久久久久..| 97超爽成人免费视频在线播放| 无码福利视频| 国内毛片视频| 亚洲午夜天堂| 久久精品亚洲专区| 91啦中文字幕| 久久精品国产精品国产一区| 亚洲二区视频| 日韩久草视频| 国产女人18毛片水真多1| 亚洲天堂久久新| 国产丝袜啪啪| 人人91人人澡人人妻人人爽| 97se亚洲| 国产精品白浆无码流出在线看| 永久在线播放| 秘书高跟黑色丝袜国产91在线| 精品国产香蕉伊思人在线| 久久这里只有精品66| 在线不卡免费视频| 成人噜噜噜视频在线观看| 香蕉视频在线观看www| 99re这里只有国产中文精品国产精品| 色香蕉影院| 成人小视频在线观看免费| 欧美一级夜夜爽www| 欧美日本中文| 1024国产在线| 午夜a视频| 欧美一级夜夜爽www| 国产在线第二页| 久久久久无码精品国产免费| 午夜精品久久久久久久无码软件| 亚洲人成网7777777国产| 亚洲精品在线影院| 亚洲男人天堂久久| 国产欧美视频综合二区| 尤物在线观看乱码| 久久99国产乱子伦精品免| 国产人前露出系列视频| 亚洲久悠悠色悠在线播放| 欧美视频在线第一页| 婷婷亚洲天堂| 亚洲视频三级| 国产精品护士| 亚洲首页在线观看| 亚洲欧美成人网| 国产午夜不卡| 无码乱人伦一区二区亚洲一| 欧美综合在线观看| 国产在线精品美女观看| 99热这里只有精品在线播放| 国产午夜福利亚洲第一| AV在线麻免费观看网站| 超碰免费91| 九九免费观看全部免费视频| 日本亚洲成高清一区二区三区| 亚洲欧美另类色图| 青青青国产视频| 三上悠亚一区二区| 国产91九色在线播放| 国产男女免费完整版视频| 91麻豆久久久| 国产微拍一区| 国产99视频精品免费观看9e|