王新勝,李宗霖,王夕悅
(哈爾濱工業大學(威海),山東 威海 264209)
航天事業是我國群策群力發展的重要事業,航天事業的穩步向前離不開航天器的可靠性,電子元器件是航天技術快速提升的關鍵[1]。航天器正常工作時一般位于太空中,太空中存在大量高能粒子,如果集成電路暴露在太空環境中,那么集成電路將迅速出錯甚至失效,有許多航天器受到空間環境影響而出現故障,其中45%左右的故障是由各類輻射失效所導致的[2]。隨著集成電路工藝技術的發展,納米級的MOSFET會產生一些新的輻射效應[3]。實時判斷集成電路所處的工作狀態,診斷集成電路的輻射失效狀態,及時采取處理措施可以很大程度地降低航天器出現故障的概率。
憶阻器是具有一定“記憶”特性的4種電學基本元件之一,目前主要的應用方向有數據存儲、邏輯運算、神經網絡運算等[4],且憶阻器可以與CMOS電路集成。憶阻器電路在數值運算方面比CMOS電路更具優勢,在實現2×2乘法器時,使用純CMOS搭建需要62個器件,而使用憶阻器與MOSFET混合搭建時僅需要36個器件就可以實現相同功能[5],憶阻器也可以實現模擬信號的乘法。使用憶阻器交叉陣列[6]搭建CNN的硬件電路是一種完美選擇,通過憶阻器搭建的智能集成電路輻射效應診斷系統,可以將診斷電路與待診斷電路集成,可以有效掌控電路的狀態,保障系統的可靠性。
對于SRAM單粒子效應的模型最早使用的是矩形注入脈沖模型,其波形形狀與真實高能粒子入射器件所產生的波形相差較大。
雙指數注入脈沖模型是優于矩形模型的一種單粒子效應模型,該模型的公式為:

式中包含雙指數函數,通過模型對參數a1、a2、p1、p2進行參數提取,將提取的值代入就可以獲得一個相對貼合的單粒子效應模型。
目前,最適合最常用的單粒子效應模型是瞬態注入脈沖模型,其模型中的參數不僅擁有實際物理意義,且其仿真波形與實際情況十分接近,瞬態注入脈沖模型的表達式為:

式中:I為瞬態注入脈沖模型的電流;Q0為高能粒子向器件中注入的電荷量;τ為與電荷重組相關的時間常數;t為當前時間。
瞬態注入脈沖模型中的參數Q0主要影響瞬態電流源的電流幅值,而時間參數τ主要影響的是瞬態電流的寬度,也就是電荷被吸收掉的時間。該模型重復考慮了不同能量的高能粒子入射時電流波形的不同,與入射高能粒子的LET值具有相關性,十分貼合器件受到高能粒子輻射時的電流波形。
通過建立好的NMOS模型,研究了器件受到單粒子輻射時的漏極電流,圖1為器件在受到不同能量高能粒子入射時漏極電流的波形圖,由圖1可知,隨著高能粒子的LET的增加,器件中注入的電荷量隨之升高,電荷被吸收掉的時間也會隨之增加。

圖1 不同LET的高能粒子輻射下的器件漏極電流變化
通過Python編寫腳本,對TCAD中仿真的單粒子效應數據中的Q0和τ進行提取,程序的主要功能是:按文件順序讀取所有仿真得到的csv格式的文件,通過文件名來判斷LET的數值,之后通過對csv中數值的讀取及處理之后計算出2個重要參數。對單粒子效應數據,本文在不同條件下采集了多組數據,其中數據的變量包括:高能粒子入射位置和角度、高能粒子的LET、高能粒子的入射距離、高能粒子的半徑。
之后,在仿真軟件Virtuoso中,通過Verilog-A語言編寫了單粒子效應的模型,該模型是一種單端口的電流源,并可以與其他電路直接仿真,該模型的仿真結果如圖2所示。

