十年FPGA開發經驗工程師教你的絕密設計技巧

2020-12-03 電子產品世界

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

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

在學習一門技術之前我們往往從它的程式語言入手,比如學習單片機時,我們往往從彙編或者C語言入門。所以不少開始接觸FPGA的開發人員,往往是從 VHDL或者Verilog開始入手學習的。但我個人認為,若能先結合《數字電路基礎》系統學習各種74系列邏輯電路,深刻理解邏輯功能,對於學習HDL 語言大有裨益,往往會起到事半功倍的效果。


當然,任何程式語言的學習都不是一朝一夕的事,經驗技巧的積累都是在點滴中完成,FPGA設計也無例外。下面就以我的切身體會,談談FPGA設計的經驗技巧。

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

1、硬體設計基本原則

FPGA(Field-Programmable Gate Array),即現場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎上進一步發展的產物。它是作為專用集成電路領域中的一種半定製電路而出現的,既解決了定製電路的不足,又克服了原有可編程器件門電路數有限的缺點。

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

一個設計如果時序餘量較大,所能跑的頻率遠高於設計要求,能可以通過模塊復用來減少整個設計消耗的晶片面積,這就是用速度優勢換面積的節約;

反之,如果一個設計的時序要求很高,普通方法達不到設計頻率,那麼可以通過數據流串並轉換,並行複製多個操作模塊,對整個設計採用「桌球操作」和「串並轉換」的思想進行處理,在晶片輸出模塊處再對數據進行「並串轉換」。從而實現了用面積複製換取速度的提高。

(2)硬體原則:理解HDL本質

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

(4)同步設計原則:設計時序穩定的基本原則

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

3、實際工作中,除了描述仿真測試激勵時使用for循環語句外,極少在RTL級編碼中使用for循環,這是因為for循環會被綜合器展開為所有變量情況的執行語句,每個變量獨立佔用寄存器資源,不能有效的復用硬體邏輯資源,造成巨大的浪費。一般常用case語句代替。

4、 if…else…和case在嵌套描述時是有很大區別的,if…else…是有優先級的,一般來說,第一個if的優先級最高,最後一個else的優先級最低。而case語句是平行語句,它是沒有優先級的,而建立優先級結構需要耗費大量的邏輯資源,所以能用case的地方就不要用if…else…語句。

補充:1.也可以用if…; if…; if…;描述不帶優先級的「平行」語句。

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

6、FPGA和CPLD的組成:

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

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

7、Block RAM:

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

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

M4K RAM: 適用於一般的需求

M-RAM: 適合做大塊數據的緩衝區。

Xlinx 和 LatTIce FPGA的LUT可以靈活配置成小的RAM、ROM、FIFO等存儲結構,這種技術被稱為分布式RAM。

補充:但是在一般的設計中,不提倡用FPGA/CPLD的片內資源配置成大量的存儲器,這是處於成本的考慮。所以儘量採用外接存儲器。

8、善用晶片內部的PLL或DLL資源完成時鐘的分頻、倍頻率、移相等操作,不僅簡化了設計,並且能有效地提高系統的精度和工作穩定性。

9、異步電路和同步時序電路的區別

異步電路:

電路核心邏輯有用組合電路實現;

異步時序電路的最大缺點是容易產生毛刺;

不利於器件移植;

不利於靜態時序分析(STA)、驗證設計時序性能。

同步時序電路:

電路核心邏輯是用各種觸發器實現;

電路主要信號、輸出信號等都是在某個時鐘沿驅動觸發器產生的;

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

利於器件移植;

利於靜態時序分析(STA)、驗證設計時序性能。

10、同步設計中,穩定可靠的數據採樣必須遵從以下兩個基本原則:

(1)在有效時鐘沿到達前,數據輸入至少已經穩定了採樣寄存器的Setup時間之久,這條原則簡稱滿足Setup時間原則;

(2)在有效時鐘沿到達後,數據輸入至少還將穩定保持採樣寄存器的Hold時鐘之久,這條原則簡稱滿足Hold時間原則。

11、同步時序設計注意事項:

異步時鐘域的數據轉換。

組合邏輯電路的設計方法。

同步時序電路的時鐘設計。

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

