在NXP的Eindhoven總部,採(cǎi)用以MATLAB和深度學(xué)習(xí)工具箱(Deep Learning Toolbox)設(shè)計(jì)、訓(xùn)練的類(lèi)神經(jīng)網(wǎng)路來(lái)對(duì)ADC錯(cuò)誤進(jìn)行後校正,進(jìn)而瞭解ASIC在正常操作條件下消耗的功率狀況。
在製程當(dāng)中,積體電路(integrated circuits;IC)若稍有缺陷,可能就會(huì)造成類(lèi)比數(shù)位轉(zhuǎn)換器(analog-to-digital converters,ADCs)實(shí)現(xiàn)到IC上的錯(cuò)誤;像是電晶體、電阻器、電容器等類(lèi)比元件的不匹配(mismatch)可能導(dǎo)致訊號(hào)失真,例如不佳的總諧波失真(total harmonic distortion;THD)。

圖1 : 在製程當(dāng)中,積體電路(IC)若稍有缺陷,可能就會(huì)造成類(lèi)比數(shù)位轉(zhuǎn)換器(ADCs)實(shí)現(xiàn)到IC上的錯(cuò)誤。(source: Science Mill) |
|
至於減少ADC錯(cuò)誤的方法之一,在於使用更大型的類(lèi)比元件來(lái)擴(kuò)大設(shè)計(jì),這種方法雖可以改善匹配、進(jìn)而改善失真的數(shù)字,但卻需要配置更大的面積及更多電力;第二種方法則是加入校正電路系統(tǒng),但是這需要額外的矽面積,並增加成本與功耗—而且在執(zhí)行校正時(shí),通常還必須要知道錯(cuò)誤發(fā)生的原因。
在NXP的Eindhoven總部,我們使用以MATLAB和深度學(xué)習(xí)工具箱(Deep Learning Toolbox)設(shè)計(jì)、訓(xùn)練的類(lèi)神經(jīng)網(wǎng)路來(lái)對(duì)ADC錯(cuò)誤進(jìn)行後校正,結(jié)果在ASIC上執(zhí)行實(shí)現(xiàn)的時(shí)候,這個(gè)網(wǎng)路只需要ADC面積的15%,而且在正常操作條件下,消耗的功率大約減少16倍。
設(shè)計(jì)與訓(xùn)練類(lèi)神經(jīng)網(wǎng)路
在實(shí)驗(yàn)室輸入一組參考訊號(hào)給30個(gè)ADC樣本(裸晶),再捕捉其數(shù)位輸出值來(lái)產(chǎn)生訓(xùn)練資料,並且另外設(shè)置了10個(gè)樣本來(lái)驗(yàn)證該神經(jīng)網(wǎng)路。因?yàn)锳DC的錯(cuò)誤會(huì)受到溫度和電壓的影響,因此,將每一個(gè)樣本以九種電壓與溫度的組合來(lái)進(jìn)行測(cè)試,總共產(chǎn)生360筆量測(cè)資料。
接下來(lái),使用訊號(hào)處理的技巧來(lái)對(duì)資料進(jìn)行前處理,然後使用量測(cè)到的ADC數(shù)位輸出值,作為類(lèi)神經(jīng)網(wǎng)路的輸入值,網(wǎng)路的係數(shù)會(huì)隨著校正後輸出訊號(hào)與原始參考訊號(hào)的比對(duì)而更新(圖1)。

