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