01FPGA基礎知識
FPGA(Field Programmable Gate Array, 現(xiàn)場可編程邏輯陣列)是在PAL、GAL、CPLD等可編程器件的基礎上進一步發(fā)展的產物。它是作為專用集成電路(ASIC)領域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點。
1.1 FPGA與其他相關可編程器件
1.1.1FPGA, ASIC和ASSP
ASIC以及ASSP的功能相對固定,是為了專一功能或專一領域而生,希望對它進行任何功能和性能的改善往往是無濟于事,而FPGA則在產品發(fā)布后仍然可以對產品設計做出修改,大大方便了產品的更新和針對新的協(xié)議標準做出相應改進,從而加速產品上市時間,并降低產品失敗的風險和維護成本。隨著電子技術領域的發(fā)展,F(xiàn)PGA也正在向高集成,高性能,低功耗和低價格方向發(fā)展,并逐漸具備了與ASIC,ASSP相當?shù)男阅堋?/p>
ASIC: 專用集成電路(Application Specific Integrated Circuit)
ASSP: 專用標準產品(Application Specific Standard Parts)
在嵌入式系統(tǒng)設計領域,雖然ARM有很多外設,DSP具備強大的信號運算能力,但是這些功能FPGA都可以做到,所以在很多原型產品設計過程中(靈活性要求高、定制化程度高、性能要求高),會經常提出基于FPGA的方案,但是客觀來說,F(xiàn)PGA的成本功耗和開發(fā)復雜性往往會讓很多用戶望而卻步。
ARM: Advanced RISC Machines,ARM通常包含一顆強大的處理器內核,并且為這顆處理器量身配套了很多成熟的軟件工具以及高級編程語言,同時在ARM內核處理器周邊,各種各樣精于控制的外設很多,如GPIO,PWM,AD/DA,UART,SPI,I2C等,使得ARM在控制和管理上有很大優(yōu)勢。
DSP: Digital Signal Processor, 即數(shù)字信號處理器,是一種獨特的微處理器,有自己完整的指令系統(tǒng),能夠進行高速高吞吐量的數(shù)字信號處理,因此適合對各種語音,數(shù)據(jù)和視頻做運算處理。
1.1.3?FPGA和PLD
PLD重構基于門級陣列(Gate Array),屬于門級,即邏輯門是固定的,只有布線是可重構編程的,因此布線冗余較多;而FPGA重構基于查找表(LUT),屬于邏輯簇級,即布線是固定的,而邏輯是可重構編程的,因此相對與PLD而言布線冗余較少,更適合構建大規(guī)模邏輯電路。
1.2 FPGA主流開發(fā)語言
1.2.1?VHDL
VHDL(VHSIC hardware description language)語言誕生于1983年,1987年被美國國防部和IEEE確定為標準的硬件描述語言。自從IEEE發(fā)布了VHDL的第一個標準版本IEEE 1076-1987后,各大EDA公司都先后推出了自己支援 VHDL 的 EDA 工具。VHDL 在電子設計行業(yè)得到了廣泛的認同。此后IEEE又先后發(fā)布了IEEE 1076-1993和IEEE 1076-2000版本。
VHDL優(yōu)點:語法嚴謹,層次結構清晰。
VHDL缺點:不夠靈活,熟悉時間長。
1.2.2?Verilog HDL
Verilog HDL誕生于1983年,由Gateway設計自動化公司的工程師創(chuàng)立,菲爾·莫比(PhilMoorby)完成了Verilog的主要設計工作。1990年代初,開放Verilog國際(Open Verilog International, OVI)組織(即現(xiàn)在的Accellera)成立,Verilog面向公有領域開放。1992年該組織尋求將Verilog納入電氣電子工程師學會標準 ,于是Verilog最終成為了電氣電子工程師學會1364-1995標準(即Verilog-95)。后來Verilog經過多次版本更新,具備了一些新的實用功能,目前,Verilog-2001是Verilog的最主流版本,被大多數(shù)商業(yè)電子設計自動化軟件包支持。2009年IEEE 1364-2005和IEEE 1800-2005兩個部分合并為IEEE 1800-2009,成為了一個新的、統(tǒng)一的SystemVerilog硬件描述驗證語言(hardware description and verification language, HDVL)。
Verilog 優(yōu)點:類C語言,上手快速,易于使用。
Verilog 缺點:存在不能通過編譯識別的錯誤。
1.3 FPGA器件主流企業(yè)
目前Altera(已被Intel公司收購)和Xilinx公司(已被AMD收購)是FPGA器件主流廠商,兩家公司的可編程邏輯器件占到全球市場的近80%,其中Xilinx FPGA占近50%,而Altera占近30%。除這兩家龍頭企業(yè)外,偶爾也會有一些后來者,例如Lattice,京微雅格等。盡管不同公司的FPGA器件內部結構有所差異,但在開發(fā)流程、開發(fā)工具乃至原廠提供的各種支持上都大同小異,因此只要掌握FPGA的開發(fā)流程,任何廠商的器件都可以輕松上手。
02FPGA基本架構
2.1 Xilinx FPGA基本架構
Xilinx的FPGA主要由可配置邏輯塊(CLB)、時鐘管理模塊(CMT)、存儲器(RAM/FIFO)、數(shù)字信號處理模塊(DSP)和一些專用模塊組成。
2.1.1?可配置邏輯塊(CLB)
Xilinx FPGA邏輯是由陣列排布的CLB實現(xiàn)的,每一個CLB單元都和一個開關陣列相連,并受其控制從而實現(xiàn)邏輯功能。
CLB由基本結構Slice構成,而基本結構中又包含有查找表(LUT),存儲單元,廣函數(shù)多路器(Wide function Multiplexer)和進位邏輯,這種基本結構成為SLICEL。有些基本結構中還包含舒勇RAM存儲數(shù)據(jù)的功能和使用32位寄存器移位功能,這種基本結構成為SLICEM。
2.1.2 時鐘管理模塊(CMT)
時鐘管理模塊(CMT)用于產生高質量的時鐘,通常CMT會包含數(shù)字時鐘管理模塊(DCM)和鎖相環(huán)電路(PLL),從而實現(xiàn)時鐘的倍頻與分頻。
2.1.3 存儲器(RAM/FIFO)
Xilinx FPGA都有內部的存儲器塊,例如Virtex-5內部包含若干塊36KB大小可以靈活配置的同步雙口RAM,這些RAM可以配置為多速率的FIFO存儲器,極大地提高了設計的靈活性。
2.1.4 數(shù)字信號處理模塊(DSP)
Xilinx FPGA中大多包含DSP資源模塊,對于需要大量算法運算的應用,F(xiàn)PGA內部這類乘法運算單元就顯得十分實用。例如7系列中最小的計算單元DSP48E1:
2.1.5 其他專用模塊
除了上述模塊外,在現(xiàn)代的Xilinx的FPGA產品中還有一些其他專用模塊,例如:Rocket IO千兆位級收發(fā)器、PCI Express端點模塊和三態(tài)以太網MAC模塊等。
2.2 Altera FPGA基本架構
Altera的FPGA一般由邏輯陣列模塊(LAB)、TriMatrix存儲器模塊(RAM)、數(shù)字信號處理模塊(DSP)和鎖相環(huán)模塊(PLL)組成。
2.2.1 邏輯陣列模塊(LAB)
邏輯陣列模塊(LAB)的主要結構是適應邏輯模塊(ALM),還包括一些進位鏈和控制邏輯等結構。
ALM中包含查找表(LUT),可編程寄存器,專用全加器,進位鏈,共享算術鏈和寄存器鏈。
2.2.2?FPGA, ARM和DSP
類似于Xilinx FPGA器件,Altera FPGA中同樣包括不同大小的嵌入式RAM存儲器資源,可以支持配置各種特性。
2.2.3?數(shù)字信號處理模塊(DSP)
類似于Xilinx FPGA器件,Altera FPGA中同樣含有DSP資源,從而實現(xiàn)多種最大性能和最小邏輯資源利用率的DSP功能。
2.2.4 鎖相環(huán)(PLL)
類似于Xilinx FPGA器件內部的時鐘管理模塊,Altera FPGA中同樣具備PLL鎖相環(huán)資源,從而實現(xiàn)高質量的時鐘生成。
2.3 LUT實現(xiàn)原理
PLD重構基于門級陣列(Gate Array),屬于門級,即邏輯門是固定的,只有布線是可重構編程的,因此布線冗余較多;而FPGA重構基于查找表(LUT),屬于邏輯簇級,即布線是固定的,而邏輯是可重構編程的,因此相對與PLD而言布線冗余較少,更適合構建大規(guī)模邏輯電路。
A,B,C有FPGA芯片的管腳輸入后進入可編程連線,然后作為地址線連接到LUT,LUT中已經事先寫入了所有可能的邏輯結果,通過地址查找到相應的數(shù)據(jù)后輸出,從而實現(xiàn)組合邏輯,而FPGA中的時序邏輯由觸發(fā)器協(xié)助實現(xiàn)。
03FPGA應用領域與優(yōu)勢
3.1 信號采集處理
FPGA的并行處理特性在信號采集與處理方面具有很大的優(yōu)勢,例如一些高速ADC或圖像傳感器的數(shù)據(jù)采集與實時處理。盡管一些高端的嵌入式處理器也可實現(xiàn)信號采集與處理功能,但嵌入式軟件程序的編譯需要耗費更多的時間,在實時性要求較高的數(shù)據(jù)采集處理系統(tǒng)中將難以勝任。相比之下,F(xiàn)PGA的并行處理和可靈活配置的位寬等諸多優(yōu)勢得以顯現(xiàn)。
3.2 通信協(xié)議實現(xiàn)
FPGA在通信協(xié)議的實現(xiàn)上具有更高的靈活性。盡管ARM等嵌入式芯片也可通過一定的協(xié)議進行數(shù)據(jù)交互,但這些通信協(xié)議接口大多是固定的,功能也相對有限。FPGA擁有更加豐富的電平接口,易于實現(xiàn)各種各樣不同的協(xié)議,更適合于用戶定制化較高的場景。同時相比于定制化芯片的設計生產,F(xiàn)PGA在成本和周期等各方面都具有一定的優(yōu)勢。
3.3 芯片原型驗證
隨著芯片制造工藝的提升,以及芯片復雜程度的增加,流片的成本也在不斷攀升。利用FPGA在流片前期進行驗證,可以極大的降低流片后芯片出現(xiàn)問題故障的概率,進一步節(jié)約芯片制造的成本。
3.4 系統(tǒng)實時控制
FPGA的并行特性在需要實時控制的系統(tǒng)中也發(fā)揮著很大的作用。盡管利用單片機可以實現(xiàn)對電機、顯示器等不同執(zhí)行終端的控制,但是單片機程序所需要的響應時間較長。在實時性要求很高的系統(tǒng)中,單片機的響應時間可能會導致系統(tǒng)無法達到需求標準,例如航天圖像系統(tǒng)需要對航天器的工作情況進行實時監(jiān)控與評估,F(xiàn)PGA便是很好的選擇。
04FPGA開發(fā)流程
? ?
4.1 需求分析—>模塊劃分
設計者根據(jù)項目需求,確定所需資源并選定FPGA型號,進而根據(jù)目標實現(xiàn)功能進行模塊劃分。由于FPGA的實現(xiàn)是并行的,對于一個項目的需求往往需要通過多次處理才能實現(xiàn),因此要考慮分成多個模塊以利于后期的代碼升級,維護以及設計的綜合優(yōu)化。
4.2 設計輸入—>綜合優(yōu)化
模塊劃分完成后,需要考慮不同模塊的輸入輸出接口,此時根據(jù)原理圖和相關硬件手冊,進行底層設計輸入工作。代碼設計完成后,檢查語法是否無誤,進而進行代碼的綜合。
綜合是將較高層次的電路描述轉化為較低層次的電路描述,即將設計代碼轉化為底層的與門,非門,RAM,觸發(fā)器等基本邏輯單元相互連接而成的網表。
綜合完成后需要進行功能仿真。功能仿真不涉及任何時序上的延時,只是單純驗證代碼所實現(xiàn)的功能是否符合要求。
4.3 實現(xiàn)—>時序收斂
功能仿真過后一般會進行一次全編譯,然后對工程進行約束:包括全局約束(I/O接口約束)和時序約束。添加完時序約束后,需要進行實現(xiàn)(翻譯、映射和布局布線),然后查看時序報告。在添加時序約束前后,變化最大的應該是布局布線。
一般對于較大的工程,編譯往往耗費很多時間,因此可以查看映射后的時序報告進行前期的分析。這個報告的邏輯延時是完全準確的,布線延時卻是通過一定比例推導得出的估計值,所以由此得到的時序報告并不完全準確。但是如果得到的估計延時偏大,時序明顯達不到要求,那么設計者就應該先回頭查找問題,想辦法達到時序收斂。如果達到了時序收斂,并且設計者進行了充分的前期功能仿真,那么往下的時序仿真就可以不做,從而節(jié)省了時間。
4.4 仿真測試—>板級調試
仿真和板級調試是FPGA設計的主要驗證手段。盡管板級調試能夠直觀真實的反映信號狀態(tài),也便于問題的尋找和定位,但是板級調試同步觀察接口信號數(shù)量受限,而且很難觀測到FPGA內部信號節(jié)點的狀態(tài)。因此,仿真在FPGA開發(fā)驗證中有著更重要的作用。
整個設計的驗證過程如上圖所示:
行為仿真的代碼可以是不可綜合的代碼;
功能仿真是對成為硬件的門級網表進行驗證,但不包含任何布局布線延時信息;
時序仿真是在功能仿真的基礎上包含電路的延時信息;
板級調試驗證最終功能是否實現(xiàn)。
前仿真:綜合前仿真,行為仿真
后仿真:綜合后仿真,功能仿真
審核編輯:湯梓紅
評論
查看更多