圖2 Virtuoso中單粒子效應瞬態電流源仿真結果
對于SRAM總劑量效應的仿真,根據NMOS總劑量輻射效應機理,主要針對NMOS閾值電壓的改變和MOS漏極電流的變化,仿真時對器件受到總劑量效應時的情況進行模擬。對于輻射劑量對NMOS閾值電壓的關系,描述為:

式中:ΔVit為NMOS閾值電壓的變化量(V);D為器件受到的輻射總劑量(krad)。
圖3為器件受到0~150 krad輻射時NMOS閾值電壓的變化與輻射劑量的關系曲線,在器件受到的輻射總劑量較低時,器件的閾值電壓漂移量與輻射劑量基本是線性關系。
通過對漏極電流和電場強度的仿真提取就可以間接計算出器件中的載流子數目,進而求得器件1/f噪聲的噪聲幅值。器件中的總載流子數計算公式為:

式中:W為器件結構的寬;Ex為器件溝道內的電場強度。

圖3 總劑量效應的NMOS閾值電壓漂移與輻射劑量的關系
1/f噪聲的得名是由于其噪聲功率與頻率成反比,即在低頻時噪聲功率比較大,用于描述器件1/f噪聲的頻率與噪聲功率關系的參數稱為1/f噪聲的頻率指數,一般來說,NMOS的1/f噪聲的頻率指數一般為1.0~2.0。另外,對于器件內部1/f噪聲產生的機理來說,描述噪聲產生時間的公式為:

式中,z為陷阱的相對距離。
總劑量下器件漏極電流變化值的表達式如式(6)所示,通過器件模型提取出不同輻射劑量下的ΔNt,就可以計算出器件的漏極電流。

NMOS電路級閾值電壓漂移的仿真模型如圖4所示,通過在NMOS柵極外加電壓源的方法來仿真NMOS的閾值電壓漂移。

圖4 NMOS閾值電壓的漂移模型
根據總劑量輻射的相關原理,在Virtuoso中使用Verilog-A對器件總劑量輻射時的電流1/f噪聲模型進行編寫,該模型具有2個端口,使用時類似電阻連接在NMOS的源極或漏極。
應用神經網絡進行故障診斷的目的是將神經網絡分類的思路應用于電路故障診斷領域,即對電路不同工作狀態下的電源電流數據進行識別。卷積神經網絡不僅在圖像分類識別取得成功,并且在各種類型的故障診斷領域也有廣泛的應用。但是用于集成電路電學數據這種一維連續的數據時,需要對神經網絡的結構進行仔細設計。卷積神經網絡中的卷積操作可以看作是部分點積的過程,一般來說卷積都是由卷積核與輸入的矩陣或向量的其中一部分進行點積運算。
1)一維卷積運算。一維卷積運算和向量的點積運算比較相似,可以說一維卷積是向量的局部點積運算,對于沒有張量填充的卷積運算時,用于計算輸出張量大小與輸入張量關系的表達式為:

式中:N為輸出張量的大小;M為輸入張量的大小;K為一維卷積核的大小。
一維卷積的數學形式化的公式為:

2)最大池化。最大池化是在指定的數據區域內,取該區域內的最大值進行保留,這個數據區域是由最大池化的大小決定。最大池化同樣也分一維最大池化和二維最大池化。圖5為最大池化運算的示意圖。其中,圖5(a)是一維最大池化的運算過程,圖5(b)是二維最大池化的運算過程,經過最大池化運算之后的特征大小變化與經過平均池化運算的特征大小變化相同。
全連接層一般位于卷積神經網絡的最終輸出之前,主要作用是對經過卷積池化等運算得到的特征進行展開分類,把分布式特征映射到樣本標記空間,同樣也是卷積神經網絡的重要組成部分。一般來說全連接層的輸入一般是多組特征展開的一維特征向量,經過一次或多次全連接運算,最終輸出指定分類數的張量,輸出一般經過Softmax分類器進行分類。

圖5 最大池化運算的示意圖
圖6 為全連接運算的示意圖,神經網絡前半部分運算的結果展開之后是一個寬度為20的特征,卷積神經網絡是將數據分類成5類。其中,圖6(a)僅有1層全連接層直接輸出5分類的結果,圖6(b)增加了一層全連接層,經過2層全連接層之后同樣輸出5分類的結果。

