詳解FPGA四大設計要點

2020-08-30 啟迪雲Tuscloud

FPGA的用處比我們平時想像的用處更廣泛,原因在於其中集成的模塊種類更多,而不僅僅是原來的簡單邏輯單元(LE)。

  

早期的FPGA相對比較簡單,所有的功能單元僅僅由管腳、內部buffer、LE、RAM構建而成,LE由LUT(查找表)和D觸發器構成,RAM也往往容量非常小。

  

現在的FPGA不僅包含以前的LE,RAM也更大更快更靈活,管教IOB也更加的複雜,支持的IO類型也更多,而且內部還集成了一些特殊功能單元,包括:

  

DSP:實際上就是乘加器,FPGA內部可以集成多個乘加器,而一般的DSP晶片往往每個core只有一個。換言之,FPGA可以更容易實現多個DSP core功能。在某些需要大量乘加計算的場合,往往多個乘加器並行工作的速度可以遠遠超過一個高速乘加器。

  

SERDES:高速串行接口。將來PCI-E、XAUI、HT、S-ATA等高速串行接口會越來越多。有了SERDES模塊,FPGA可以很容易將這些高速串行接口集成進來,無需再購買專門的接口晶片。

  

CPU core:分為2種,軟core和硬core.軟core是用邏輯代碼寫的CPU模塊,可以在任何資源足夠的FPGA中實現,使用非常靈活。而且在大容量的FPGA中還可以集成多個軟core,實現多核並行處理。硬core是在特定的FPGA內部做好的CPU core,優點是速度快、性能好,缺點是不夠靈活。

  

不過,FPGA還是有缺點。對於某些高主頻的應用,FPGA就無能為力了。現在雖然理論上FPGA可以支持的500MHz,但在實際設計中,往往200MHz以上工作頻率就很難實現了。


  

FPGA設計要點之一:時鐘樹

  

對於FPGA來說,要儘可能避免異步設計,儘可能採用同步設計。


同步設計的第一個關鍵,也是關鍵中的關鍵,就是時鐘樹。

  

一個糟糕的時鐘樹,對FPGA設計來說,是一場無法彌補的災難,是一個沒有打好地基的大樓,崩潰是必然的。

  

具體一些的設計細則:

  

1)儘可能採用單一時鐘;


2)如果有多個時鐘域,一定要仔細劃分,千萬小心;  


3)跨時鐘域的信號一定要做同步處理。對於控制信號,可以採用雙採樣;對於數據信號,可以採用異步fifo.需要注意的是,異步fifo不是萬能的,一個異步fifo也只能解決一定範圍內的頻差問題。
4)儘可能將FPGA內部的PLL、DLL利用起來,這會給你的設計帶來大量的好處。


5)對於特殊的IO接口,需要仔細計算Tsu、Tco、Th,並利用PLL、DLL、DDIO、管腳可設置的delay等多種工具來實現。簡單對管腳進行Tsu、Tco、Th的約束往往是不行的。

  

可能說的不是很確切。這裡的時鐘樹實際上泛指時鐘方案,主要是時鐘域和PLL等的規劃,一般情況下不牽扯到走線時延的詳細計算(一般都走全局時鐘網絡和局部時鐘網絡,時延固定),和ASIC中的時鐘樹不一樣。對於ASIC,就必須對時鐘網絡的設計、布線、時延計算進行仔細的分析計算才行。


  

FPGA設計要點之二:FSM

  

FSM:有限狀態機。這個可以說是邏輯設計的基礎。幾乎稍微大一點的邏輯設計,幾乎都能看得到FSM.

  

FSM分為moore型和merly型,moore型的狀態遷移和變量無關,merly型則有關。實際使用中大部分都採用merly型。

  

FSM通常有2種寫法:單進程、雙進程。

  

初學者往往喜歡單進程寫法,格式如下:


always @( posedge clk or posedge rst )  

begin  

if ( rst == 1&39;b1 )  FSM_status_current <= …;

else  FSM_status_current <= FSM_status_next;  always @(*)  

begin  

case ( FSM_status_current )  

FSM_status_next = ……;  

endcase  

end


從上面可以看到,同步處理和異步處理分別放到2個always中。其中FSM狀態變量也採用2個來進行控制。雙進程FSM的原理我這裡就不多說了,在很多邏輯設計書中都有介紹。這裡描述起來太費勁。

  

