新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 十年FPGA開發(fā)經(jīng)驗(yàn)工程師教你的絕密設(shè)計(jì)技巧

十年FPGA開發(fā)經(jīng)驗(yàn)工程師教你的絕密設(shè)計(jì)技巧

作者: 時(shí)間:2018-08-07 來源:網(wǎng)絡(luò) 收藏

從大學(xué)時(shí)代第一次接觸至今已有10多年的時(shí)間,至今記得當(dāng)初第一次在EDA實(shí)驗(yàn)平臺上完成數(shù)字秒表、搶答器、密碼鎖等實(shí)驗(yàn)時(shí)那個(gè)興奮勁。當(dāng)時(shí)由于沒有接觸到HDL硬件描述語言,設(shè)計(jì)都是在MAX+plus II原理圖環(huán)境下用74系列邏輯器件搭建起來的。后來讀研究生,工作陸陸續(xù)續(xù)也用過Quartus II、FoundaTIon、ISE、Libero,并且學(xué)習(xí)了verilogHDL語言,學(xué)習(xí)的過程中也慢慢體會到verilog的妙用,原來一小段語言就能完成復(fù)雜的原理圖設(shè)計(jì),而且語言的移植性可操作性比原理圖設(shè)計(jì)強(qiáng)很多。

本文引用地址:http://www.butianyuan.cn/article/201808/385638.htm

在學(xué)習(xí)一門技術(shù)之前我們往往從它的編程語言入手,比如學(xué)習(xí)單片機(jī)時(shí),我們往往從匯編或者C語言入門。所以不少開始接觸的開發(fā)人員,往往是從 VHDL或者Verilog開始入手學(xué)習(xí)的。但我個(gè)人認(rèn)為,若能先結(jié)合《數(shù)字電路基礎(chǔ)》系統(tǒng)學(xué)習(xí)各種74系列邏輯電路,深刻理解邏輯功能,對于學(xué)習(xí)HDL 語言大有裨益,往往會起到事半功倍的效果。


當(dāng)然,任何編程語言的學(xué)習(xí)都不是一朝一夕的事,經(jīng)驗(yàn)技巧的積累都是在點(diǎn)滴中完成,設(shè)計(jì)也無例外。下面就以我的切身體會,談?wù)凢PGA設(shè)計(jì)的經(jīng)驗(yàn)技巧。

我們先談一下FPGA基本知識:

1、硬件設(shè)計(jì)基本原則

FPGA(Field-Programmable Gate Array),即現(xiàn)場可編程門陣列,它是在PAL、GAL、等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。

(1)速度與面積平衡和互換原則:

一個(gè)設(shè)計(jì)如果時(shí)序余量較大,所能跑的頻率遠(yuǎn)高于設(shè)計(jì)要求,能可以通過模塊復(fù)用來減少整個(gè)設(shè)計(jì)消耗的芯片面積,這就是用速度優(yōu)勢換面積的節(jié)約;

反之,如果一個(gè)設(shè)計(jì)的時(shí)序要求很高,普通方法達(dá)不到設(shè)計(jì)頻率,那么可以通過數(shù)據(jù)流串并轉(zhuǎn)換,并行復(fù)制多個(gè)操作模塊,對整個(gè)設(shè)計(jì)采用“乒乓操作”和“串并轉(zhuǎn)換”的思想進(jìn)行處理,在芯片輸出模塊處再對數(shù)據(jù)進(jìn)行“并串轉(zhuǎn)換”。從而實(shí)現(xiàn)了用面積復(fù)制換取速度的提高。

(2)硬件原則:理解HDL本質(zhì)

(3)系統(tǒng)原則:整體把握

(4)同步設(shè)計(jì)原則:設(shè)計(jì)時(shí)序穩(wěn)定的基本原則

2、Verilog作為一種HDL語言,對系統(tǒng)行為的建模方式是分層次的。比較重要的層次有系統(tǒng)級、算法級、寄存器傳輸級、邏輯級、門級、電路開關(guān)級。

3、實(shí)際工作中,除了描述仿真測試激勵時(shí)使用for循環(huán)語句外,極少在RTL級編碼中使用for循環(huán),這是因?yàn)閒or循環(huán)會被綜合器展開為所有變量情況的執(zhí)行語句,每個(gè)變量獨(dú)立占用寄存器資源,不能有效的復(fù)用硬件邏輯資源,造成巨大的浪費(fèi)。一般常用case語句代替。

4、 if…else…和case在嵌套描述時(shí)是有很大區(qū)別的,if…else…是有優(yōu)先級的,一般來說,第一個(gè)if的優(yōu)先級最高,最后一個(gè)else的優(yōu)先級最低。而case語句是平行語句,它是沒有優(yōu)先級的,而建立優(yōu)先級結(jié)構(gòu)需要耗費(fèi)大量的邏輯資源,所以能用case的地方就不要用if…else…語句。