相關焦點

  • 電子工程師的出路在哪裡,不看後悔!
    如果你偏硬體應用的話,學好電路分析,模擬電路,數字電路,期間可以嘗試layout簡單雙層板/四層板。如果你偏軟體應用的話,電路還是略懂,把c,c++,linux學好。如果你想做晶片設計,fpga,學好高數,信號與系統,vhdl這些。
  • 基於DSP和FPGA的機器人聲控系統設計與實現
    本文引用地址:http://www.eepw.com.cn/article/21345.htm 本次設計採用了性價比較高的數位訊號處理晶片tms320vc5509作為語音識別處理器,具有較快的處理速度,使機器人在脫機狀態下,獨立完成複雜的語音信號處理和動作指令控制,fpga系統的開發降低了時序控制電路和邏輯電路在pcb板所佔的面積[1],使機器人的"大腦"的語音處理部分微型化、低功耗。
  • FPGA開發外設子板模塊電路設計詳解
    FPGA的開發相對於傳統PC、單片機的開發有很大不同。FPGA以並行運算為主,以硬體描述語言來實現;相比於PC或單片機(無論是馮諾依曼結構還是哈佛結構)的順序操作有很大區別,也造成了FPGA開發入門較難。目前國內有專業的FPGA外協開發廠家,開發展基本電路如下:蜂鳴器電路如圖3.47所示。FM信號由FPGA的I/O口控制。
  • fpga應用領域_fpga應用三個主要方向
    fpga的優勢   1)通信高速接口設計。FPGA可以用來做高速信號處理,一般如果AD採樣率高,數據速率高,這時就需要FPGA對數據進行處理,比如對數據進行抽取濾波,降低數據速率,使信號容易處理,傳輸,存儲。   2)數位訊號處理。包括圖像處理,雷達信號處理,醫學信號處理等。
  • 大疆工程師教你如何成為一名機器人工程師(上)
    如果要下定決心學習機器人學並且做出實物,你必須找到做實物出來的資金。要麼是自己花錢,要麼就得找學校的機器人社團,或者找什麼願意資助年輕人學習的貴人。另外現在沒有任何一本完整的書可以教你怎麼造一個四旋翼空中機器人或者大狗機器人,你需要參考十幾本不同的教科書,這些書不管中文版還是英文版都很貴。2. 機器人學是屠龍之術。這話是Ninebot創始人說的。
  • fpga/cpld - fpga_電子產品世界
    英特爾® eASIC N5X通過FPGA中的嵌入式硬體處理器幫助客戶將定製邏輯與設計遷移到結構化ASIC中,帶來了更低的單位成本,更快的性能和更低的功耗等好處。問題可能包括與您的現場可編程門陣列(FPGA)相連、確信您的首個設計通道將起作用或確定在構建系統之前如何對系統進行最佳建模。本文中將仔細研究這些挑戰。快速的系統開發開始新的硬體設計之前,工程師經常會在自己的測試臺上評估最重要的晶片。一旦獲得了運行典型評估板所需的設備,組件評估通常會在理想情況的電源和信號源下進行。
  • FPGA工程師:如何在FPGA中實現狀態機?
    如果您要在物理組件中實現這些狀態圖(工程師在FPGA問世之前就是這麼做的),首先就得生成當前狀態和後續狀態表,然後生成實現狀態機所需的邏輯。不過由於我們將使用FPGA來實現設計,因此我們可以直接從狀態轉換圖開始工作。
  • 產品結構設計工程師的出路在哪裡?
    產品結構設計工程師就是靠經驗吃飯!靠經驗賺錢!有經驗就能吃香喝辣,沒有經驗就只能吃土了!先來介紹一下機械類產品結構設計工程師這個崗位,這個崗位在家電產品、電子產品、工業用品、日用品、消費品等等行業廣泛存在,主要職責就是對整機產品設計,主要負責整機功能實現、產品內部構造、支撐方式、連接方式、零件布局等方面的設計。
  • 圖文講解三相整流電路的原理及計算,工程師們表示秒懂!
    經驗分享|理解串口通信以及232,485,422常見問題 經驗分享|PCB設計中,3W原則、20H原則和五五原則都是什麼? 經驗分享|於找到壓敏電阻會被損壞的原因了!
  • 基於FPGA+MATLAB的串行多階FIR濾波器設計
    2 使用MatIab Fdatool設計FIR濾波器FDATool(Fliter Design & Analysis Tool)是Matlab信號處理工具箱專用的濾波器設計分析工具,操作簡單、靈活,可採用多種方法設計FIR和IIR濾波器。在Matlab命令窗口輸入FDATool後回車就會彈出FDATool界面。
  • PCB設計的6個關鍵技巧,新手老鳥都適用,工程師不知道就虧了!
    PCB設計是一項技術活,掌握其中的一些關鍵技巧可以不走彎路,提高個人甚至團隊的工作效率。接下來,板兒妹和大家分享PCB設計中的6個關鍵技巧,無論你是新手還是老鳥都適用噢。1.電路圖能簡化設計任務有時候只是設計一片簡單電路板,畫電路圖(schematic)似乎是在浪費時間;特別是如果你已經有過完成一、兩個設計的經驗。但對於初次設計PCB的人來說,畫電路圖也會是個艱巨任務。
  • 基於FPGA與有限狀態機的高精度測角系統的設計與實
    雷射跟蹤測量系統(Laser Tracker System)是工業測量系統中常用的一種高精度的測量儀器,是近十年發展起來的新型大尺寸空間測量儀器,不僅對靜止目標可以測量,而且對運動目標也可以進行跟蹤測量
  • 基於FPGA高精度浮點運算器的FFT設計與仿真
    摘要 基於IEEE浮點表示格式及FFT算法,提出一種基2FFT的FPGA方法,完成了基於FPGA高精度浮點運算器的FFT的設計。利用VHDL語言描述了蝶形運算過程及地址產生單元,其仿真波形基本能正確的表示輸出結果。
  • 如何在FPGA中實現狀態機
    對於設計人員來說,滿足這些行動和序列要求的最佳方法則是使用狀態機。狀 態機是在數量有限的狀態之間進行轉換的邏輯結構。一個狀態機在某個特定的時間點只處於一種狀態。但在一系列觸發器的觸發下,將在不同狀態間進行轉換。本文引用地址:http://www.eepw.com.cn/article/266770.htm  理論上講,狀態機可以分為Moore狀態機和Mealy狀態機兩大類。
  • 如何降低功耗FPGA功耗的設計技巧
    如何降低功耗FPGA功耗的設計技巧 FPGA設計論壇 發表於 2021-01-08 17:46:48 對於研發人員而言,大家總是在追求低功耗設計。採用低功耗設計,無疑是能夠帶來諸多好處。
  • 賽靈思推出Spartan-6 FPGA系列
    (NASDAQ: XLNX))日前推出新一代低成本Spartan® 現場可編程門陣列(FPGA)系列產品,可幫助設計小組實現這一目標。 新推出的Spartan-6 FPGA系列樣品現在即可提供。該系列產品在成本、性能和開發工具方面實現了完美的平衡,可幫助為消費、汽車、監控、無線以及其它成本敏感型市場設計更多創新的終端產品。
  • 如何做好一個Web前端開發工程師
    無論是後端開發、設計行業,還是零基礎行業,只要你對Web前端感興趣,就可以加入前端開發行業,這是一個報酬優厚的行業,在網際網路企業中不可或缺。很多人對 web前端都有濃厚的興趣,但卻不知道如何開始學習,今天就為大家推薦7步法幫助你成為 web前端開發工程師。
  • 【經驗分享】CAE工程師侃侃如何成為一個合格的有限元分析工程師
    這還要從N多年前傳統機械結構設計的狀況說起。Long long ago,工程師設計時所依靠的還是設計規範和設計經驗,對的,某種程度來說和第六感差不多吧。 那時候,對於常見結構,傳統的設計可以保證結構的安全性,不能保證設計的最優性,不利於結構設計的經濟性。對於複雜的結構,這樣的設計甚至連使用的可靠性都無法合理的考慮。
  • 大牛工程師教你如何玩轉示波器!
    大牛工程師教你如何玩轉示波器! 佚名 發表於 2014-12-25 09:36:38   本文作者是一位長期在一線使用示波器的有經驗的電源工程師。
  • 基於Spartan-6 FPGA的Sinc3 Filter設計
    濾波器相關文章:濾波器原理 fpga相關文章:fpga是什麼 濾波器相關文章:濾波器原理 電源濾波器相關文章:電源濾波器原理