圖6 全連接運算的示意圖
本文設計的卷積神經網絡結構如圖7所示,卷積神經網絡的輸入為14個連續的數據,經過6個通道3×1大小的卷積核進行一維卷積后的數據為6個通道12×1共72個數據,之后會經過2×1最大一維池化層對一維卷積層的輸出數據進行下采樣,第一層一維最大池化層的輸出數據為6通道6×1共36個數據,下一層是3×1共12個通道的第二層一維卷積層,其運輸結果是12通道4×1的數據共48個,之后會經過第二層2×1最大池化層的運算輸出數據為12通道2×1共24個數據,在特征提取之后,對數據展開成一維數據,通過全連接層進行分類,這里由于數據分類的種類較少,因此全連接只用了一層運算后直接輸出3×1的張量。
由于一般的卷積神經網絡激活函數為ReLU激活函數,但由于ReLU激活函數的正數部分沒有上限,如果通過憶阻器硬件電路實現,憶阻器卷積神經網絡計算出的電流或電壓值也沒有上限,這不符合憶阻器電路對電壓的要求。為下一步神經網絡的硬件實現做準備,該輻射故障診斷的一維神經網絡用到的激活函數是Sigmoid激活函數,Sigmoid激活函數可以將輸出值限定在(0,1)的范圍內,該范圍內的電壓值是滿足神經網絡硬件電路的運算范圍的。

圖7 輻射故障診斷的一維神經網絡結構圖
數據在輸入神經網絡之前經過數據的預處理,數據預處理實現的功能是將輸出的原始數據等比例放縮到區間(-1,1),數據預處理標準化的公式為:

式中:Ds為經過預處理標準化后的數據;Di為原始未經處理的數據;Darg為輸入數據的算術平均值;Dmax為輸入數據中的最大值;Dmin為輸入數據中的最小值。
由于故障診斷神經網絡的輸入數據相對較小,在進行神經網絡訓練時可能出現訓練速度慢的情況。使用數據預處理對輸入數據標準化,一方面對數據按照一定比例進行放大,另一方面加快神經網絡訓練時的收斂速度。不同數據放大比例對數據處理存在一定影響,合理的數據處理可以提升神經網絡訓練效率,與數據直接放大相比,可以放大相對差距,在限定數據范圍的同時使數據差異化。
并不是所有神經網絡結構都具有學習能力,本文對搭建神經網絡學習能力的驗證,用于驗證的相關輸入數據集如表1所示。為了使數據能夠輸入到卷積神經網絡進行訓練,需要調整數據大小,與神經網絡輸入同樣的數據大小,因此數據寬度同樣也為14。

表1 于驗證輻射故障診斷神經網絡學習能力的數據表
表1中,x是區間[0,19]中所有整數,r是區間(-1,1)中的隨機數。將運算得到的結果轉換為張量輸入到輻射故障診斷神經網絡,進行學習能力的驗證。將神經網絡的學習率設置為0.05,動量設置為0.9,迭代次數設置為17 k,將數據依次輸入神經網絡,最后驗證了該卷積神經網絡的學習能力,圖8為驗證神經網絡學習能力時訓練迭代次數與訓練損失的關系圖。由圖8可以看出,在訓練次9k左右的時候,該卷積神經網絡的訓練損失已經收斂,且訓練的損失低于0.005,證明了神經網絡具有學習能力,且對3種數據類型的分類效果比較好。

圖8 神經網絡學習能力時迭代次數與訓練損失
在對輻射故障診斷神經網絡訓練之前,本文通過對輻射故障診斷神經網絡的權值初始化,以加快輻射故障診斷神經網絡參數的收斂速度。圖9為神經網絡的權重偏置初始化策略,采用Xavier[8]正態分布進行初始化,一維卷積層和全連接層的偏置全部初始化為0.0。

