1984年,Xilinx公司的創(chuàng)始人之一,密西根大學畢業(yè)生,RossFreeman第一次提出了可編程邏輯器件(PLD)的概念,讓芯片成為一個空白的畫布,可由工程師通過編程在上面任意“涂鴉”。
Freeman也因為這項發(fā)明進入2009美國發(fā)明家名人堂。遺憾的是英年早逝的他沒能看到他所締造的FPGA帝國是多么的輝煌。
清華大學微電子研究所所長,中國半導體行業(yè)協會副理事長魏少軍先生曾用印一本書來區(qū)別芯片的設計、制造、封測過程:設計相當于作家寫了一本書,制造相當于印刷,封裝相當于裝訂。那么FPGA是什么?如果是一個專業(yè)從事FPGA工作的老攻城獅可能會告訴你,”Field Programmable Gate Array“,然后再補上一句”It can be anything you want“。網上也有很多通俗易懂的類比。例如把FPGA的開發(fā)看作是數字積木搭建,東南大學湯勇明老師就寫過一本《搭建你的數字積木——數字電路與邏輯設計》
一個個IP就像是一塊塊積木,通過調用IP"搭建"特定功能的電路,這個比喻來說明FPGA的開發(fā)再合適不過了。
也有人將FPGA比作是空白的大腦,大腦里面存在成千上萬的神經元細胞,但是神經元之間并沒有連接起來,也就還沒有大腦強大的功能,但是當工程師用Verilog或者vhdl來對FPGA進行布局布線之后,神經元就連接到了一起,大腦也就有了一些功能,給大腦輸入羊肉泡饃的畫面,會流口水之類的反應。這個比喻來形容FPGA的設計原理再合適不過了。
另外,還有人將FPGA中的一些組成部分和生物化學有機體類比。FPGA中最基本的單元——可編程邏輯單元(CLB),可以類比為有機體中的蛋白質分子,生物化學的角度上,蛋白質可以合成更高更復雜的器官,例如心,肝,胃,胳膊腿等,那么同樣CLB作為電子有機體中的蛋白質分子,當然就可以合成一個電子有機體(類比人)的各個模塊(器官),有的器官復雜,需要很多蛋白質分子分層次合成,那么同樣,有的電子系統(tǒng)的模塊的也極其復雜,需要CLB分層次合成。
那么蛋白質分子在合成各種不同的器官的時候,靠什么做指導嘞?人體內部有著極其龐大復雜的DNA序列,這個DNA序列記錄著人體的所有信息。在受精卵生成胚胎階段,其中的某一段序列指導胚胎的這一坨(也就是這一堆蛋白質分子)成為未來的手,另一端序列指導胚胎的另一堆蛋白質分子成為未來的胳膊。那么同樣,在FPGA中也會有等價于生物化學有機體中的DNA,就是bit_stream。bit_stream和DNA完全類似,就是一段序列,指導著若干CLB合成某一個執(zhí)行具體功能的模塊。
在有機體中還有脂肪的存在,脂肪的一大作用就是存儲能量,在FPGA中負責存儲的是BRAM,不同的是脂肪儲存的是能量,BRAM儲存的是數據。
FPGA中還有一個很重要的東西叫做DSP,即數字信號處理器,在人的大腦里面有一片腦回溝區(qū)域專門負責數學運算,兩者可以做一個類比。
生物體中還有一個十分重要的器官叫心臟,而FPGA中有一個東西叫時鐘,心臟控制脈搏,時鐘則負責整個系統(tǒng)的工作頻率。有了心臟,人類才得以正?;顒?,有了時鐘,系統(tǒng)才得以有條不紊的運行。
在FPGA的設計當中編寫的RTL代碼,通過軟件工具可以生成人類看不懂的bit_stream,也就是說工程師每天的工作都是在編寫FPGA的DNA,在生物學領域,我相信大多數的科學家畢生都在做著解讀‘人類天書’DNA的工作吧。這樣一一類比下來感覺FPGA的開發(fā)就像是在造人一樣,頓時感覺代碼都不枯燥了。
首款 FPGA,即賽靈思 XC2064,只包含 64 個邏輯模塊,每個模塊含有兩個 3 輸入查找表 (LUT) 和一個寄存器。按照現在的計算,該器件有 64 個邏輯單元——不足 1000 個邏輯門。盡管容量很小,XC2064 晶片的尺寸卻非常大,比當時的微處理器還要大;而且采用 2.5 微米工藝技術勉強能制造出這種器件。但隨著IC制造工藝的發(fā)展,FPGA也迅速發(fā)展,資源爆炸式增長,ZYNQ系列的Z-7100的邏輯單元已經到了444k。
與FPGA同為PLD的還有CPLD,CPLD(Complex Programmable Logic Device),復雜可編程邏輯器件。CPLD由可編程邏輯的功能圍繞一個可編程互連矩陣構成,由固定長度的金屬線實現邏輯單元之間的互連,并增加了I/O控制模塊的數量和功能。
CPLD的基本結構可看成由可編程邏輯陣列(LAB),可編程I/O控制模塊和可編程內部連線(PIA)等三部分組成。
可編程邏輯陣列(LAB):由若干個可編程邏輯宏單元(Logic Macro Cell,LMC)組成,LMC主要包括與陣列、或陣列、可編程觸發(fā)器和多路選擇器等電路,能獨立地配置為時序或組合工作方式。
FPGA由可編程邏輯塊(CLB),輸入/輸出模塊(IOB)及可編程互連資源(PIR)等三種可編程電路和一個SRAM結構的配置存儲單元組成。CLB是實現邏輯功能的基本單元,他們通常規(guī)則排列成一個陣列,散布于整個芯片中??删幊梯斎?輸出模塊(IOB)主要完成芯片上的邏輯與外部引腳的接口,它通常排列在芯片的四周。可編程互連資源(PIR)包括各種長度的連線線段和一些可編程鏈接開關,他們將各個CLB之間或CLB與IOB之間以及IOB之間連接起來,構成特定功能的電路。
CLB主要由邏輯函數發(fā)生器,觸發(fā)器,數據選擇器等電路組成。邏輯函數發(fā)生器主要由查找表(Look Up Table)構成。
查找表LUT實質上是一個RAM,當用戶描述了一個邏輯電路后,軟件會計算所有可能的結果,并寫入RAM。每一個信號進行邏輯運算,就等于輸入一個地址進行查表,找出地址對應的內容,輸出結果。這樣也大大加快了FPGA的運算速度。
FPGA和CPLD的區(qū)別主要有以下幾點:
(1) FPGA采用SRAM進行功能配置,可重復編程,但系統(tǒng)掉電后,SRAM中的數據丟失,因此,需要在FPGA外加EPROM,將配置數據寫入其中,系統(tǒng)每次上電自動將數據引入SRAM中。CPLD器件一般采用EEPROM存儲技術,可重復編程,并且系統(tǒng)掉電后,EEPROM中的數據不會丟失,適用于數據的保密。
(2)FPGA器件含有豐富的觸發(fā)器資源,易于實現時序邏輯,如果要求實現較復雜的組合電路,則需要幾個CLB結合起來實現。CPLD的與或陣列結構,更適用于實現大規(guī)模組合功能,但觸發(fā)器資源相對較少。
(3)FPGA是細顆粒度結構,CPLD是粗粒度結構。FPGA內部有豐富連線資源,CLB分塊較小,芯片利用率高。CPLD宏單元的與或陣列較大,通常不能完全被應用,且宏單元之間的主要通過高速數據通道連接,其容量有限,限制了器件的靈活布線,因此,CPLD利用率較FPGA器件低。
(4)FPGA為非連續(xù)式布線,CPLD為連續(xù)式布線。FPGA器件每次編程時實現的邏輯功能一樣,但走的路線不同,因此延時不易控制,即時序延遲不可預測。CPLD每次布線路徑一樣,消除了分段式互連結構在定時上的差異,并在邏輯單元之間提供快速且具有固定延時的通路,CPLD的延時小,且時序延遲可預測。CPLD比FPGA可工作在更高的頻率。
所以FPGA是什么?
Itcan beanything you want!
原文標題:FPGA掃盲文
文章出處:【微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
FPGA
+關注
關注
1629文章
21729瀏覽量
603048 -
賽靈思
+關注
關注
32文章
1794瀏覽量
131253
原文標題:FPGA掃盲文
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論