張萬榮,王飛虎
(北京工業(yè)大學(xué) 信息學(xué)部,北京 100000)
近年來,隨著移動設(shè)備快速充電功率的不斷提高,USB 標準化組織(Universal Serial Bus Implementers Forum,USB-IF)制定了基于BMC 編碼的USB 功率傳輸(Universal Serial Bus Power Deliver,USB PD)3.0 協(xié)議,該協(xié)議相比于Qualcomm 公司的快速充電(Quick Charge,QC)協(xié)議、Samsung 公司的自適應(yīng)快速充電(Adaptive Fast Charge,AFC)協(xié)議等快充協(xié)議具有只占用一根通信線,協(xié)議內(nèi)容可拓展性強等優(yōu)點,已成為應(yīng)用最廣的快充協(xié)議[1-3]。BMC 解碼模塊是USB PD 3.0 協(xié)議芯片的核心模塊[4-6]。隨著手機快充功率突破120 W,峰值電流可達到6.25 A,電流大范圍變化帶來的地電位漂移現(xiàn)象愈發(fā)嚴重,地電位漂移導(dǎo)致BMC 信號在傳輸過程中周期多次連續(xù)變化使得BMC 信號周期累計變化范圍可達3.3 μs 的±30%[7];隨著USB 線中數(shù)據(jù)傳輸速率提高到20 Gb/s 使,USB 線包內(nèi)的電磁環(huán)境更加惡劣,從而使得BMC 信號在傳輸過程中受到大量高頻噪聲干擾而導(dǎo)致周期單次大幅度突變[8]。為解決上述問題,近年來人們提出了一些對BMC 解碼模塊優(yōu)化的方案,文獻[9]提出了一種解碼電路能夠成功解碼周期在3.3 μs±25%范圍內(nèi)變化的BMC信號,但是當(dāng)BMC 信號周期累計變化到±30%時不能成功解碼,而是通過錯誤反饋機制強制USB PD 3.0 協(xié)議芯片回到初始狀態(tài)。
針對上述文獻的不足,本文在傳統(tǒng)解碼模塊的基礎(chǔ)上,首先,通過調(diào)整傳統(tǒng)解碼系統(tǒng)的結(jié)構(gòu)并加入狀態(tài)機實現(xiàn)了對信號周期單次變化在±25%以內(nèi)的BMC 信號成功解碼;另外,通過新增的FIR 濾波器產(chǎn)生隨BMC 信號周期浮動的解碼閾值實現(xiàn)了對周期多次連續(xù)變化的BMC 信號成功解碼。
BMC 解碼規(guī)則如圖1 所示,被解碼信號在每一比特開始前先進行一次翻轉(zhuǎn),如果某一比特的1/2 位置發(fā)生了一次翻轉(zhuǎn),則該比特被解碼成二進制數(shù)1,如圖1 中第1 比特和第3 比特所示;如果被解碼信號某一比特內(nèi)不發(fā)生翻轉(zhuǎn),則該比特被解碼成0,如圖1 中第2 比特和第4 比特所示[10-11]。
圖1 BMC 解碼規(guī)則
傳統(tǒng)的BMC 解碼系統(tǒng)電路結(jié)構(gòu)如圖2 所示,包括濾波模塊、邊沿檢測模塊、解碼模塊[12]。首先,數(shù)字BMC信號是由模擬信號經(jīng)過施密特觸發(fā)器得到的,容易帶有毛刺,濾波模塊可以濾除寬度為200 ns 以下的毛刺;然后,邊沿檢測模塊輸出的BMC 信號的上升沿和下降沿作為解碼模塊中計數(shù)器開始和結(jié)束的條件;最后,解碼模塊通過對BMC 信號64 比特前導(dǎo)碼的過采樣求周期的平均值得到解碼閾值,通過對比解碼閾值和計數(shù)器計數(shù)值的大小解碼數(shù)據(jù)包的有效數(shù)據(jù)部分,當(dāng)計數(shù)器的值小于3/4 解碼閾值時解碼結(jié)果為1,否則為0。從而實現(xiàn)了BMC 信號的解碼。
圖2 傳統(tǒng)BMC 解碼系統(tǒng)電路結(jié)構(gòu)
為了實現(xiàn)對信號周期單次變化在±25%以內(nèi)的BMC信號成功解碼,本文將計數(shù)器從解碼模塊中分離出來并在解碼模塊內(nèi)新增狀態(tài)機。新型BMC 解碼電路架構(gòu)如圖3 所示,其中優(yōu)化后的解碼模塊電路原理圖如圖4所示,Threshold 值進入解碼模塊后先進行移位操作得到1/2Threshold 和1/4Threshold,然后將1/2Threshold 和1/4Threshold、Threshold 和1/4Threshold、1/2Threshold 和Threshold 分別進行加法運算得到3/4Threshold、5/4Threshold、3/2Threshold 的值,通過比較器后得到它們與Cnt 值的大小關(guān)系,將比較結(jié)果與Edge 信號做與運算后作為狀態(tài)寄存器的跳轉(zhuǎn)條件,D register1 和D register2 構(gòu)成狀態(tài)機的2 比特位寬的狀態(tài)寄存器,D register3 為輸出寄存器,當(dāng)狀態(tài)寄存器值為01 且與門And1 產(chǎn)生的結(jié)果為1時輸出1,當(dāng)狀態(tài)寄存器值10 與門And1 產(chǎn)生的結(jié)果為1 時輸出0。優(yōu)化后的解碼模塊與其他模塊間的協(xié)作方式如圖5 所示。首先,BMC_Signal 信號經(jīng)過消抖模塊打拍后得到BMC_Signal_Filtered 信號,當(dāng)解碼模塊檢測到BMC_Signal_Filtered 信號后認為數(shù)據(jù)開始傳輸,狀態(tài)機從Idle 狀態(tài)跳到Counter_First 狀態(tài),同時邊沿檢測模塊會檢測到BMC_Signal_Filtered 信號的出現(xiàn),從而激發(fā)計數(shù)器開始工作。然后,當(dāng)BMC_Signal 信號發(fā)生跳變時會再次被邊沿檢測模塊捕捉到并使得邊沿檢測模塊產(chǎn)生脈沖信號Edge,當(dāng)解碼模塊在Counter_First 狀態(tài)檢測到Edge信號時會比較計數(shù)器產(chǎn)生的Cnt 和閾值Threshold 的大小,如果Cnt 的值處于3/4Threshold 和5/4Threshold 之間,則將當(dāng)前比特的BMC 信號解碼為0;如果Cnt 的值處于1/4Threshold 和3/4Threshold 之間,則將當(dāng)前比特的BMC 信號解碼為1。因此,新型BMC 解碼電路可對信號周期發(fā)生1/4 形變的信號解碼。
圖3 新型BMC 解碼系統(tǒng)電路結(jié)構(gòu)
圖4 解碼模塊電路原理圖
圖5 新型BMC 解碼系統(tǒng)協(xié)作方式
為了實現(xiàn)對周期多次連續(xù)變化的BMC 信號成功解碼,本文在新型解碼電路中增加FIR 濾波模塊。新型BMC 解碼電路架構(gòu)如圖3 所示,其中FIR 濾波器電路原理圖如圖6 所示,其為四階FIR 濾波器,本文設(shè)計的FIR濾波器的高通區(qū)間為250~350 kHz,通過MATLAB 調(diào)用FIR 濾波函數(shù)計算得到抽頭系數(shù)分別為61、30、16、15。為了減小芯片面積且便于電路實現(xiàn),本文將抽頭系數(shù)h近似為1/2、1/4、1/8、1/8[13-15],由式(1)可知輸出結(jié)果Threshold 值不再是固定值,而隨相鄰Cnt 值同向變化。由圖3 和圖5 可知,F(xiàn)IR 濾波器的輸入Cnt 值由計數(shù)器和解碼模塊共同決定,當(dāng)解碼模塊在Counter_First 狀態(tài)或者在Counter_Second 狀態(tài)檢測到Edge 信號時比較對計數(shù)器產(chǎn)生的Cnt 和閾值Threshold 的大小,如果Cnt 的值處于3/4Threshold 和5/4Threshold 之間,則將計數(shù)器的值打入FIR 濾波器。FIR 濾波器每接收到一次計數(shù)器的傳遞來的結(jié)果就會通過FIR 算法更新一次傳送給解碼模塊的Threshold 值,從而完成更新Threshold 的值的正反饋,達到了連續(xù)多比特位寬均變化時仍可以成功解碼的目標。
圖6 FIR 濾波器電路原理圖
傳統(tǒng)解碼算法能夠允許的BMC 信號周期變化范圍為25%,由于供電功率增大或減小導(dǎo)致BMC 信號周期變化超過25%時會導(dǎo)致解碼失敗[16]。圖7 為傳統(tǒng)解碼模塊對周期連續(xù)變化的BMC 信號進行解碼的仿真結(jié)果。BMC_Signal 為待解碼的BMC 輸入信號;Number 表示當(dāng)前輸入的BMC_Signal 信號的序號;BMC_Signal_Filtered為BMC_Signal 經(jīng)過濾波后得到的信號;Edge 信號為邊沿檢測模塊的檢測結(jié)果;Counter 為計數(shù)器的值,計數(shù)器以19.2 MHz 的頻率對 BMC_Signal 信號進行過采樣;Counter_Result 為計數(shù)器對前一位BMC_Signal 信號的采樣結(jié)果,例如,Number 為2 時Counter_Result 為64 表示計數(shù)器以19.2 MHz 的頻率需計數(shù)64 次完成對Number為1 時BMC_Signal 的采樣;BMC_Decode_Result 為解碼結(jié)果。由圖7 可知,本文仿真了輸入信號BMC_Signal 的前10位的周期以6.25%的速度增加,第10 位到13 位周期保持不變,第13 位到第21 位周期以6.25%的速度升高。周期變化幅度小于25%時,BMC_Signal 的前5 位能夠成功解碼,第6 位到第17 位變化幅度超過25% BMC_Decode_Result 一直為0,解碼失敗,第18 位后BMC_Signal 信號周期重新升到3.33 μs±25%的范圍內(nèi)后,傳統(tǒng)解碼模塊再次正確解碼。由仿真可知,傳統(tǒng)BMC 解碼模塊只可以對周期在3.33 μs±25%范圍內(nèi)的信號進行解碼。
圖7 傳統(tǒng)解碼模塊仿真結(jié)果
由圖8 可知,本文仿真了輸入信號BMC_Signal 第4位中的254 ns 寬的毛刺成功被消抖模塊濾除,濾波后的信號BMC_Signal_Filtered 沒有毛刺;輸入信號BMC_Signal 前10 位的周期以6.25%的速度增加,第14 位到第18 位的周期以6.25%的速度減小,由于加入了FIR 濾波器使得Threshold 值隨Counter_Result 增大或減小,從而新型BMC解碼電路均能成功解碼。
圖8 新型解碼模塊仿真結(jié)果
本文與文獻[9]的性能比較見表1 所列,本文設(shè)計的新型BMC 解碼電路可對任意頻率的BMC 信號進行解碼,文獻[9]僅可以對周期在300 kHz±25%范圍內(nèi)的信號進行解碼,且在華虹半導(dǎo)體0.18 μm 工藝下面積相比于文獻[9]減少了57.29%,功耗相比于文獻[9]減少了89.10%。
表1 性能比較
為了實現(xiàn)對單比特周期突變25%的BMC 信號解碼,而且能夠?qū)χ芷诙啻芜B續(xù)變化的BMC 信號成功解碼,本文將計數(shù)器從解碼模塊中分離出來并在解碼模塊內(nèi)新增狀態(tài)機,另外在傳統(tǒng)解碼電路中增加了FIR 濾波模塊。狀態(tài)機的跳轉(zhuǎn)條件為Cnt 值相對于Threshold 值可變化1/4,實現(xiàn)了對單比特周期突變25%的BMC 信號的解碼;新增的FIR 濾波器使得Threshold 值隨Cnt 值線性變化,實現(xiàn)了對周期多次連續(xù)變化的BMC 信號成功解碼。對新型BMC 解碼電路的仿真結(jié)果表明,可以對周期相差25%的相鄰兩位BMC 信號解碼,可以對周期以6.25%增加的連續(xù)十位進行解碼。