補(bǔ)充:1.也可以用if…; if…; if…;描述不帶優(yōu)先級的“平行”語句。

5、FPGA一般觸發(fā)器資源比較豐富,而組合邏輯資源更豐富。

6、FPGA和的組成:

FPGA基本有可編程I/O單元、基本可編程邏輯單元、嵌入式塊RAM、豐富的布線資源、底層嵌入功能單元和內(nèi)嵌專用硬核等6部分組成。

CPLD的結(jié)構(gòu)相對比較簡單,主要由可編程I/O單元、基本邏輯單元、布線池和其他輔助功能模塊組成。

7、Block RAM:

3種塊RAM結(jié)構(gòu),M512 RAM(512bit)、M4K RAM(4Kbit)、M-RAM(64Kbit)。

M512 RAM:適合做一些小的Buffer、FIFO、DPRAM、SPRAM、ROM等;

M4K RAM: 適用于一般的需求

M-RAM: 適合做大塊數(shù)據(jù)的緩沖區(qū)。

Xlinx 和 LatTIce FPGA的LUT可以靈活配置成小的RAM、ROM、FIFO等存儲結(jié)構(gòu),這種技術(shù)被稱為分布式RAM。

補(bǔ)充:但是在一般的設(shè)計(jì)中,不提倡用FPGA/CPLD的片內(nèi)資源配置成大量的存儲器,這是處于成本的考慮。所以盡量采用外接存儲器。

8、善用芯片內(nèi)部的PLL或DLL資源完成時(shí)鐘的分頻、倍頻率、移相等操作,不僅簡化了設(shè)計(jì),并且能有效地提高系統(tǒng)的精度和工作穩(wěn)定性。

9、異步電路和同步時(shí)序電路的區(qū)別

異步電路:

電路核心邏輯有用組合電路實(shí)現(xiàn);

異步時(shí)序電路的最大缺點(diǎn)是容易產(chǎn)生毛刺;

不利于器件移植;

不利于靜態(tài)時(shí)序分析(STA)、驗(yàn)證設(shè)計(jì)時(shí)序性能。

同步時(shí)序電路:

電路核心邏輯是用各種觸發(fā)器實(shí)現(xiàn);

電路主要信號、輸出信號等都是在某個(gè)時(shí)鐘沿驅(qū)動觸發(fā)器產(chǎn)生的;

同步時(shí)序電路可以很好的避免毛刺;

利于器件移植;

利于靜態(tài)時(shí)序分析(STA)、驗(yàn)證設(shè)計(jì)時(shí)序性能。

10、同步設(shè)計(jì)中,穩(wěn)定可靠的數(shù)據(jù)采樣必須遵從以下兩個(gè)基本原則:

(1)在有效時(shí)鐘沿到達(dá)前,數(shù)據(jù)輸入至少已經(jīng)穩(wěn)定了采樣寄存器的Setup時(shí)間之久,這條原則簡稱滿足Setup時(shí)間原則;

(2)在有效時(shí)鐘沿到達(dá)后,數(shù)據(jù)輸入至少還將穩(wěn)定保持采樣寄存器的Hold時(shí)鐘之久,這條原則簡稱滿足Hold時(shí)間原則。

11、同步時(shí)序設(shè)計(jì)注意事項(xiàng):

異步時(shí)鐘域的數(shù)據(jù)轉(zhuǎn)換。

組合邏輯電路的設(shè)計(jì)方法。

同步時(shí)序電路的時(shí)鐘設(shè)計(jì)。

同步時(shí)序電路的延遲。同步時(shí)序電路的延遲最常用的設(shè)計(jì)方法是用分頻或者倍頻的時(shí)鐘或者同步計(jì)數(shù)器完成所需的延遲,對比較大的和特殊定時(shí)要求的延時(shí),一般用高速時(shí)鐘產(chǎn)生一個(gè)計(jì)數(shù)器,根據(jù)計(jì)數(shù)產(chǎn)生延遲;對于比較小的延遲,可以用D觸發(fā)器打一下,這樣不僅可以使信號延時(shí)了一個(gè)時(shí)鐘周期,而且完成了信號與時(shí)鐘的初次同步。在輸入信號采樣和增加時(shí)序約束余量中使用。另外,還有用行為級方法描述延遲,如“#5 a《=4’0101;”這種常用于仿真測試激勵,但是在電路綜合時(shí)會被忽略,并不能起到延遲作用。


上一頁 1 2 3 下一頁

關(guān)鍵詞: CPLD 電子工程師 FPGA

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