FPGA設(shè)計的8大重要知識點,你了解嗎?想轉(zhuǎn)行互聯(lián)網(wǎng),卻又不知道如何選擇,一直很迷茫、躊躇,現(xiàn)在不必再擔憂,26門熱門互聯(lián)網(wǎng)技術(shù)免費試聽5天,你可以先試聽,再決定!信盈達——您身邊的嵌入式培訓專家!
1.面積與速度的平衡與互換
這里的面積指一個設(shè)計消耗FPGA/CPLD的邏輯資源的數(shù)量,對于FPGA可以用消耗的FF(觸發(fā)器)和LUT(查找表)來衡量,更一般的衡量方式可以用設(shè)計所占的等價邏輯門數(shù)。
速度指設(shè)計在芯片上穩(wěn)定運行所能達到的最高頻率,這個頻率由設(shè)計的時序狀況來決定,以及設(shè)計滿足的時鐘要求:PAD to PAD time,Clock Setup Time,Clock Hold Time,Clock-to-Output Delay等眾多時序特征量密切相關(guān)。
面積和速度這兩個指標貫穿FPGA/CPLD設(shè)計的時鐘,是設(shè)計質(zhì)量的評價的終極標準——面積和速度是一對對立統(tǒng)一的矛盾體。
要求一個同時具備設(shè)計面積最小,運行頻率最高是不現(xiàn)實的。更科學的設(shè)計目標應(yīng)該是在滿足設(shè)計時序要求(括對設(shè)計頻率的要求)的前提下,占用最小的芯片面積。或者在所規(guī)定的面積下,是設(shè)計的時序余量更大,頻率跑的更高。這兩種目標充分體現(xiàn)了面積和速度的平衡的思想。
2.硬件原則
硬件原則主要針對HDL代碼編寫而言:Verilog是采用了C語言形式的硬件的抽象,它的本質(zhì)作用在于描述硬件,它的最終實現(xiàn)結(jié)果是芯片內(nèi)部的實際電路。所以評判一段HDL代碼的優(yōu)劣的最終標準是:其描述并實現(xiàn)的硬件電路的性能,括面積和速度兩個方面。
初學者片面追求代碼的整潔,簡短,是錯誤的,是與HDL的標準背道而馳的。正確的編碼方法,首先要做到對所需實現(xiàn)的硬件電路胸有成竹,對該部分的硬件的結(jié)構(gòu)和連接十分清晰,然后再用適當?shù)腍DL語句表達出來即可。
3.系統(tǒng)原則
系統(tǒng)原則含兩個層次的含義:更高層面上看,是一個硬件系統(tǒng),一塊單板如何進行模塊花費和任務(wù)分配,什么樣的算法和功能適合放在FPGA里面實現(xiàn),什么樣的算法和功能適合放在DSP/CPU里面實現(xiàn),以及FPGA的規(guī)模估算數(shù)據(jù)接口設(shè)計等。具體到FPGA設(shè)計就要對設(shè)計的全局有個宏觀上的合理安排,比如時鐘域,模塊復(fù)用,約束,面積,速度等問題,在系統(tǒng)上模塊的優(yōu)化最為重要。
比如FPGA一般觸發(fā)器資源豐富,CPLD的組合邏輯資源更加豐富。FPGA/CPLD一般是由底層可編程硬件單元,BRAM,布線資源,可配置IO單元,時鐘資源等構(gòu)成。
一般的FPGA系統(tǒng)規(guī)劃的簡化流程
4.同步設(shè)計原則
異步電路的邏輯核心是用組合邏輯電路實現(xiàn),比如異步的FIFO/RAM讀寫信號,地址譯碼等電路。電路的主要信號,輸出信號等并不依賴于任何一個時鐘性信號,不是由時鐘信號驅(qū)動FF產(chǎn)生的。異步時序電路的缺點是容易產(chǎn)生毛刺,在布局布線后仿真和用邏輯分析儀觀測實際信號時,這種毛刺尤其明顯。
同步時序電路的核心邏輯用各種各樣的觸發(fā)器實現(xiàn),電路的主要信號,輸出信號都是由某個時鐘沿驅(qū)動觸發(fā)器產(chǎn)生出來的。同步時序電路可以很好的避免毛刺,布局布線后仿真,和用邏輯分析儀采樣實際信號都沒有毛刺。
5.乒乓操作
“乒乓操作”是一個常常應(yīng)用于數(shù)據(jù)流控制的處理技巧,乒乓操作的處理流程為:輸入數(shù)據(jù)流通過“輸入數(shù)據(jù)選擇單元”將數(shù)據(jù)流等時分配到兩個數(shù)據(jù)緩沖區(qū),數(shù)據(jù)緩沖模塊可以為任何存儲模塊,比較常用的存儲單元為雙口RAM(DPRAM),單口RAM(SPRAM),FIFO等。
6.串并轉(zhuǎn)換設(shè)計技巧
串并轉(zhuǎn)換是FPGA設(shè)計的一個重要技巧,它是數(shù)據(jù)流處理的常用手段,也是面積與速度互換思想的直接體現(xiàn)。串并轉(zhuǎn)換的實現(xiàn)方法多種多樣,根據(jù)數(shù)據(jù)的排序和數(shù)量的要求,可以選用寄存器,RAM等實現(xiàn)。
7.流水線操作設(shè)計思想
首先需要聲明的是,這里所講述的流水線是指一種處理流程和順序操作的設(shè)計思想,并非FPGA,ASIC設(shè)計中優(yōu)化時序所用的“Pipelining”。
流水線處理是高速設(shè)計中的一個常用設(shè)計手段。如果某個設(shè)計的處理流程分為若干步驟,而且整個數(shù)據(jù)處理是“單流向”的,即沒有反饋或者迭代運算,前一個步驟的輸出是下一個步驟的輸入,則可以考慮采用流水線設(shè)計方法來提高系統(tǒng)的頻率。
8.數(shù)據(jù)接口的同步方法
數(shù)據(jù)接口的同步是FPGA/CPLD設(shè)計的一個常見問題,也是一個重點和難點,很多設(shè)計不穩(wěn)定都是源于數(shù)據(jù)接口的同步有問題。在電路圖設(shè)計階段,一些工程師手工加入BUFT或者非門調(diào)整數(shù)據(jù)延遲,從而本級模塊的時鐘對上級模塊數(shù)據(jù)的建立,保持時間要求。
還有一些工程師為了有穩(wěn)定的采樣,生成了很多相差90度的時鐘信號,時而用正沿打一下數(shù)據(jù),時而用負沿打一下數(shù)據(jù),用以調(diào)整數(shù)據(jù)的采樣位置。這兩種做法都十分不可取,因為一旦芯片更新?lián)Q代或者移植到其它芯片組的芯片上,采樣實現(xiàn)必須重新設(shè)計。而且,這兩種做法造成電路實現(xiàn)的余量不夠,一旦外界條件變換(比如溫度升高),采樣時序就有可能完全紊亂,造成電路癱瘓。
... [詳情]
... [詳情]
... [詳情]
... [詳情]
... [詳情]