圖2 : 類(lèi)神經(jīng)網(wǎng)路的訓(xùn)練設(shè)置。 |
|
在這項(xiàng)專(zhuān)案開(kāi)始之際,我還沒(méi)有太多關(guān)於類(lèi)神經(jīng)網(wǎng)路的經(jīng)驗(yàn),也不確定網(wǎng)路需要有多高的複雜度。因此,先從在MATLAB建立基礎(chǔ)的兩層和三層網(wǎng)路開(kāi)始,並且在每一層設(shè)置不同數(shù)量的神經(jīng)元。第一層和第二層的神經(jīng)元使用一個(gè)S型激勵(lì)函數(shù)(sigmoid activation function),輸出層的激勵(lì)函數(shù)則為線性。成本函數(shù)則使用為一個(gè)最小均方(least mean squares;LMS)成本函數(shù)。
利用我們的資料集完成這些早期網(wǎng)路架構(gòu)的訓(xùn)練之後,我發(fā)現(xiàn)可以將電壓與溫度的量測(cè)值加入為預(yù)測(cè)因子,用來(lái)改善網(wǎng)路的表現(xiàn)。執(zhí)行這項(xiàng)變更之後,這個(gè)網(wǎng)路在各種溫度與電壓條件下的表現(xiàn)有了顯著的改善。
評(píng)估IC面積與功率
有了一個(gè)可對(duì)ADC錯(cuò)誤進(jìn)行後校正的類(lèi)神經(jīng)網(wǎng)路之後,我想要評(píng)估它需要的矽面積與功率。為了進(jìn)行這項(xiàng)任務(wù),我從MATLAB產(chǎn)生一個(gè)訓(xùn)練過(guò)之神經(jīng)網(wǎng)路的Simulink模型。
接下來(lái),利用定點(diǎn)設(shè)計(jì)工具箱(Fixed-Point Designer)將網(wǎng)路所有的係數(shù)量化,並透過(guò)硬體描述語(yǔ)言轉(zhuǎn)碼器(HDL Coder)產(chǎn)生VHDL程式碼,而我的同事則以HDL設(shè)計(jì)驗(yàn)證工具(HDL Verifier)對(duì)在Simulink產(chǎn)生出來(lái)的VHDL進(jìn)行協(xié)同模擬以作為驗(yàn)證,然後再使用Cadence Genus來(lái)合成設(shè)計(jì),他也透過(guò)Cadence環(huán)境來(lái)執(zhí)行28奈米CMOS技術(shù)的物理實(shí)現(xiàn)、產(chǎn)生功率報(bào)告、計(jì)算使用的閘道數(shù)和這些閘道需要的面積。
從分析的結(jié)果看來(lái),類(lèi)神經(jīng)網(wǎng)路能夠以相對(duì)較小的面積和較少的功率成本來(lái)進(jìn)行ADC錯(cuò)誤的校正,一個(gè)類(lèi)神經(jīng)網(wǎng)路僅需要4600多個(gè)閘以及0.0084 mm2 的矽面積,就可以讓訊噪比(signal-to-noise ratio;SNR)改善約17分貝(dB)。在啟用時(shí),該神經(jīng)網(wǎng)路大約只消耗15 μW的功耗,而ADC會(huì)需要233 μW功耗。
對(duì)於已校正錯(cuò)誤的電路來(lái)說(shuō),面積與功耗兩者的估算都被視為可接受的程度,但再經(jīng)過(guò)優(yōu)化之後,這些數(shù)字會(huì)再改善。雖然我在機(jī)器學(xué)習(xí)的經(jīng)驗(yàn)相對(duì)較少,不過(guò)這項(xiàng)將神經(jīng)網(wǎng)路實(shí)現(xiàn)到VHDL所使用的工作流程非常直觀,使得即使是這項(xiàng)流程的新手,從設(shè)計(jì)到實(shí)現(xiàn)這個(gè)基於類(lèi)神經(jīng)網(wǎng)路的電路所花費(fèi)的時(shí)間,也並不會(huì)比傳統(tǒng)的方法來(lái)得長(zhǎng)。
增加重複使用性與可攜帶性
在近期之內(nèi),我們計(jì)畫(huà)進(jìn)一步探索幾種方法來(lái)驗(yàn)證透過(guò)以類(lèi)神經(jīng)網(wǎng)路來(lái)進(jìn)行ADC錯(cuò)誤校正的成果。
首先,我們希望更了解該訓(xùn)練的網(wǎng)路執(zhí)行錯(cuò)誤校正的效果如何,可以將生產(chǎn)階段可能出現(xiàn)意外行為的風(fēng)險(xiǎn)降到最小。再來(lái),希望擴(kuò)展我們的資料集,想知道使用一百萬(wàn)個(gè)樣本所達(dá)到的結(jié)果和使用40個(gè)樣本的結(jié)果是否相同。
最後,我們希望衡量類(lèi)神經(jīng)網(wǎng)路的重複使用性有多高。因?yàn)榫W(wǎng)路可以搭載很廣泛的轉(zhuǎn)移函數(shù)(transfer functions),所以也期待用一個(gè)單一神經(jīng)網(wǎng)路可以比傳統(tǒng)設(shè)計(jì)能更有效地去彌補(bǔ)橫跨各種類(lèi)型的ADCs錯(cuò)誤,然而,我們還是需要再做進(jìn)一步的測(cè)試來(lái)驗(yàn)證這項(xiàng)假設(shè)。
(本文由鈦思科技提供;作者Robert van Veldhoven任職於NXP Eindhoven公司)