圖9 神經網絡的權重偏置初始化策略
由于本文采集的仿真數據是csv格式,通過Python編寫數據處理腳本,將所有csv文件自動加入標簽(label)號后寫入訓練集和測試集2個txt文件中。神經網絡的輸出為3類,具體分類如表2所示。

表2 輻射故障診斷神經網絡的輸出類別
通過Pytorch編寫神經網絡的結構及其訓練程序,神經網絡的結構程序包括網絡結構的描述和初始化策略的實現。由于數據并非卷積神經網絡的常用圖片數據,訓練時并未采用數據加載器(loader),而是通過程序代碼將數據轉換為張量(Tensor)格式。神經網絡的訓練程序為:首先對訓練集的txt文件進行讀取,通過式(8)對數據預處理,之后通過設定訓練的迭代次數(iteration)對單組數據輸入網絡的訓練次數,輻射故障診斷神經網絡訓練時使用的是隨機梯度下降(stochastic gradient descent,SGD)方法。只有當學習率處于合適范圍時,訓練誤差才會既快速又穩定的下降。對于神經網絡訓練時的學習率來說,目前較佳的方法是先采用一個相對較高的學習率,使訓練誤差迅速下降,之后逐漸減小神經網絡學習率,使訓練誤差相對穩定的下降至一個趨于穩定的值,本文中輻射故障診斷神經網絡訓練時的學習率在0.000 1~0.001,在選擇學習率時進行了多次試驗,著重于訓練損失與迭代次數之間的關系。學習率對神經網絡訓練的影響如圖10所示。

圖10 學習率對神經網絡訓練的影響
通過SGD方法訓練時,神經網絡動量主要影響參數修正梯度的下降速度,圖11為SGD中動量的作用示意圖,從圖11中可以看出,在使用動量相關算法后,神經網絡的梯度下降時波動范圍上升了,且波動方向不是向著最終的中心方向,但如果動量的比例值設置在合適范圍,神經網絡的訓練將事半功倍,會加快收斂速度、減少訓練時間,本文中輻射故障診斷神經網絡訓練時動量設置為0.8。訓練完成后,保存訓練后的網絡結構及網絡參數。

圖11 動量對神經網絡梯度下降的影響
基于2.2小節研究的訓練方法及關鍵參數,對輻射故障診斷神經網絡進行訓練,由于卷積運算需要進行多次的乘法和加法,理論上可以通過CPU和GPU進行訓練,CPU注重于單任務快速處理,而GPU重點關注于多任務并行處理,圖12為CPU和GPU架構的對比。從CPU和GPU架構上的區別可以看出,對于卷積神經網絡的卷積運算,使用GPU的運算速度會優于CPU的運算速度。因此,對輻射故障診斷神經網絡的訓練,本文使用的是基于英偉達統一計算設備架構(compute unified device Architecture,CUDA)的GPU。訓練時使用的具體軟硬件配置如表3所示,訓練過程中的關鍵參數設置如表4所示。

圖12 CPU和GPU架構的對比圖

表3 訓練輻射故障診斷神經網絡的軟硬件配置

表4 訓練的關鍵參數設置
訓練過程中的損失函數變化如圖13所示,輻射故障診斷神經網絡在訓練數據量到達1 000 k時已經接近于收斂,經測試集對訓練完成的神經網絡進行測試,測試準確度達到99%。

圖13 訓練過程中訓練損失函數變化圖
對測試集數據進行測試,由于輻射故障診斷神經網絡是三分類輸出的,輸出的3個張量值作為3個坐標軸,繪制輸出散點分類圖,如圖14所示。
至此,基于軟件平臺對輻射故障診斷神經網絡的訓練工作已經基本完成,訓練后的網絡已經成功對,3種不同工作狀態采集的電源電流數據進行分類識別,且識別的準確度較高。

