“使用由 MATLAB 和 Deep Learning Toolbox 設(shè)計和訓練的神經(jīng)網(wǎng)絡(luò)來對 ADC 誤差進行后校正后,在 ASIC 上實現(xiàn)時,恩智浦設(shè)計的神經(jīng)網(wǎng)絡(luò)所需的面積只有 ADC 的 15%,正常工況下的功耗是 ADC 的大約 1/16。”
以集成電路 (IC) 形式實現(xiàn)的模數(shù)轉(zhuǎn)換器 (ADC) 容易因 IC 制造缺陷而產(chǎn)生誤差。
晶體管、電阻和電容等模擬元件失配會導(dǎo)致信號失真,如導(dǎo)致嚴重的總諧波失真 (THD)。
減少 ADC 誤差的一種方法是使用更大的模擬元件來增強設(shè)計。
這種方法通過提高匹配來降低失真系數(shù),但需要更多面積和功耗。
第二種方法是增加校準電路,但這也需要額外的芯片面積,增加了成本和功耗,而且,這通常還要求了解待校準誤差的確切成因。
在恩智浦半導(dǎo)體埃因霍溫總部,我和同事使用由 MATLAB 和 Deep Learning Toolbox 設(shè)計和訓練的神經(jīng)網(wǎng)絡(luò)來對 ADC 誤差進行后校正。
在 ASIC 上實現(xiàn)時,該網(wǎng)絡(luò)所需的面積只有 ADC 的 15%,正常工況下的功耗是 ADC 的大約 1/16。
設(shè)計和訓練神經(jīng)網(wǎng)絡(luò)
我們在實驗室中向 30 個 ADC 樣本(裸片)輸入?yún)⒖夹盘柌⒉东@數(shù)字輸出,從而生成訓練數(shù)據(jù)。我們另外留出 10 個樣本用于驗證網(wǎng)絡(luò)。
由于 ADC 誤差同時受溫度和電壓的影響,我們在九種不同的電壓與溫度組合下測試每個樣本,總共獲得 360 個測量值。
我們使用信號處理方法對數(shù)據(jù)進行預(yù)處理,然后使用測得的 ADC 數(shù)字輸出值作為神經(jīng)網(wǎng)絡(luò)的輸入。我們將校正后的輸出信號與原始參考信號進行比較,據(jù)此更新網(wǎng)絡(luò)系數(shù)(圖 1)。
圖 1.神經(jīng)網(wǎng)絡(luò)訓練設(shè)置。
項目剛開始的時候,我沒怎么用過神經(jīng)網(wǎng)絡(luò),因此不確定網(wǎng)絡(luò)該有多復(fù)雜。
最初,我在 MATLAB 中創(chuàng)建了基本的兩層和三層網(wǎng)絡(luò),并在各層嘗試不同的神經(jīng)元數(shù)量。第一層和第二層的神經(jīng)元使用 sigmoid 激活函數(shù),輸出層激活函數(shù)則是線性的。使用的代價函數(shù)是最小均方 (LMS) 代價函數(shù)。
我們基于手頭的數(shù)據(jù)集和上述早期配置訓練網(wǎng)絡(luò),發(fā)現(xiàn)可以加入電壓和溫度測量值作為預(yù)測變量來提高網(wǎng)絡(luò)性能。經(jīng)過這一更改,網(wǎng)絡(luò)在各種溫度和電壓條件下的性能都有顯著提升。
計算 IC 面積和功耗
現(xiàn)在,這個神經(jīng)網(wǎng)絡(luò)能夠有效地后校正 ADC 誤差,那下一步就是計算它需要多少芯片面積和功耗。
為此,我從 MATLAB 生成了經(jīng)過訓練的神經(jīng)網(wǎng)絡(luò)的 Simulink 模型。
接下來,我使用 Fixed-Point Designer 量化所有網(wǎng)絡(luò)系數(shù),然后使用 HDL Coder 從網(wǎng)絡(luò)生成 VHDL 代碼。
我的同事通過 HDL Verifier 協(xié)同仿真在 Simulink 中驗證生成的 VHDL,然后使用 Cadence Genus 來綜合設(shè)計。
他還在 Cadence 平臺上使用 28 納米 CMOS 制程進行物理實現(xiàn),生成功耗報告,并計算使用的柵極數(shù)量和這些柵極所需的面積。
分析結(jié)果表明,使用神經(jīng)網(wǎng)絡(luò)校正 ADC 誤差,面積和功耗成本都相對較低。
要實現(xiàn)一個能將信噪比提高約 17 dB 的網(wǎng)絡(luò),只需 4600 多個柵極,占據(jù) 0.0084 平方毫米的芯片面積。ADC 的面積是 0.06 平方毫米,是網(wǎng)絡(luò)的七倍多。當處于活動狀態(tài)時,網(wǎng)絡(luò)功耗大約 15 μW,而 ADC 功耗為 233 μW。
作為誤差校正電路,這樣的面積和功耗估計值可以說是過關(guān)了,但我相信,我們還可以通過優(yōu)化改進這些數(shù)字。即便我在機器學習方面經(jīng)驗尚淺,但用 VHDL 實現(xiàn)網(wǎng)絡(luò)的這個工作流并不復(fù)雜。
因此,雖然我是新手,但相比傳統(tǒng)方法,我也并沒有多花太多時間,就設(shè)計和實現(xiàn)了基于神經(jīng)網(wǎng)絡(luò)的電路。
提高可重用性和可移植性
近期,我們計劃在幾個方向進行探索,驗證神經(jīng)網(wǎng)絡(luò)在 ADC 誤差校正中的應(yīng)用。
首先,我們希望更好地了解經(jīng)過訓練的網(wǎng)絡(luò)是如何執(zhí)行誤差校正的,以便將生產(chǎn)環(huán)境下出現(xiàn)意外行為的風險降至最低。
其次,我們想擴展我們的數(shù)據(jù)集。我們需要知道,如果使用 100 萬個而不是僅僅 40 個樣本,之前的結(jié)果是否依然成立。
最后,我們想衡量神經(jīng)網(wǎng)絡(luò)的可重用性。我們預(yù)計,相比傳統(tǒng)設(shè)計,這一網(wǎng)絡(luò)能夠更有效地補償各種 ADC 上的不同誤差,因為網(wǎng)絡(luò)能夠適應(yīng)各種各樣的傳遞函數(shù)。
不過,我們需要進一步的測試來驗證此假設(shè)。
原文標題:MATLAB 芯思路 | 用神經(jīng)網(wǎng)絡(luò)對 ADC 誤差進行后校正
文章出處:【微信公眾號:MATLAB】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
審核編輯:湯梓紅
-
芯片
+關(guān)注
關(guān)注
452文章
50206瀏覽量
420879 -
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4733瀏覽量
100415 -
adc
+關(guān)注
關(guān)注
98文章
6391瀏覽量
543766
原文標題:MATLAB 芯思路 | 用神經(jīng)網(wǎng)絡(luò)對 ADC 誤差進行后校正
文章出處:【微信號:MATLAB,微信公眾號:MATLAB】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論