黃 林
(重慶工商大學(xué)派斯學(xué)院, 重慶 合川 401520)
隨著時(shí)代的不斷發(fā)展, 科技的不斷創(chuàng)新, 軟硬件設(shè)備的功能逐漸增多, 數(shù)字電路變得越來越復(fù)雜、 越來越集成化, 大規(guī)模集成電路在芯片設(shè)計(jì)、數(shù)據(jù)儲(chǔ)存中被大量應(yīng)用, 傳統(tǒng)的設(shè)計(jì)規(guī)則與經(jīng)驗(yàn)已經(jīng)無法滿足信息時(shí)代的要求。 為了保障系統(tǒng)設(shè)計(jì)的可靠性與通用性, 可以從以下3 方面對(duì)數(shù)字電路進(jìn)行優(yōu)化改進(jìn): 一是大規(guī)模使用現(xiàn)場(chǎng)可重構(gòu)器件, 使硬件電路的實(shí)現(xiàn)載體和評(píng)價(jià)方式變得更加優(yōu)化, 以推進(jìn)數(shù)字電路的優(yōu)化。 二是優(yōu)化算法, 從而全面優(yōu)化搜索性能。 例如使用代入遺傳算法的過程中, 可以采用新的結(jié)構(gòu)來提高數(shù)字電路的設(shè)計(jì)模型, 并將下載的最好染色體保留在可重構(gòu)器件上, 用染色體算法進(jìn)行運(yùn)算, 進(jìn)而使運(yùn)算和操作變得更加優(yōu)化。三是利用軟件模型, 將期望的數(shù)值和電路優(yōu)化設(shè)計(jì)所得到的結(jié)果與當(dāng)前的實(shí)際情況進(jìn)行對(duì)比, 方便優(yōu)化過程中直觀明確地了解優(yōu)化方案的效果, 進(jìn)而提出更加完善的優(yōu)化設(shè)計(jì)。
本文提出的自頂向下的模塊設(shè)計(jì)理念, 將復(fù)雜的數(shù)字電路設(shè)計(jì)分解、 細(xì)化為一系列相對(duì)簡(jiǎn)單的子電路, 將復(fù)雜、 繁瑣的電路設(shè)計(jì)變?yōu)楹?jiǎn)單、 容易的設(shè)計(jì), 這種將復(fù)雜難懂的問題轉(zhuǎn)換為簡(jiǎn)單易懂的問題的方式在于思維的轉(zhuǎn)變。 在本文中, 具體描述數(shù)字電路功能時(shí), 可在數(shù)字電路設(shè)計(jì)上搭建一個(gè)真值表, 對(duì)于那些可以優(yōu)化的過程, 需把真值表看成一個(gè)完整的數(shù)字電路系統(tǒng), 對(duì)數(shù)字電路的輸入變量和輸出變量進(jìn)行模塊化設(shè)計(jì), 讓整個(gè)過程變得更加簡(jiǎn)單方便。 把輸入部分的位數(shù)看作子功能輸入信號(hào),把其余位數(shù)看作通信信號(hào), 這樣就可使整個(gè)算法變得簡(jiǎn)單。 通俗說就是利用優(yōu)化電子電路的輸入和輸出來改變傳統(tǒng)的電路算法, 使用模塊化設(shè)計(jì), 優(yōu)化計(jì)算系統(tǒng)的獨(dú)立性。
與傳統(tǒng)電路算法相比, 模塊化進(jìn)化算法具有兩個(gè)優(yōu)勢(shì), 一是可以讓功能電路的選擇更加準(zhǔn)確; 二是能夠縮小子系統(tǒng)輸入和輸出的位數(shù)占比, 降低算法復(fù)雜程度, 提高算法的成功概率, 減少算法計(jì)算時(shí)間[1]。
數(shù)字電路設(shè)計(jì)劃分為許多個(gè)小模塊, 為了快速、 高效地尋找出一種最優(yōu)的電路設(shè)計(jì)目標(biāo), 引入遺傳算法, 遺傳算法的過程如下。
1.2.1 染色體編碼
在對(duì)染色體定向編碼過程中, 首先要進(jìn)行遺傳算法的運(yùn)算時(shí)間規(guī)劃, 對(duì)電路模塊化結(jié)構(gòu)的染色體進(jìn)行優(yōu)化, 以提升運(yùn)算時(shí)間。 進(jìn)行染色體編碼時(shí),可將染色體分成更為獨(dú)立的邏輯段, 每個(gè)獨(dú)立的邏輯段都表示一個(gè)小的子系統(tǒng), 在子系統(tǒng)當(dāng)中采用更加精準(zhǔn)的門級(jí)電路進(jìn)化方式, 讓每個(gè)子系統(tǒng)都包含編碼、 通信信號(hào)和聯(lián)線編碼, 這樣就可以讓整個(gè)染色體變化的過程變得更為簡(jiǎn)單快捷。 遺傳算法的染色編碼為實(shí)數(shù)編碼, 把所有的子系統(tǒng)整合為一個(gè)大的染色體, 每個(gè)子系統(tǒng)既可以獨(dú)立進(jìn)行并排凈化,又可以降低大范圍的電路資源浪費(fèi), 而且每個(gè)子系統(tǒng)之間既相互獨(dú)立又相互聯(lián)系。
1.2.2 適應(yīng)度函數(shù)設(shè)計(jì)
在數(shù)字電路設(shè)計(jì)中, 適應(yīng)度函數(shù)有著非常重要的作用, 適應(yīng)度函數(shù)設(shè)計(jì)的優(yōu)劣可以對(duì)最終目標(biāo)產(chǎn)生直接影響。 可對(duì)適應(yīng)度函數(shù)的輸入值與期望值進(jìn)行更為科學(xué)的對(duì)比研究, 讓整個(gè)評(píng)價(jià)系統(tǒng)變得更加準(zhǔn)確, 評(píng)價(jià)過程采用的標(biāo)準(zhǔn)就是操作結(jié)果; 數(shù)字電路中遺傳算法的使用公式可以表示電路功能的正確度[2]。
1.2.3 選擇操作
在進(jìn)行遺傳算法的過程中, 需選擇很多操作,其中包括競(jìng)爭(zhēng)選擇方法和輪盤法。 本文采用模塊化原則, 故而傾向選用競(jìng)爭(zhēng)選擇方法。 競(jìng)爭(zhēng)選擇方法就是從父代的種族當(dāng)中挑選多個(gè)遺傳個(gè)體, 然后將這些個(gè)體采用適應(yīng)度函數(shù)進(jìn)行比較, 最終選擇最好的個(gè)體來進(jìn)行交叉算法, 不斷地進(jìn)行重復(fù), 直到整個(gè)過程操作完畢[2]。
1.2.4 交叉算法
如果使用交叉算法進(jìn)行操作, 就需要從父代當(dāng)中隨便選擇兩個(gè)染色體進(jìn)行雜交, 以便把優(yōu)秀基因保留下來, 并且較大程度地保留特別優(yōu)秀的基因。采用交叉算法可以使種族的基因更加優(yōu)化, 讓整個(gè)種族變得更加發(fā)達(dá)。 在進(jìn)行交叉算法的過程中, 一般采用均勻交叉方式或兩點(diǎn)交叉方式及單點(diǎn)交叉方式。 均勻交叉方式就是將染色體的很多優(yōu)點(diǎn)進(jìn)行交換, 讓它們更加有利于種族延續(xù), 本文采用的是均勻交叉操作方式。
1.2.5 變異算子
變異算子是把染色體中的一些基因按照相應(yīng)的概率進(jìn)行變異操作, 所選取的概率值越大, 遺傳過程中的多樣性就會(huì)越大。 變異操作僅在父代上進(jìn)行就可改變某一個(gè)基因, 使種族發(fā)生整體改變。 本文中變異算子的具體操作是選擇一條染色體, 根據(jù)變異概率決定是否變異, 如果取值為零, 那么就不進(jìn)行變異; 如果取值不為零, 那么就進(jìn)行文件的變異操作[1]。
1) 優(yōu)化方向。 使用組合邏輯+時(shí)序邏輯+存儲(chǔ)的方法。 時(shí)序電路的特點(diǎn): 輸出與當(dāng)時(shí)的輸入值和電路之前的狀態(tài)有關(guān)系; 組合電路功能的特點(diǎn): 任意一個(gè)時(shí)刻的輸出僅僅與該時(shí)刻的輸入有關(guān)系, 和電路原來的狀態(tài)沒有關(guān)系, 可以采用結(jié)合的方式來減小功耗[3]。
2) 組合邏輯。 通過算法優(yōu)化來減少門電路,復(fù)用模塊, 優(yōu)化算法。
3) 時(shí)序邏輯。 盡量降低采用沒有用的register和非功能性的register, 最好不要采用帶復(fù)位reg,數(shù)據(jù)打拍。
存儲(chǔ)模塊選擇RAM 還是register, 應(yīng)根據(jù)需求綜合考慮。 規(guī)模小的存儲(chǔ)結(jié)構(gòu)可以采用寄存器實(shí)現(xiàn)(規(guī)模小于8×32 的FIFO); 規(guī)模較大的存儲(chǔ)模塊可采用 RAM 實(shí)現(xiàn) (規(guī)模大于 8×32 的 FIFO)。 同等容量下, register 比RAM 功耗大, 所以大容量存儲(chǔ)采用register 會(huì)造成更大的功耗。 如果是小規(guī)模存儲(chǔ),采用register 面積開銷比較少, 且相對(duì)于RAM 功耗增加不明顯。
拆分RAM 能夠減少功耗; 采用低主頻高密度的RAM, 減小使用面積能夠加大位寬降低訪問頻率; 把多端口的RAM 換成單端口的RAM 或采用共享RAM 的方式都能夠減小使用面積與功耗[4]。
1) 減小面積的措施。 在組合邏輯方面, 除了采取優(yōu)化算法減小門電路, 還可以采用共享資源、復(fù)用模塊等方法減小面積。 采取組合邏輯+時(shí)序邏輯+存儲(chǔ)的方式同樣可以減小面積。
2) 電路時(shí)序的優(yōu)化。 通過優(yōu)化算法可以降低組合邏輯的層數(shù); 邏輯復(fù)制可以改善路徑延時(shí)的情況。 在流水設(shè)計(jì)的過程中插入寄存器可以更好地減少延時(shí)情況。 除此之外, 優(yōu)化關(guān)鍵信號(hào)可以將信號(hào)轉(zhuǎn)變?yōu)榭刂破鞯目刂菩盘?hào), 從而將關(guān)鍵路徑信號(hào)調(diào)整到離輸出很近的位置, 使得信號(hào)更快地被接收。如果想對(duì)晚到的信號(hào)進(jìn)行優(yōu)化, 通常會(huì)采取兩種方式, 一種是把數(shù)據(jù)信號(hào)變?yōu)槁盘?hào) (優(yōu)化if else 嵌套); 另一種是把控制信號(hào)變?yōu)槁盘?hào) (優(yōu)化if else嵌套)。
通常而言, 優(yōu)化速度相比于優(yōu)化資源更為重要, 需優(yōu)先考慮。 速度優(yōu)化包括FPGA 的結(jié)構(gòu)特性、HDL綜合器性能、 PCB 制版情況等, 也包括Verilog的編程風(fēng)格。 下面探討4 種電路結(jié)構(gòu)方面的速度優(yōu)化方式。
1) 流水線是一種在成組的邏輯之間添加寄存器的方法, 它在很大程度上提升了設(shè)計(jì)電路運(yùn)行的速度。 在使用了兩級(jí)流水線之后, 組合邏輯塊的延時(shí)大大減少, 兩級(jí)組合邏輯塊的延時(shí)分別為T1,T2, 設(shè)置 T1≈T2, 且 Ta=T1+T2, Tclk可接近 T1, 其最高工作頻率為 fmax≈ fmax1≈ fmax2≈ 1/T1≈ 1/T2, 使用流水線的最高工作頻率比沒有使用流水線的速度提升了將近一倍。
2) 使用流水線加法器實(shí)現(xiàn)八位加法器。 用3個(gè)4 bit 加法器以及多個(gè)鎖存器實(shí)現(xiàn)。
3) 乒乓操作法。 乒乓操作法是一種數(shù)據(jù)緩沖優(yōu)化設(shè)計(jì)技術(shù), 可以將其看作是不同的流水線技術(shù), 通過輸入數(shù)據(jù)流選擇單元和輸出數(shù)據(jù)流的單元, 按照不同的方式進(jìn)行切換, 將緩沖數(shù)據(jù)流中的數(shù)據(jù)無接縫地傳遞到處理模塊, 進(jìn)而進(jìn)行接下來的操作。
4) 加法樹法。 想要實(shí)現(xiàn) A+B+C 的結(jié)構(gòu), 可先實(shí)現(xiàn)A+B, 再將A+B 的和鎖存一個(gè)時(shí)鐘周期之后再與C 相加。
5.2.1 資源共享
資源共享采取選擇、 復(fù)用來共享使用該模塊,達(dá)到降低使用資源、 優(yōu)化減小面積的目的。 可以選用規(guī)模更小的可編程器件對(duì)資源進(jìn)行優(yōu)化, 以降低成本, 提升性價(jià)比, 為后續(xù)技術(shù)升級(jí)保留可編程的資源。 這樣做可以減少資源的耗用, 減輕器件的耗費(fèi)。
5.2.2 優(yōu)化組合邏輯
在優(yōu)化過程中可以進(jìn)行組合邏輯的優(yōu)化, 以最大程度減少資源浪費(fèi)。 首先在流水線設(shè)計(jì)過程中進(jìn)行優(yōu)化, 在不同的組合邏輯之間插入寄存器, 以盡可能減少出現(xiàn)延時(shí)的可能。 其次可以采用模塊復(fù)用、 資源共享的方式, 減少邏輯運(yùn)算過程中占用的面積。 此外, 還可以采用邏輯復(fù)制的方式, 減少延遲情況的產(chǎn)生; 將關(guān)鍵路徑信息轉(zhuǎn)變?yōu)榭刂破鞯目刂菩盘?hào), 再將信號(hào)調(diào)到離輸出很近的位置也是減少路徑運(yùn)輸時(shí)間的方法。
5.2.3 串行化
串行化可以將巨大的邏輯塊分割成小的邏輯塊, 并在運(yùn)送過程中尋找相同的邏輯塊, 用多個(gè)時(shí)鐘周期完成相同的功能。 可以使用并行邏輯設(shè)計(jì),或者采用串行化設(shè)計(jì), 只需要用一個(gè)八位的乘法器和一個(gè)十六位的加法器及一個(gè)附加信號(hào)start 即可。
通過對(duì)電路的優(yōu)化設(shè)計(jì)可以讓整個(gè)電路變得更加模塊化, 在進(jìn)行數(shù)據(jù)儲(chǔ)存及芯片設(shè)計(jì)過程中降低設(shè)計(jì)復(fù)雜度, 使設(shè)計(jì)變得更為方便。 數(shù)字電路采用模塊化設(shè)計(jì)方式可以使遺傳算法得到更多的優(yōu)化,提高了數(shù)字電路的準(zhǔn)確性和可靠性; 這種方法在現(xiàn)階段適應(yīng)于比較精密的儀器, 可整體提高機(jī)器設(shè)備的自動(dòng)化和智能化水平。