優點:

  

1)編譯器優化效果明顯,可以得到很理想的速度和資源佔用率。

  
2)所有的輸出信號(除了FSM_status_current)都是組合輸出的,比單進程FSM快。

  

缺點:

  

1)所有的輸出信號(除了FSM_status_current)都是組合輸出的,在某些場合需要額外寫代碼來進行鎖存。

  
2)在異步處理的always中,所有的if、case分支必須把所有的輸出信號都賦值,而且不能出現在FSM中的輸出信號回送賦值給本FSM中的其他信號的情況,否則會出現 latch.

  

latch會導致如下問題:

  

1)功能仿真結果和後仿不符;

  

2)出現無法測試的邏輯;

  

3)邏輯工作不穩定,特別是latch部分對毛刺異常敏感;

  

4)某些及其特殊的情況下,如果出現正反饋,可能會導致災難性的後果。

  

這不是恐嚇也不是開玩笑,我就親眼見過一個小夥把他做的邏輯加載上去後,整個FPGA給炸飛了。後來懷疑可能是出現正反饋導致高頻振蕩,最後導致晶片過熱炸掉(這個FPGA晶片沒有安裝散熱片)。

  


FPGA設計要點之三:latch

  

首先回答一下:

  

1)stateCAD沒有用過,不過我感覺用這個東東在構建大的系統的時候似乎不是很方便。也許用systemC或者system Verilog更好一些。

  

2)同步、異步的叫法是我所在公司的習慣叫法,不太對,不過已經習慣了,呵呵。

  

這次講一下latch.

  

latch的危害已經說過了,這裡不再多說,關鍵講一下如何避免。

  

1)在組合邏輯進程中,if語句一定要有else!並且所有的信號都要在if的所有分支中被賦值。


always @( * )

beginif ( sig_a == 1&39;b1 ) sig_b = sig_c; else sig_b = sig_d;

end


另外需要注意,下面也會產生latch.也就是說在組合邏輯進程中不能出現自己賦值給自己或者間接出現自己賦值給自己的情況。


always @( * )

begin  

if ( rst == 1&39;h00000000;  else counter = counter + 1;  

end


但如果是時序邏輯進程,則不存在該問題。

  

2)case語句的default一定不能少!

  

原因和if語句相同,這裡不再多說了。

  

需要提醒的是,在時序邏輯進程中,default語句也一定要加上,這是一個很好的習慣。

  

3)組合邏輯進程敏感變量不能少也不能多。

  

這個問題倒不是太大,verilog2001語法中可以直接用 * 搞定了。

  

順便提一句,latch有弊就一定有利。在FPGA的LE中,總存在一個latch和一個D觸發器,在支持DDR的IOE(IOB)中也存在著一個latch來實現DDIO.不過在我們平時的設計中,對latch還是要儘可能的敬而遠之。


  

FPGA設計要點之四:邏輯仿真

  

仿真是FPGA設計中必不可少的一步。沒有仿真,就沒有一切。

  

仿真是一個單調而繁瑣的工作,很容易讓人產生放棄或者偷工減料的念頭。這時一定要挺住!

  

仿真分為單元仿真、集成仿真、系統仿真。

  

單元仿真:針對每一個最小基本模塊的仿真。單元仿真要求代碼行覆蓋率、條件分支覆蓋率、表達式覆蓋率必須達到100%!這三種覆蓋率都可以通過MODELSIM來查看,不過需要在編譯該模塊時要在Compile option中設置好。

  

集成仿真:將多個大模塊合在一起進行仿真。覆蓋率要求儘量高。

  

系統仿真:將整個硬體系統合在一起進行仿真。此時整個仿真平臺包含了邏輯周邊晶片接口的仿真模型,以及BFM、Testbench等。系統仿真需要根據被仿真邏輯的功能、性能需求仔細設計仿真測試例和仿真測試平臺。系統仿真是邏輯設計的一個大分支,是一門需要專門學習的學科。

