FPGA設(shè)計(jì)必須注意的設(shè)計(jì)原則
掃描二維碼
隨時(shí)隨地手機(jī)看文章
1.面積與速度的平衡與互換
這里的面積指一個(gè)設(shè)計(jì)消耗 FPGA/CPLD 的邏輯資源的數(shù)量,對(duì)于 FPGA 可以用消耗的 FF(觸發(fā)器)和 LUT(查找表)來(lái)衡量,更一般的衡量方式可以用設(shè)計(jì)所占的等價(jià)邏輯門數(shù)。
速度指設(shè)計(jì)在芯片上穩(wěn)定運(yùn)行,所能達(dá)到的最高頻率,這個(gè)頻率由設(shè)計(jì)的時(shí)序狀況來(lái)決定,和設(shè)計(jì)滿足的時(shí)鐘要求,PAD to PAD time ,Clock Setup TIme,Clock Hold TIme,Clock-to-Output Delay 等眾多時(shí)序特征量密切相關(guān)。
面積和速度這兩個(gè)指標(biāo)貫穿 FPGA/CPLD 設(shè)計(jì)的時(shí)鐘,是設(shè)計(jì)質(zhì)量的評(píng)價(jià)的終極標(biāo)準(zhǔn)。
面積和速度是一對(duì)對(duì)立統(tǒng)一的矛盾體。要求一個(gè)同事具備設(shè)計(jì)面積最小,運(yùn)行頻率最高是不現(xiàn)實(shí)的。更科學(xué)的設(shè)計(jì)目標(biāo)應(yīng)該是在滿足設(shè)計(jì)時(shí)序要求(包括對(duì)設(shè)計(jì)頻率的要求)的前提下,占用最小的芯片面積?;蛘咴谒?guī)定的面積下,是設(shè)計(jì)的時(shí)序余量更大,頻率跑的更高。這兩種目標(biāo)充分體現(xiàn)了面積和速度的平衡的思想。
作為矛盾的兩個(gè)組成部分,面積和速度的地位是不一樣的。相比之下,滿足時(shí)序、工作頻率的要求更重要一些,當(dāng)兩者沖突時(shí),采用速度優(yōu)先的準(zhǔn)則。
從理論上講,如果一個(gè)設(shè)計(jì)時(shí)序余量較大,所能跑的速度遠(yuǎn)遠(yuǎn)高于設(shè)計(jì)要求,那么就通過(guò)功能模塊的復(fù)用來(lái)減少整個(gè)設(shè)計(jì)消耗的芯片面積,這就是用速度的優(yōu)勢(shì)換取面積的節(jié)約。反之,如果一個(gè)設(shè)計(jì)的時(shí)序要求很高,普通方法達(dá)不到設(shè)計(jì)頻率,那么一般可以通過(guò)將數(shù)據(jù)流串并轉(zhuǎn)換,并行復(fù)制多個(gè)操作模塊,對(duì)整個(gè)設(shè)計(jì)采取乒乓操作和串并轉(zhuǎn)換的思想運(yùn)行。
2. 硬件原則
硬件原則主要針對(duì) HDL 代碼編寫而言
Verilog 是采用了 C 語(yǔ)言形式的硬件的抽象,它的本質(zhì)作用在于描述硬件!它的最終實(shí)現(xiàn)結(jié)果是芯片內(nèi)部的實(shí)際電路。所以評(píng)判一段 HDL 代碼的優(yōu)劣的最終標(biāo)準(zhǔn)是:其描述并實(shí)現(xiàn)的硬件電路的性能。包括面積和速度兩個(gè)方面。評(píng)價(jià)一個(gè)設(shè)計(jì)的代碼水平較高,僅僅是說(shuō)這個(gè)設(shè)計(jì)是由硬件想 HDL 代碼這種表現(xiàn)形式的轉(zhuǎn)換更加流暢、合理。而一個(gè)設(shè)計(jì)最終性能,在更大程度上取決于設(shè)計(jì)工程師所構(gòu)想的硬件實(shí)現(xiàn)方案的效率以及合理性。(HDL 代碼僅僅是硬件設(shè)計(jì)的表達(dá)形式之一)
初學(xué)者,片面追求代碼的整潔、簡(jiǎn)短,是錯(cuò)誤的。是與 HDL 的標(biāo)準(zhǔn)背道而馳的。正確的編碼方法,首先要做到對(duì)所需實(shí)現(xiàn)的硬件電路胸有成竹,對(duì)該部分的硬件的結(jié)構(gòu)和連接十分清晰,然后再用適當(dāng)?shù)?HDL 語(yǔ)句表達(dá)出來(lái)即可。
另外,Verilog 作為一種 HDL 語(yǔ)言,是分層次的。系統(tǒng)級(jí) -- 算法級(jí) -- 寄存器傳輸級(jí) -- 邏輯級(jí) -- 門級(jí) -- 開(kāi)關(guān)級(jí)。
構(gòu)建優(yōu)先級(jí)樹會(huì)消耗大量的組合邏輯,所以如果能夠使用 case 的地方,盡量使用 case 代替 if.....else......
3. 系統(tǒng)原則
系統(tǒng)原則包含兩個(gè)層次的含義:更高層面上看,是一個(gè)硬件系統(tǒng),一塊單板如何進(jìn)行模塊花費(fèi)和任務(wù)分配,什么樣的算法和功能適合放在 FPGA 里面實(shí)現(xiàn),什么樣的算法和功能適合放在 DSP,CPU 里面實(shí)現(xiàn),以及 FPGA 的規(guī)模估算數(shù)據(jù)接口設(shè)計(jì)等。具體到 FPGA 設(shè)計(jì)就要對(duì)設(shè)計(jì)的全局有個(gè)宏觀上的合理安排,比如時(shí)鐘域,模塊復(fù)用,約束,面積,速度等問(wèn)題。在系統(tǒng)上模塊的優(yōu)化最為重要。
一般來(lái)說(shuō)實(shí)時(shí)性要求高,頻率快的功能模塊適合 FPGA 實(shí)現(xiàn)。而 FPGA 和 CPLD 相比,更適合實(shí)現(xiàn)規(guī)模較大,頻率較高、寄存器較多的設(shè)計(jì)。使用 FPGA/CPLD 設(shè)計(jì)時(shí),應(yīng)該對(duì)芯片內(nèi)部的各種底層硬件資源,和可用的設(shè)計(jì)資源有一個(gè)較深刻的認(rèn)識(shí)。比如 FPGA 一般觸發(fā)器資源豐富,CPLD 的組合邏輯資源更加豐富。FPGA/CPLD 一般是由底層可編程硬件單元,BRAM,布線資源,可配置 IO 單元,時(shí)鐘資源等構(gòu)成。底層可編程硬件單元一般由觸發(fā)器和查找表組成。Xilinx 的底層可編程硬件資源較 SLICE,由兩個(gè) FF 和 2 個(gè) LUT 構(gòu)成。Altera 的底層硬件資源叫 LE,由 1 個(gè) FF 和 1 個(gè) LUT 構(gòu)成。
使用片內(nèi) RAN 可以實(shí)現(xiàn)單口 RAM,雙口 RAM,同步、異步 FIFO,ROM,CAM 等常用單元模塊。
一般的 FPGA 系統(tǒng)規(guī)劃的簡(jiǎn)化流程