圖14 輻射故障診斷神經網絡測試分類散點圖
完成對輻射故障診斷神經網絡的訓練之后,通過憶阻器搭建神經網絡的硬件電路,1971年,Leon Chua發現了缺少描述電荷量與磁通之間關系的電路元件,對其進行論證并命名為憶阻器[9],圖15為電路參量之間的關系。2008年,惠普實驗室的Stan Williams的團隊通過實例證明了納米級電路系統中產生了憶阻現象[10],第一次獲得了現實中的憶阻器模型。

圖15 憶阻器與常見電學量之間的關系
惠普實驗室提出的憶阻器模型如圖16所示,憶阻器主要由2片鉑片以及2層二氧化鈦薄膜構成。其中一層二氧化鈦薄膜摻入了氧空位,其厚度為w;另一層未摻入氧空位厚度為D-w。摻入氧空位的二氧化鈦薄膜具有良好的導電性,而未摻入氧空位的薄膜導電性較差。在憶阻器2個電極外加電壓時,2種二氧化鈦的薄膜邊界會移動。正向電壓時,邊界將朝向未摻雜層進行移動,使憶阻器的電阻降低;負向電壓時,邊界將朝向摻雜層進行移動使憶阻器的電阻升高,即憶阻器的電阻會隨著電壓的變化而變化。

圖16 憶阻器的模型示意圖
當二氧化鈦邊界移動到2個金屬鉑片時,出現2個極限情況,即w=0和w=D,這2種狀態下憶阻器的電阻值定義為關斷電阻Roff和導通電阻Ron。研究人員定義憶阻器的電阻為摻雜層的電阻和非摻雜層電阻的和,任意時刻憶阻器的電阻計算公式為:


式中:Rm為憶阻器的電阻值;Ron為憶阻器完全導通時的電阻值;Roff為憶阻器完全關斷時的電阻值;x為二氧化鈦邊界所在位置的比例;w為二氧化鈦邊界所在位置;D為二氧化鈦薄膜的總厚度。
一般來說,二氧化鈦邊界的移動速度與器件內離子的移動速度有關,即:

式中:μv為離子平均的漂移率;k為邊界的移動速度與流經憶阻器電流的比例因子。
對于實際中的憶阻器來說,其二氧化鈦邊界不能完全到達器件的邊界,對其進行描述的上述公式是不夠精確的,還需要通過窗口函數的限制,在式(12)右端右乘窗口函數,常用的窗口函數有多種,本文模型中使用的是較為常用的Joglekar窗函數[11],其表達式為:

式中,p為任意正整數。
Joglekar窗函數的圖像如圖17所示,不同p值參數下Joglekar窗函數曲線具有不同程度的邊界效果,當p≥5時,窗函數的函數值約等于1。窗函數的加入,使器件模型在位于二氧化鈦邊界位置時體現出較強的抵抗性,邊界位于中心附近時器件模型會呈現一定的非線性。

圖17 不同參數下的Joglekar窗函數
基于上述對憶阻器模型研究,在Virtuoso中通過VerilogA語言對憶阻器的模型進行設計,使用的窗口函數是p=2時的Joglekar窗口函數。憶阻器模型的仿真結果如圖18所示。圖18(a)是憶阻器兩端輸入頻率100 Hz正弦波電壓時,憶阻器電壓和電流隨時間的變化圖,在憶阻器電壓曲線的前半周期內,憶阻器電流曲線達到極值點的時間晚于電壓曲線,在憶阻器電壓曲線的后半周期內,憶阻器電流曲線達到極值點的時間早于電壓曲線,在電壓為0時,電流也為0,這體現了憶阻器電阻的可變性;圖18(b)為不同輸入正弦電壓頻率下的伏安特性曲線,類似于電磁中的磁滯回線,隨著正弦電壓頻率的增加,憶阻器的伏安特性曲線越來越窄甚至變為一條直線,此時憶阻器的特性將類似于普通電阻的特性。模型的仿真測試結果與惠普實驗室制作的二氧化鈦憶阻器的特性完全吻合。