相關焦點

  • 別墅泳池設計的四大要點,了解清楚可以讓你的泳池設計事半功倍!
    隨著人們生活水平的不斷提高,購買別墅的人也越來越多,遊泳池作為現代別墅家庭的標配,是別墅設計中的點睛之筆,能夠提升獨棟別墅的整體品位與檔次。除了為別墅增添美觀度之外,建個別墅泳池讓你在家就能享受遊泳的放鬆樂趣,隨時隨地想遊就遊,單是想想就覺得棒極了!
  • 基於SoC+FPGA平臺快速動態加載驅動開發及實現
    FPGA晶片EP3C80F484為ALTERA公司推出的Cyclone III系列FPGA的一員,其特點[2]如下:  1)Cyclone III滿足高性能、低功耗、低成本的應用需求;  2)提供容量為5000至200000個邏輯單元、0.5MB至8MB片內RAM的系列晶片選擇,其低功耗設計更易於滿足設計預算,其中EP3C80F484內部集成81264個邏輯單元
  • 辦公室設計布局四大要點
    辦公室裝修設計的過程比較複雜,在要求得體、美觀的辦公環境的同時,更需要保證功能的實用性。辦公室的風格設計對公司的文化內涵與行業性質有著舉足輕重的作用。辦公室布局規劃是設計統籌的開始,那麼應當參照哪5大要點進行辦公室裝修布局呢?
  • FPGA設計開發軟體ISE使用技巧之:創建設計工程
    6.4 創建設計工程本文引用地址:http://www.eepw.com.cn/article/269335.htm  本節將重點講述如何在ISE下創建一個新的工程。要完成一個設計,第一步要做的就是新建一個工程。
  • EMC設計指南之四大常被忽略的EMC設計要點
    打開APP EMC設計指南之四大常被忽略的EMC設計要點 發表於 2020-05-21 16:00:05 下面列舉出四項很重要卻常常被忽略的EMC設計指南。
  • 手把手課堂:Xilinx FPGA設計時序約束指南
    為幫助 FPGA設計新手實現時序收斂,讓我們來深入了解時序約束以及如何利用時序約束實現FPGA 設計的最優結果。本文引用地址:http://www.eepw.com.cn/article/119144.htm  何為時序約束?  為保證設計的成功,設計人員必須確保設計能在特定時限內完成指定任務。
  • 基於FPGA的Gzip解壓縮硬體設計
    >  (2)對待解壓縮文件進行文件頭處理,獲取壓縮方法、壓縮標誌、文件名等信息;  (3)處理每個塊剛開始的3bits,根據處理結果選擇進入相應的解壓縮模式(stored模式、fixed模式、dynamic模式); fpga
  • 基於FPGA的RS232行列式矩陣鍵盤接口設計
    二、設計方案1.晶片引腳定義  三、晶片設計數據接收模塊框圖如圖4所示。 四、總結本方案是用VHDL語言來實現的基於RS232按位串行通信總線的行列式矩陣鍵盤接口電路的設計,具有復位和串行數據的接收與發送功能,根據發光二極體led0-led2的顯示狀態可判斷晶片的工作情況;實現所有電路功能的程序均是在美國ALTERA公司生產的具有現場可編程功能的晶片EPM7128SLC84-15上調試通過的。
  • FPGA系統設計的仿真驗證之: ModelSim的仿真流程
    7.3.2 使用ModelSim進行功能仿真  使用ModelSim對設計的HDL程序進行仿真分為功能仿真和時序仿真兩種。本節將以一個具體的實例講解如何使用ModelSim對HDL工程進行功能仿真。時序仿真的具體內容將在7.4節具體介紹。  這裡我們使用的例子是一個分頻電路的設計。所謂分頻電路是將較高頻率的時鐘分頻,得到較低頻率的時鐘。
  • 基於FPGA的高速PID控制器設計與仿真
    其設計技術成熟,長期以來形成了典型的結構,參數整定方便,結構更改靈活,能滿足一般控制的要求。本設計使用Altera公司的Cyclone系列FPGA器件EP1C3作為硬體開發平臺,對運動控制中常用的增量式數字PID控制算法進行優化處理,提高了運算速度和迴路的調節時間。
  • 基於FPGA技術的全方位移動機器人運動控制系統的方案設計
    且FPGA設計簡單,使用方便,開發周期短,能夠實現真正的SOPC系統。  1 全方位移動機器人運動模型  設世界坐標系下機器人的速度為ε=[vx,vy,φ],則當vx=O,vy≠0,φ=O時,機器人做前後方向的直線運動,當vx≠0,vy=0,φ=0時,機器人做左右方向的直線運動,當vx=0,vy=0,φ≠0時,機器人做自轉運動。
  • 基於FPGA的八通道超聲探傷系統設計
    1 八通道超聲探傷系統硬體設計 本系統的硬體總體框圖如圖1所示。系統主要包含前端發射接收電路、八通道模數轉換電路,FPGA數據處理與邏輯控制系統和ARM後處理模塊4個部分組成。該器件內置採樣保持電路,低成本,低功耗,小尺寸,單片集成八個通道的AD電路,能夠極大的減少電路設計的工作量和所需的電路板的面積。與此同時,AD9212採用串行LVDS數據輸出和DDR操作,既具有較高的數據輸出速率,又能減少所需的接口IO資源。
  • 一種基於FPGA的視頻圖像畫面分割器設計
    本文將詳細介紹基於FPGA開發技術的視頻圖像畫面分割器的軟硬體設計與實現。1 系統總體設計本系統選用Altera公司的CycloneIII系列中的EP3C40F780C7型號FPGA作為核心處理晶片,提出和設計了一個多路視頻圖像數據的採集、處理、顯示,實現視頻圖像畫面分割器。
  • 紫光國微:公司的參股子公司紫光同創從事FPGA業務,為國內該領域的...
    請問貴公司是否是國內唯一一家自主eda的fpga的廠商?貴公司對fpga未來市場預估大概是多少?fpga應用領域是否有一定的成長性?貴公司是否會研發除fpga外的集成電路也能應用的eda?貴公司有何戰略性計劃?公司回答表示,感謝您對公司的關注。公司的參股子公司紫光同創從事FPGA業務,為國內該領域的龍頭企業。
  • 9年FPGA工作經驗,轉行了,苦海無涯……
    工作了9年的fpga,總要總結…… 其實說我的fpga經驗,也是一坨屎。三年的,用altera的c3和c4 做led控制卡。2年的用lattice的MACHXO-XO2和ECP2做了視頻和網絡光端機,3年的XILINX的SPARTAN 6 做了視頻ISP處理,現在一年的xilinx的ZYNQ做機器視覺。
  • 了解LabVIEW FPGA和軟體設計射頻儀器的優勢所在
    軟體設計儀器的新方法使得射頻測試工程師無需憑藉自定義或特殊標準的儀器,就能以多個數量級的幅度減少測試時間。  閱讀此文可以幫助您了解如何使用NI LabVIEW FPGA來設計和自定義您的射頻儀器,以及通過軟體設計的儀器能為您的測試系統所帶來的好處。  1.
  • FPGA quartus ii裡的靜態時序分析
    FPGA quartus ii裡的靜態時序分析 huan09900990 發表於 2020-11-25 11:39:35 在fpga工程中加入時序約束的目的: 1、給quartusii
  • fpga應用領域_fpga應用三個主要方向
    fpga的優勢   1)通信高速接口設計。FPGA可以用來做高速信號處理,一般如果AD採樣率高,數據速率高,這時就需要FPGA對數據進行處理,比如對數據進行抽取濾波,降低數據速率,使信號容易處理,傳輸,存儲。   2)數位訊號處理。包括圖像處理,雷達信號處理,醫學信號處理等。優勢是實時性好,用面積換速度,比CPU快的多。
  • FPGA設計開發軟體ISE使用技巧之:典型實例-ChipScope功能演示
    6.8 典型實例11:ChipScope功能演示本文引用地址:http://www.eepw.com.cn/article/269339.htm  6.8.1 實例的內容及目標  1.實例的主要內容  本節通過一個簡單的計數器,使用ChipScope的兩種實現流程,基於Xilinx開發板完成設計至驗證的完整過程
  • 基於Modelsim FLI接口的FPGA仿真技術
    1、Modelsim 及 FLI接口介紹本文引用地址:http://www.eepw.com.cn/article/273718.htm  Modelsim是 Model Technology(Mentor Graphics的子公司)的 HDL 硬體描述語言仿真軟體,可以實現 VHDL, Verilog,以及 VHDL-Verilog 混合設計的仿真