方侃飛,藺智挺,趙建中,李 智,畢立強(qiáng)
1.安徽大學(xué) 電子信息工程學(xué)院,合肥230601
2.中國科學(xué)院微電子研究所 智能感知中心,北京100029
隨著智能手機(jī)的快速發(fā)展,目前主流的快速充電協(xié)議有華為SCP、Qualcomm QC、Samsung AFC、OPPO VOOC、USB BC1.2[1-2]。為了統(tǒng)一快速充電技術(shù)規(guī)范,USB-IF 協(xié)會(huì)定義了USB PD3.0 協(xié)議[3-4],此規(guī)范不但解決了設(shè)備與充電器從一對(duì)一變成多對(duì)一的問題,而且降低了消費(fèi)者的消費(fèi)成本。目前,各大芯片廠商越來越重視USBPD 快速充電芯片的設(shè)計(jì),紛紛投入基于USB PD 協(xié)議的研究,目的是為了盡快地?fù)寠Z快速充電設(shè)備市場[5-7]。USB PD協(xié)議中的核心技術(shù)之一是BMC編解碼,其中BMC 編碼是將時(shí)鐘和數(shù)據(jù)包含在數(shù)據(jù)流中,在傳遞數(shù)據(jù)信息的同時(shí),也將時(shí)鐘同步信息傳給對(duì)方,加上每次編碼中至少有一次電平翻轉(zhuǎn),不存在直流分量,因此具有同步性與一定的抗干擾能力。接收方利用BMC 編碼的同步性,鎖定自己的時(shí)鐘頻率,從而高效精準(zhǔn)地通信。編碼規(guī)則如圖1 所示,數(shù)據(jù)0 電平不翻轉(zhuǎn),數(shù)據(jù)1電平翻轉(zhuǎn),因此四分之三UI(Unit Interval)作為判斷接收到數(shù)據(jù)0 還是數(shù)據(jù)1 的標(biāo)準(zhǔn)。BMC 解碼分為前導(dǎo)碼解碼和數(shù)據(jù)解碼,前導(dǎo)碼數(shù)據(jù)是64 bit 的0101……,只有當(dāng)前導(dǎo)碼準(zhǔn)確無誤后才能進(jìn)行數(shù)據(jù)解碼。若前導(dǎo)碼解碼性能過差,會(huì)造成數(shù)據(jù)解碼出錯(cuò)。因此本文在分析傳統(tǒng)解碼電路中面積大、功耗高、抗干擾能力弱等缺點(diǎn),提出高性能的新型解碼電路系統(tǒng)。
圖1 BMC編碼規(guī)則
傳統(tǒng)的BMC 解碼系統(tǒng)的結(jié)構(gòu)框圖如圖2 所示,由濾波模塊、邊沿檢測模塊、解碼模塊、輸出模塊組成。
圖2 傳統(tǒng)的BMC解碼結(jié)構(gòu)框圖
文獻(xiàn)[8]提出了一種傳統(tǒng)的BMC 解碼電路系統(tǒng),該電路利用高速時(shí)鐘對(duì)64 bit 的前導(dǎo)碼進(jìn)行過采樣,采樣的計(jì)數(shù)值計(jì)為Counter_total。通過算數(shù)平均算法解出解碼閾值Th,如公式(1)所示,如果在Th之內(nèi)檢測到數(shù)據(jù)邊沿(上升沿或下降沿)到來則說明解出的碼為1,如果在Th之內(nèi)沒有檢測到邊沿則說明解出的碼是0。若此時(shí)的前導(dǎo)碼長度低于64 bit,此算法會(huì)將有效數(shù)據(jù)誤認(rèn)為前導(dǎo)碼,從而導(dǎo)致電路的魯棒性不高,抗干擾能力差。另外,對(duì)64 bit 進(jìn)行過采樣不僅增加了電路計(jì)算負(fù)擔(dān),而且增加了電路的面積與功耗[9-10]。
傳統(tǒng)的BMC 解碼設(shè)計(jì)的流程圖如圖3 所示,對(duì)Type-C接口的CC線上的信號(hào)進(jìn)行濾波,消除信號(hào)上的毛刺,接著對(duì)64 bit前導(dǎo)碼進(jìn)行過采樣并得到計(jì)數(shù)總數(shù),進(jìn)而算出解碼閾值。一旦64 bit前導(dǎo)碼過采樣完成后將會(huì)對(duì)前導(dǎo)碼64 bit 后的數(shù)據(jù)進(jìn)行過采樣,并根據(jù)解碼閾值解出前導(dǎo)碼后的數(shù)據(jù)。
圖3 傳統(tǒng)的BMC解碼設(shè)計(jì)的流程圖
所提出的新型BMC 解碼結(jié)構(gòu)如圖4 所示,由濾波模塊、BMC解碼模塊、預(yù)期解碼模塊、校正模塊、輸出模塊組成。其基本原理如下:濾波模塊濾除Type-C 接口的CC線上的毛刺,保證輸入數(shù)據(jù)穩(wěn)定,隨后將穩(wěn)定的數(shù)據(jù)傳遞至BMC 解碼模塊,通過此模塊的算法將輸入數(shù)據(jù)解出并傳至校正模塊,同時(shí)判斷前導(dǎo)碼2 bit屬于哪種類型(判斷方法如圖9 所示)。接著將解出的1 bit 有效數(shù)據(jù)傳至預(yù)期的解碼模塊,預(yù)期的解碼模塊收到有效數(shù)據(jù)后將會(huì)預(yù)測下一個(gè)數(shù)據(jù)并存于當(dāng)前寄存器中,同時(shí)將上次預(yù)測的數(shù)據(jù)傳至校正模塊,此時(shí)校正模塊判斷解出的數(shù)據(jù)與預(yù)測的數(shù)據(jù)進(jìn)行比較,若比較結(jié)果一致,將解碼數(shù)據(jù)傳送至發(fā)送模塊,若不一致,電路將會(huì)發(fā)生復(fù)位。
圖4 新型BMC解碼結(jié)構(gòu)框圖
新型的BMC解碼結(jié)構(gòu)流程圖如圖5所示,對(duì)CC線上的數(shù)據(jù)信號(hào)進(jìn)行濾波,消除數(shù)據(jù)信號(hào)上的毛刺,通過前導(dǎo)碼中2 bit 判斷出屬于哪種形式,并得出解碼閾值(判斷方法如圖9 電路所示),一旦2 bit 類型判斷出來,可以根據(jù)前導(dǎo)碼中0和1交替變化的規(guī)則即可推測出下一bit 的預(yù)測值為0 還是為1。前導(dǎo)碼中2 bit 類型判斷后,將會(huì)對(duì)2 bit后的每8 bit分為一組,進(jìn)行解碼,過程如下:根據(jù)前導(dǎo)碼2 bit得出的解碼閾值對(duì)前導(dǎo)碼中2 bit后的第一組8 bit 前導(dǎo)碼進(jìn)行解碼,并得出新的解碼閾值,同時(shí)將第一組解出的前導(dǎo)碼與預(yù)測值進(jìn)行比較,如果一致,則說明解碼正確,此時(shí)組數(shù)加1,若組數(shù)小于等于4,新的解碼閾值對(duì)第二組8 bit 前導(dǎo)碼進(jìn)行解碼并且過采樣,再次更新解碼閾值,此時(shí)第二組的解碼結(jié)果與預(yù)測值進(jìn)行比較,如果一致則組數(shù)加1,不一致,電路復(fù)位并重新檢測電路前導(dǎo)碼前2 bit屬于哪種形式,重新開始上述流程。一旦正確解出4組8 bit前導(dǎo)碼,則表示電路已經(jīng)穩(wěn)定,可以采用最后的解碼閾值對(duì)后面前導(dǎo)碼或者數(shù)據(jù)進(jìn)行解碼。在對(duì)4組8 bit后的前導(dǎo)碼進(jìn)行解碼的過程中,只需要對(duì)0.75 UI進(jìn)行過采樣,在過采樣過程中,若發(fā)現(xiàn)在0.75 UI的范圍內(nèi)檢測到邊沿變化則表示檢測到1,否則檢測到0。一旦檢測到1 或者0,剩下的0.25 UI 不需要進(jìn)行過采樣,直接解碼下一bit 前導(dǎo)碼的值。對(duì)下一個(gè)前導(dǎo)碼進(jìn)行解碼,同樣也是在0.75 UI 范圍內(nèi)進(jìn)行過采樣,并檢測有無邊沿變化,從而檢測到0 或者1,剩下的0.25 UI 就不需要過采樣,直接跳轉(zhuǎn)至下面的前導(dǎo)碼進(jìn)行檢測,以此類推。另外新型的BMC 解碼比起傳統(tǒng)的方法具有自動(dòng)校正功能,使得電路在解碼異常情況下即刻復(fù)位,保障了電路的可靠性,在面積和功耗上新型的解碼比傳統(tǒng)的解碼低?,F(xiàn)對(duì)新型BMC解碼結(jié)構(gòu)框圖中的各模塊介紹如下。
圖5 新型的BMC解碼結(jié)構(gòu)流程圖
濾波模塊對(duì)Type-C 接口的CC 線上的輸入數(shù)據(jù)進(jìn)行FIR濾波,F(xiàn)IR濾波器基本結(jié)構(gòu)如圖6所示[11-12]。由于Type-C 接口的數(shù)據(jù)會(huì)帶有毛刺,因而采用FIR 濾波器方案將毛刺濾除。FIR濾波器的公式如式(2)所示。該濾波器抽頭系數(shù)為1/8,濾波器階數(shù)為7。每隔7組即可判斷出CC 線上是真實(shí)數(shù)據(jù)還是毛刺,從而提高解碼的精度。
圖6 FIR濾波器的基本結(jié)構(gòu)
BMC 解碼模塊框圖如圖7 所示,采用18M 時(shí)鐘對(duì)所述濾波信號(hào)中的同步頭信號(hào)進(jìn)行過采樣,并確定解碼閾值,從而解出數(shù)據(jù)。其中BMC 解碼模塊細(xì)劃了3 個(gè)模塊,分別為前導(dǎo)碼的起始檢測模塊、解碼閾值模塊、解碼模塊,現(xiàn)對(duì)各模塊電路說明如下所示。
圖7 BMC解碼模塊框圖
前導(dǎo)碼起始檢測電路如圖8所示,bmc_data_filtered是濾波模塊對(duì)CC 線上的毛刺進(jìn)行濾除后的信號(hào),該電路主要判斷前導(dǎo)碼中2 bit屬于哪種形式,總共有3種形式,如圖9所示。由于采用Clk_18M時(shí)鐘去做邊沿檢測后的計(jì)數(shù)值有大有小。如圖9(a)計(jì)數(shù)值a小于c,b小于c表示0、1起始,圖9(b)計(jì)數(shù)值a大于b,a大于c表示1、0 起始,9(c)計(jì)數(shù)值b大于c,b大于a表示缺失1起始。這種處理方式避免了只在前導(dǎo)碼開頭處才能進(jìn)行解碼的缺點(diǎn),大大增加了電路的可靠性和電路的魯棒性。其中bmc_data_filtered信號(hào)打兩拍后進(jìn)行或運(yùn)算后得到bmc_data_filtered信號(hào)的上升沿和下降沿信號(hào),Equal1 是對(duì)bmc_data_filtered信號(hào)的高低進(jìn)行判斷,如高將觸發(fā)Add1 加法器,如低則將觸發(fā)Add0 加法器,并將加法器的值存于寄存器中,Equal2為判斷前導(dǎo)碼2 bit屬于哪種形式,并輸出training_start信號(hào),同時(shí)將2 bit的計(jì)數(shù)值除以2的結(jié)果輸出,此時(shí)的counter為1UI的值。
圖8 前導(dǎo)碼起始檢測電路
解碼閾值模塊電路如圖10 所示:ymain信號(hào)表示0.75 UI,reamble8_counter信號(hào)表示第幾組8 bit的數(shù)據(jù)。前導(dǎo)碼中2 bit檢測完成后開始解碼,此時(shí)開始解碼的標(biāo)志信號(hào)training_start拉高。通過前導(dǎo)碼中的前2 bit 數(shù)據(jù)可以確定高低電平的長度,算出1UI的counter值并以此為基準(zhǔn)來解出第一組8 bit數(shù)據(jù)。同時(shí)用18M時(shí)鐘對(duì)CC線上的第一組8 bit信號(hào)進(jìn)行采樣并對(duì)數(shù)據(jù)的高低電平進(jìn)行計(jì)數(shù),對(duì)高電平計(jì)數(shù)的計(jì)數(shù)值存于h_temp寄存器中,對(duì)低電平計(jì)數(shù)的計(jì)數(shù)值存于l_temp寄存器中,可以得出Counter_First8。用前導(dǎo)碼中的前2 bit數(shù)據(jù)解出1UI的counter值,將counter乘以3/4的結(jié)果供解碼模塊進(jìn)行解數(shù)。等8 bit數(shù)據(jù)解出來了后,解碼閾值模塊要更新UI的計(jì)數(shù)值,采用的是公式(3)滑動(dòng)平均濾波算法[13],就是將上一組8 bit 的高低電平計(jì)數(shù)值加起來然后與前導(dǎo)碼中的前2 bit 算的的1UI 值乘以8,最后將結(jié)果除以16,算得的結(jié)果才是新的UI的計(jì)數(shù)值,而0.75 UI的值才是解碼閾值ymain,ymain的值是解碼第二組數(shù)據(jù)的基礎(chǔ),ymain的算法如公式(4)所示。
接著以ymain值為基準(zhǔn)解第二組8 bit 數(shù)據(jù),同時(shí)將第二組高低電平的計(jì)數(shù)值存于Counter_Second8寄存器中,接著更新UI的計(jì)數(shù)值和ymain的值,為解第三組數(shù)據(jù)做準(zhǔn)備,算法如公式(5)所示,以此類推可以確定第三組、第四組的解碼閾值。其中Equal2 對(duì)bmc_data_filtered信號(hào)的邊沿進(jìn)行計(jì)數(shù)并判斷,滿12 時(shí)表明檢測到一組8 bit 數(shù)據(jù),此時(shí)reamble8_counter計(jì)數(shù)器加1,Equal3 對(duì)reamble8_counter進(jìn)行判斷,如為2 選通乘法器倍數(shù)為1/16 的通路,如為3 選通乘法器倍數(shù)為2/3 的通路,如為4選通乘法器倍數(shù)為1/2的通路,可以發(fā)現(xiàn)乘法器倍數(shù)為1/16 是一個(gè)復(fù)用邏輯。這種方法不僅使面積減少了而且可以降低電路功耗,降低制造成本,提高電路性能。
解碼模塊電路如圖11所示,在ymain值之內(nèi),如果檢測到邊沿跳變,則說明解碼到1,如果在ymain之內(nèi),沒有檢測到邊沿變化,則解碼到0。其中Equal3 判斷reamble8_counter值是否為4,如為4停止更新解碼閾值,并以此閾值為最終的解碼閾值進(jìn)行解碼。其中Equal2為ymain之內(nèi),有無檢測到邊沿變化。
圖9 前導(dǎo)碼起始檢測
圖10 解碼閾值模塊電路
圖11 解碼模塊電路
預(yù)期解碼模塊根據(jù)前導(dǎo)碼數(shù)據(jù)64 bit 的0101……的規(guī)律性,即可由當(dāng)前數(shù)據(jù)得出下一個(gè)前導(dǎo)碼數(shù)據(jù)值。因而檢測到0或者為1就可確定下一個(gè)解碼數(shù)據(jù)是1或者0,從而預(yù)測下一個(gè)前導(dǎo)碼解碼數(shù)據(jù)。校正模塊即將解出的前導(dǎo)碼數(shù)據(jù)與預(yù)期的前導(dǎo)碼數(shù)據(jù)進(jìn)行比較。比如,當(dāng)前正確的數(shù)據(jù)是0,根據(jù)協(xié)議規(guī)范下一個(gè)解碼數(shù)據(jù)應(yīng)為1,若此時(shí)解碼解出的數(shù)據(jù)是0,電路內(nèi)部會(huì)產(chǎn)生一個(gè)復(fù)位信號(hào)讓電路復(fù)位并且重新進(jìn)行解碼。只有電路準(zhǔn)確地把前導(dǎo)碼中的前32 bit 數(shù)據(jù)解出來,才能確定電路在解碼的過程中發(fā)生故障的可能性非常非常低,從而能提高解碼數(shù)據(jù)的精確度。輸出模塊即是將解出來的數(shù)據(jù)進(jìn)行寄存器輸出,由于寄存器輸出是時(shí)序電路,可以大大降低毛刺輸出的概率,避免亞穩(wěn)態(tài)的產(chǎn)生,從而避免了電路的癱瘓[14-15]。該算法增加了校正模塊,在該模塊中對(duì)BMC解碼模塊與預(yù)期解碼模塊輸出數(shù)值進(jìn)行相應(yīng)的比較,從而提高解碼精度。
傳統(tǒng)的算法只有在前導(dǎo)碼為64 bit時(shí)才能正確地解碼,如圖12(a),但是若出現(xiàn)前導(dǎo)碼小于64 bit時(shí),傳統(tǒng)的設(shè)計(jì)方案將會(huì)出現(xiàn)解碼問題,如圖12(b),前導(dǎo)碼為50 bit情況下。其中Clk_50M信號(hào)為50M時(shí)鐘,decode_data信號(hào)表示異常的解碼信號(hào),bmc_data_filtered信號(hào)表示待解碼的數(shù)據(jù)信號(hào),由圖12(b)可知,bmc_data_filtered信號(hào)為0時(shí),解出的decode_data信號(hào)為1。
圖12 傳統(tǒng)解碼
計(jì)算0.75 UI 值如圖13 所示,現(xiàn)對(duì)部分信號(hào)說明如下,bmc_data_filtered表示對(duì)CC線上的data進(jìn)行濾波后的信號(hào),training_start拉高之前的bmc_data_filtered信號(hào)就是前導(dǎo)碼中2 bit 檢測,stop_count_12edges表示檢測到12 個(gè)邊沿后這個(gè)信號(hào)就會(huì)產(chǎn)生一個(gè)脈沖,表示已經(jīng)檢測到了8 bit的數(shù)據(jù),h_temp表示CC線上高電平需要多少個(gè)18M 的時(shí)鐘周期,l_temp表示CC 線上低電平需要多少個(gè)18M 的時(shí)鐘周期。xvalue信號(hào)表示CC 線上高低電平的計(jì)數(shù)值的疊加。xmain信號(hào)表示將上一組的高低電平計(jì)數(shù)值與本組CC 線上的高低電平計(jì)數(shù)值之和,both_edge信號(hào)表示檢測到CC線上數(shù)據(jù)的上升沿和下降沿。前導(dǎo)碼的前2 bit計(jì)數(shù)值23+25+51=99,也就是說一個(gè)UI 的計(jì)數(shù)值為99/2=49,0.75 UI=36,所以ymain的值為36。第一組8 bit高低電平計(jì)數(shù)值和為396,因?yàn)榻獾谝唤M8 bit數(shù)據(jù)要將前導(dǎo)碼的前2 bit算上,也就是以前導(dǎo)碼中前2 bit 算的UI 為基準(zhǔn),解出第一組8 bit 的數(shù)據(jù)。第二組8 bit 數(shù)據(jù)的UI 的值是將第一組8 bitxmain的396 與前導(dǎo)碼的49×8,相加,將結(jié)果除以2 得到第二組8 bit 的總計(jì)數(shù)值,并且得出一個(gè)UI 的值與0.75 UI 的值,從而解出第二組8 bit 的數(shù)據(jù),依此類推,解出第三組、第四組等等。
圖13 計(jì)算0.75 UI值的波形
前導(dǎo)碼中2 bit判斷出來過后,接著就可以預(yù)測下面的數(shù)據(jù),是因?yàn)閁SB PD3.0 協(xié)議規(guī)定數(shù)據(jù)頭的形式是交替的64 bit的0和1,因而只要確定了前導(dǎo)碼就可以預(yù)測下面的碼。預(yù)測碼的波形如圖14所示。
圖14 預(yù)測碼的波形
現(xiàn)在對(duì)圖14 部分信號(hào)進(jìn)行說明,predicted_data信號(hào)是預(yù)測的信號(hào),比如剛開始解出的數(shù)據(jù)是1,就可以預(yù)測下一個(gè)數(shù)據(jù)就是0,如果預(yù)測的數(shù)據(jù)與解出的數(shù)據(jù)一致的話,可以確定數(shù)據(jù)解碼是正確的,如果解出的數(shù)據(jù)與預(yù)測的數(shù)據(jù)不一致就會(huì)發(fā)生復(fù)位,重新開始解碼。依此類推,直到把32 bit 的數(shù)據(jù)完全解出來為止。如果這32 bit 數(shù)據(jù)解碼都沒問題就可以確定電路確實(shí)已經(jīng)穩(wěn)定了,后面的預(yù)測電路將不會(huì)工作,從而降低了功耗[16]。
解出的碼與預(yù)測碼進(jìn)行比較,若兩者不一致則會(huì)產(chǎn)生復(fù)位信號(hào)使電路復(fù)位,若兩者一致則說明解出的碼是正確的。復(fù)位信號(hào)波形如圖15所示。
圖15 復(fù)位信號(hào)波形
現(xiàn)對(duì)圖15 信號(hào)說明如下:Clk_18M 信號(hào)即解碼的主時(shí)鐘,頻率肯定比CC 線上的數(shù)據(jù)高60 倍,根據(jù)過采樣定理,在進(jìn)行模擬或數(shù)字信號(hào)的轉(zhuǎn)換過程中,當(dāng)采樣頻率fs.max大于信號(hào)中的最高頻率fmax時(shí),采樣之后的數(shù)字信號(hào)完整的保留了原始信號(hào)中的信息。syn_rstn信號(hào)是預(yù)測的數(shù)據(jù)與解出的數(shù)據(jù)不一致,此信號(hào)拉低進(jìn)行復(fù)位,否則一直為高電平。bmc_data_filered信號(hào)是CC線上濾波后的數(shù)據(jù),decode_data信號(hào)是解碼出的數(shù)據(jù),predicted_data信號(hào)是預(yù)測的數(shù)據(jù)。
在設(shè)計(jì)的過程中,要考慮到芯片的面積和功耗。在不影響性能的前提下降低芯片的面積和功耗,不僅降低芯片的制造成本,而且提高芯片的性能指標(biāo)。采用DC工具分析[17],新型的BMC 解碼比傳統(tǒng)的方法面積要低2.19%,功耗上要低2.06%。兩種方法比對(duì)結(jié)果如表1所示。其中DC評(píng)估的是電路實(shí)現(xiàn)邏輯本身的功耗(與觸發(fā)器數(shù)量、時(shí)鐘頻率相關(guān)),與實(shí)際運(yùn)行功耗有一定的差異。實(shí)際上,本設(shè)計(jì)降低的功耗比表1 中的2.06%多。上述原因分析如下,傳統(tǒng)方法采用的是高速50M時(shí)鐘對(duì)BMC信號(hào)進(jìn)行解碼,新型方法采用低頻時(shí)鐘18M;傳統(tǒng)方法是計(jì)前導(dǎo)碼64 bit 的高低電平,將計(jì)數(shù)值除以64,得到1UI 的值,而新型方法只需要計(jì)8 bit 的高低電平,就可以獲得1UI,而這些計(jì)數(shù)值的寄存器的個(gè)數(shù)比起傳統(tǒng)方法要小;傳統(tǒng)方法將計(jì)數(shù)結(jié)果除以64,這會(huì)耗費(fèi)大量的資源,而新型方法采用了電路復(fù)用邏輯,這大大降低面積資源,新型方法增加了校正模塊與預(yù)期的解碼模塊,校正模塊基本上是采用組合邏輯比較器,預(yù)期的解碼模塊采用了時(shí)序邏輯,盡管采用時(shí)序邏輯,但都是單bit 信號(hào)的時(shí)序操作,因此占用面積比較少。其中校正模塊和預(yù)期的解碼模塊在4組前導(dǎo)碼檢測電路完成后,這部分電路將不會(huì)在繼續(xù)工作,從而降低電路運(yùn)行中的功耗。新型方法在4組前導(dǎo)碼檢測電路完成后,通過最終的解碼閾值對(duì)后面的前導(dǎo)碼進(jìn)行過采樣從而解碼,在過采樣中只需對(duì)0.75 UI進(jìn)行過采樣就可以判斷出前導(dǎo)碼是0 還是1,即新型的方法對(duì)64 bit 前導(dǎo)碼中剩下的30 bit乘以0.25部分不需要過采樣邏輯,而傳統(tǒng)對(duì)64 bit全部需要過采樣邏輯。綜上所述,新型的BMC 解碼比傳統(tǒng)的方法面積小,功耗低。
表1 兩種方法比對(duì)結(jié)果
新型BMC解碼具有自動(dòng)校正功能如圖16所示,如果解碼與預(yù)期的值不一致進(jìn)行電路復(fù)位,重新開始解碼,傳統(tǒng)的BMC解碼不具自動(dòng)校正功能如圖17所示。
圖16 自動(dòng)校正功能
圖17 無自動(dòng)校正功能
圖18 兩種方法解碼對(duì)比
新型的BMC 解碼在解碼抗干擾性要優(yōu)于傳統(tǒng)的BMC 解碼,抗干擾性對(duì)比如圖18 所示。由于傳統(tǒng)的設(shè)計(jì)方案是根據(jù)64 bit 前導(dǎo)碼得出解碼閾值,若出現(xiàn)前導(dǎo)碼只有50 bit 時(shí),傳統(tǒng)的設(shè)計(jì)方案將會(huì)出現(xiàn)解碼問題。圖18 所示,傳統(tǒng)算法中將數(shù)據(jù)100 誤解出了110 了,如信號(hào)decode_data_old所示,而新型的算法卻能將數(shù)據(jù)信號(hào)100 準(zhǔn)確無誤的恢復(fù)出來,如decode_data_new信號(hào)所示。傳統(tǒng)方法中前導(dǎo)碼小于64 bit會(huì)出現(xiàn)解碼錯(cuò)誤的原因分析如下,傳統(tǒng)方法首先統(tǒng)計(jì)高低電平計(jì)數(shù)值,一旦檢測到96個(gè)輸入信號(hào)的邊沿,表明前導(dǎo)碼64 bit已經(jīng)統(tǒng)計(jì)結(jié)束,因此將統(tǒng)計(jì)值除以64得到1UI值,而這64 bit是0與1相互交替,若前導(dǎo)碼丟失,假設(shè)只有50 bit,傳統(tǒng)方法將會(huì)將部分?jǐn)?shù)據(jù)當(dāng)成前導(dǎo)碼,等邊沿計(jì)數(shù)器計(jì)滿96,此時(shí)的統(tǒng)計(jì)值比64 bit 前導(dǎo)碼的統(tǒng)計(jì)值偏大或者偏小,因此將造成1UI 值以及解碼閾值不準(zhǔn)確,從而造成解碼數(shù)據(jù)不正確。
本文針對(duì)傳統(tǒng)解碼電路具有功耗高、面積大、無校正功能、抗干擾性差等缺點(diǎn),提出了一種魯棒性強(qiáng)、低功耗、面積小,且具有自動(dòng)校正功能的新型BMC 解碼設(shè)計(jì)。該電路采用了濾波算法和滑動(dòng)平均算法等策略,并增加了校正模塊來提高電路的魯棒性。研究表明該電路在功能上比傳統(tǒng)的設(shè)計(jì)要完備以外,還降低了芯片面積與功耗,使得制造成本大幅度下降。該設(shè)計(jì)電路從BMC 編解碼原理來說解碼并不復(fù)雜,但是設(shè)計(jì)出可靠的硬件電路不是一件易事,畢竟在設(shè)計(jì)電路時(shí)不僅要考慮到安全可靠性,而且還要考慮到電路的功耗和面積。為了進(jìn)一步研究,今后的工作是將此電路如何運(yùn)用到USB PD芯片中。