圖18 憶阻器特性的仿真結果
基于訓練完成的輻射故障診斷神經網絡的結構和參數,通過憶阻器等元器件對輻射故障診斷神經網絡的硬件電路進行搭建,搭建時采用參數移植方法,將通過軟件平臺訓練之后的神經網絡參數,移植到憶阻器交叉陣列[12-14]神經網絡電路中,將神經網絡的權重和偏置映射到憶阻器的電導值中。由于憶阻器的電導只能表示正值,在計算卷積時,如果存在負數值,則不能直接計算,而且憶阻器的電導存在一定范圍,所以需要正負2個運算部分來計算正值和負值,將卷積核矩陣的值轉化到憶阻器電導可以表示的范圍內[15]。式(15)是卷積核中正矩陣的轉換公式,式(16)是卷積核中負矩陣的轉換公式,即:


式中:σ+為正矩陣轉換后的憶阻器電導值;σ-為負矩陣轉換后的憶阻器電導值;σmax為憶阻器的最大電導;σmin為憶阻器的最小電導;W+為卷積核正矩陣中的值;W-為卷積核負矩陣中的值。
圖19為一個矩陣進行憶阻器電導轉換時的示意圖,首先將矩陣拆分成正矩陣和負矩陣,之后通過式(17)和式(18)進行轉換。

圖19 權重矩陣進行憶阻器電導轉換的過程
由于運算的權重矩陣經過轉換,還需要對運算結果進行還原,一般通過差分放大器組成的模擬乘法器進行數據還原,具體的還原倍數與該層是否使用激活函數相關,使用激活函數的還原倍數和不使用激活函數的還原倍數的計算公式為:

式中,k為Sigmoid激活函數的線性擬合函數的斜率。
Sigmoid激活函數圖像類似于集成電路中放大器的輸入電壓與輸出電壓的關系曲線,可以通過差分放大器的結構來實現激活函數和數值的還原,差分放大器放大時一般是線性放大的,這與Sigmoid函數的圖像存在一定區別,因此在利用差分放大器實現Sigmoid函數的功能時,需要對Sigmoid函數進行擬合。通過Python腳本,本文對斜率在區間(0.04,2)、與y軸交點在區間(0,0.95)內的部分一次線性函數進行枚舉,計算該函數與Sigmoid函數之間的相對差距,以獲得對Sigmoid的最佳擬合函數表達式,相對差距較小的幾個函數如表5所示。

表5 部分用于擬合Sigmoid函數的表達式
Sigmoid函數的擬合結果顯示,式(19)的函數對Sigmoid函數的擬合效果較好。

線性擬合的函數與Sigmoid激活函數曲線如圖20所示,圖20中只繪制了x值在(-5,5)間的函數圖像,在x值超過區間(-5,5)時,2種函數的值基本上相等,可以在誤差允許的情況下使用式(19)中的函數代替Sigmoid激活函數。

圖20 線性擬合的函數與Sigmoid激活函數曲線
在完成對憶阻器神經網絡的相關基礎研究后,下面將基于憶阻器對輻射診斷神經網絡的各個結構層在Virtuoso中進行搭建如下。
1)一維卷積層。
搭建的第一層一維卷積層conv1中的一個卷積核電路如圖21所示,conv1的輸入為14個數據,需要拆分成正半部分和負半部分,每一個憶阻器的電導值都需要通過轉換公式進行轉換,本文通過Python腳本將訓練后的神經網絡參數轉換為憶阻器二氧化鈦邊界的相對位置,并將相對位置的值移植到憶阻器電路中。inp是輸入的正半部分數據值,inn是輸入的負半部分數據值,輸入1 V電壓的一行憶阻器用于對擬合的激活函數偏置、一維卷積層偏置進行計算。

圖21 conv1中的一個卷積核電路圖
根據電流節點定律,模擬乘法器輸入的值等于各個輸入值與各憶阻器電導乘積的和,模擬乘法器用于對該數值進行還原,模擬乘法器的結構圖如圖22所示,其中憶阻器Mg的電阻值與式(16)和式(17)的還原倍數相同。本文以VerilogA模型替代模擬乘法器的功能,設計的輻射故障診斷神經網絡的conv1有6個卷積核,圖21中只是其中一個卷積核的電路圖,其他的卷積核結構與圖21相同,區別在于憶阻器的電導值和還原倍數不同。
搭建的第二層一維卷積層中的卷積核電路圖與圖21類似,只是結構上輸入節點和輸出節點數目不同,電路方面憶阻器的電導和乘法器還原倍數不同。憶阻器神經網絡用于還原數值的模擬乘法電路如圖22所示。

圖22 憶阻器神經網絡用于還原數值的模擬乘法電路圖
2)矩陣正負值運算電路。
由于矩陣卷積時需要獲得矩陣的正值矩陣和負值矩陣,這需要特殊的電路來實現,圖23為正負值運算產生電路的電路圖,電路將輸入Vin的值輸出為Vn和Vp,由于Sigmoid激活函數的輸出均為正值或0,因此Vn的值是Vin的值絕對值的相反數,Vp的值是Vin的絕對值,差分放大器的增益均為1。

圖23 正負值運算產生電路的電路圖
3)最大池化電路。
最大池化電路的主要功能是判斷2個輸入的較大值,并輸出較大值的數值。實現上述功能的電路如圖24所示,左邊是CMOS比較器,其功能是比較2個輸入的大小,如果正極輸入大于負極輸入,則輸出上限電壓1 V,相反如果正極輸入小于負極電壓,則輸出下限電壓0 V。
圖24中右邊的器件是可用CMOS傳輸門實現的單刀雙擲開關,Sel是數據輸出選擇信號,Sel為高電平時,將輸出Vin1的值,Sel為低電平時,則輸出Vin2的值。最大池化電路以這種電路為單元組成,輻射故障診斷神經網絡的第一層最大池化層有72個輸入和36個輸出,共需要36個這樣的單元組成,第二層最大池化層有48個輸入和24個輸出,共需要24個這樣的單元組成。

圖24 最大池化電路的電路圖
4)全連接層的電路結構。
全連接運算的本質也是矩陣的乘法,同樣可以通過憶阻器來實現,只不過電路結構不同于一維卷積層的電路,圖25為輻射故障診斷神經網絡全連接層的電路圖,全連接層有24個輸入和3個分類輸出,且全連接層的輸出沒有使用Sigmoid函數進行激活,但同樣需要單獨的憶阻器來計算全連接層的偏置值。
5)電路總體結構。
根據上述設計的電路結構,本文在Virtuoso中對神經網絡的總體電路進行搭建,總體電路結構如圖26所示,矩形方框內代表上文中介紹的電路結構,箭頭方向代表數據流的方向,箭頭上的數據代表各個電路之間的數據數量及正負,未標明正負代表數據可能為正值或負值。

圖25 進行分類的全連接層電路圖

圖26 輻射故障診斷神經網絡電路結構框圖
輻射故障診斷神經網絡電路的內部運算通過電學參量的關系進行運算,在滿足數據輸入格式前提下,運算速度與模擬芯片相接近,可以較好地滿足實時性需求。但硬件電路與軟件平臺存在一定區別,導致神經網絡電路的運算結果和軟件平臺計算的結果會存在一定誤差,誤差主要來源于激活函數的差別、憶阻器電導值的存儲方式與軟件權重的差別和電路的噪聲等因素,對硬件神經網絡的運算結果產生了一定影響。圖27給出了在軟硬輸入相同條件時,硬件電路仿真的相對誤差平均值,由于卷積層第二層的運算量較大,硬件電路的相對誤差較大。
本文在搭建硬件電路后,在Virtuoso中仿真200組3種狀態的數據,硬件實際測試時的平均誤差如圖28所示,誤差結果均為整體神經網絡電路與軟件之間的仿真相對誤差。

圖27 硬件實際測試時的相對誤差平均值

圖28 硬件實際測試時的平均誤差
本文統計了200組實驗數據在神經網絡硬件上運行的準確度,達到98%以上,相較于軟件的準確度略低,本文結果對精度要求稍低而對運算速度要求高的場景更為適用。