A. FPGA的開發流程
看你是用哪個公司的FPGA,目前流行的altera,xilinx,lattice三家,都有不同的IDE工具,而IDE工具中一般都是自己包括了所有必需用到的開發工具,只是有些不好用,就採用第三方的工具,比如模擬工具都喜歡用modelsim,而編譯工具和布線工具一般只能對應哪家選哪家,這樣能做到更優。燒錄工具也是各家對各家的。
B. fpga 編譯完成後就可以燒錄,為什麼還需要綜合
你是外行,老鐵!
FPGA流程:代碼編寫----FPGA代碼綜合(做語法檢查,將代碼轉換成門級電路網表)-----映射(或者叫適配,將通用門電路映射到相關器件的邏輯資源,例如查找表,RAM)-----布局布線(將FPGA映射結果,在FPGA內部擺出來)----生成配置文件(FPGA內部配置sram的初始值,配置查找表和其他邏輯資源,至於你不理解什麼叫配置sram值,請深入理解FPGA的構造,尤其是LUT的結構)。
C. 請問fpga是什麼
FPGA(Field-Programmable Gate Array),即現場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎上進一步發展的產物。它是作為專用集成電路(ASIC)領域中的一種半定製電路而出現的,既解決了定製電路的不足,又克服了原有可編程器件門電路數有限的缺點。
FPGA簡介
背景
目前以硬體描述語言(Verilog 或 VHDL)所完成的電路設計,可以經過簡 單的綜合與布局,快速的燒錄至 FPGA 上進行測試,是現代 IC 設計驗證的技術主流。這些可編輯元件可以被用來實現一些基本的邏輯門電路(比如AND、OR、XOR、NOT)或者更復雜一些的組合功能比如解碼器或數學方程式。在大多數的FPGA裡面,這些可編輯的元件里也包含記憶元件例如觸發器(Flip-flop)或者其他更加完整的記憶塊。
系統設計師可以根據需要通過可編輯的連接把FPGA內部的邏輯塊連接起來,就好像一個電路試驗板被放在了一個晶元里。一個出廠後的成品FPGA的邏輯塊和連接可以按照設計者而改變,所以FPGA可以完成所需要的邏輯功能。
FPGA一般來說比ASIC(專用集成晶元)的速度要慢,無法完成復雜的設計,而且消耗更多的電能。但是他們也有很多的優點比如可以快速成品,可以被修改來改正程序中的錯誤和更便宜的造價。廠商也可能會提供便宜的但是編輯能力差的FPGA。因為這些晶元有比較差的可編輯能力,所以這些設計的開發是在普通的FPGA上完成的,然後將設計轉移到一個類似於ASIC的晶元上。另外一種方法是用CPLD(復雜可編程邏輯器件備)。
CPLD與FPGA的關系
早在1980年代中期,FPGA已經在PLD設備中紮根。CPLD和FPGA包括了一些相對大數量的可編輯邏輯單元。CPLD邏輯門的密度在幾千到幾萬個邏輯單元之間,而FPGA通常是在幾萬到幾百萬。
CPLD和FPGA的主要區別是他們的系統結構。CPLD是一個有點限制性的結構。這個結構由一個或者多個可編輯的結果之和的邏輯組列和一些相對少量的鎖定的寄存器。這樣的結果是缺乏編輯靈活性,但是卻有可以預計的延遲時間和邏輯單元對連接單元高比率的優點。而FPGA卻是有很多的連接單元,這樣雖然讓它可以更加靈活的編輯,但是結構卻復雜的多。
CPLD和FPGA另外一個區別是大多數的FPGA含有高層次的內置模塊(比如加法器和乘法器)和內置的記憶體。因此一個有關的重要區別是很多新的FPGA支持完全的或者部分的系統內重新配置。允許他們的設計隨著系統升級或者動態重新配置而改變。一些FPGA可以讓設備的一部分重新編輯而其他部分繼續正常運行。
FPGA工作原理
FPGA採用了邏輯單元陣列LCA(Logic Cell Array)這樣一個概念,內部包括可配置邏輯模塊CLB(Configurable Logic Block)、輸出輸入模塊IOB(Input Output Block)和內部連線(Interconnect)三個部分。 現場可編程門陣列(FPGA)是可編程器件。與傳統邏輯電路和門陣列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的結構,FPGA利用小型查找表(16×1RAM)來實現組合邏輯,每個查找表連接到一個D觸發器的輸入端,觸發器再來驅動其他邏輯電路或驅動I/O,由此構成了既可實現組合邏輯功能又可實現時序邏輯功能的基本邏輯單元模塊,這些模塊間利用金屬連線互相連接或連接到I/O模塊。FPGA的邏輯是通過向內部靜態存儲單元載入編程數據來實現的,存儲在存儲器單元中的值決定了邏輯單元的邏輯功能以及各模塊之間或模塊與I/O間的聯接方式,並最終決定了FPGA所能實現的功能,FPGA允許無限次的編程.
CPLD(Complex Programmable Logic Device)復雜可編程邏輯器件,是從PAL和GAL器件發展出來的器件,相對而言規模大,結構復雜,屬於大規模集成電路范圍。是一種用戶根據各自需要而自行構造邏輯功能的數字集成電路。其基本設計方法是藉助集成開發軟體平台,用原理圖、硬體描述語言等方法,生成相應的目標文件,通過下載電纜(「在系統」編程)將代碼傳送到目標晶元中,實現設計的數字系統.
簡介
CPLD主要是由可編程邏輯宏單元(MC,Macro Cell)圍繞中心的可編程互連矩陣單元組成。其中MC結構較復雜,並具有復雜的I/O單元互連結構,可由用戶根據需要生成特定的電路結構,完成一定的功能。由於CPLD內部採用固定長度的金屬線進行各邏輯塊的互連,所以設計的邏輯電路具有時間可預測性,避免了分段式互連結構時序不完全預測的缺點。
發展歷史及應用領域
20世紀70年代,最早的可編程邏輯器件--PLD誕生了。其輸出結構是可編程的邏輯宏單元,因為它的硬體結構設計可由軟體完成(相當於房子蓋好後人工設計局部室內結構),因而它的設計比純硬體的數字電路具有很強的靈活性,但其過於簡單的結構也使它們只能實現規模較小的電路。為彌補PLD只能設計小規模電路這一缺陷,20世紀80年代中期,推出了復雜可編程邏輯器件--CPLD。目前應用已深入網路、儀器儀表、汽車電子、數控機床、航天測控設備等方面。
器件特點
它具有編程靈活、集成度高、設計開發周期短、適用范圍寬、開發工具先進、設計製造成本低、對設計者的硬體經驗要求低、標准產品無需測試、保密性強、價格大眾化等特點,可實現較大規模的電路設計,因此被廣泛應用於產品的原型設計和產品生產(一般在10,000件以下)之中。幾乎所有應用中小規模通用數字集成電路的場合均可應用CPLD器件。CPLD器件已成為電子產品不可缺少的組成部分,它的設計和應用成為電子工程師必備的一種技能。
如何使用
CPLD是一種用戶根據各自需要而自行構造邏輯功能的數字集成電路。其基本設計方法是藉助集成開發軟體平台,用原理圖、硬體描述語言等方法,生成相應的目標文件,通過下載電纜(「在系統」編程)將代碼傳送到目標晶元中,實現設計的數字系統。
這里以搶答器為例講一下它的設計(裝修)過程,即晶元的設計流程。CPLD的工作大部分是在電腦上完成的。打開集成開發軟體(Altera公司 Max+pluxII)→畫原理圖、寫硬體描述語言(VHDL,Verilog)→編譯→給出邏輯電路的輸入激勵信號,進行模擬,查看邏輯輸出結果是否正確→進行管腳輸入、輸出鎖定(7128的64個輸入、輸出管腳可根據需要設定)→生成代碼→通過下載電纜將代碼傳送並存儲在CPLD晶元中。7128這塊晶元各管腳已引出,將數碼管、搶答開關、指示燈、蜂鳴器通過導線分別接到晶元板上,通電測試,當搶答開關按下,對應位的指示燈應當亮,答對以後,裁判給加分後,看此時數碼顯示加分結果是否正確,如發現有問題,可重新修改原理圖或硬體描述語言,完善設計。設計好後,如批量生產,可直接復制其他CPLD晶元,即寫入代碼即可。如果要對晶元進行其它設計,比如進行交通燈設計,要重新畫原理圖、或寫硬體描述語言,重復以上工作過程,完成設計。這種修改設計相當於將房屋進行了重新裝修,這種裝修對CPLD來說可進行上萬次。
家庭成員:經過幾十年的發展,許多公司都開發出了CPLD可編程邏輯器件。比較典型的就是Altera、Lattice、Xilinx世界三大權威公司的產品,這里給出常用晶元: Altera EPM7128S(PLCC84)
Lattice LC4128V(TQFP100)
Xilinx XC95108 (PLCC84)
FPGA與CPLD的辨別和分類
FPGA與CPLD的辨別和分類主要是根據其結構特點和工作原理。通常的分類方法是:
將以乘積項結構方式構成邏輯行為的器件稱為CPLD,如Lattice的ispLSI系列、Xilinx的XC9500系列、Altera的MAX7000S系列和Lattice(原Vantis)的Mach系列等。
將以查表法結構方式構成邏輯行為的器件稱為FPGA,如Xilinx的SPARTAN系列、Altera的FLEX10K或ACEX1K系列等。
盡管FPGA和CPLD都是可編程ASIC器件,有很多共同特點,但由於CPLD和FPGA結構上的差異,具有各自的特點:
①CPLD更適合完成各種演算法和組合邏輯,FP GA更適合於完成時序邏輯。換句話說,FPGA更適合於觸發器豐富的結構,而CPLD更適合於觸發器有限而乘積項豐富的結構。
②CPLD的連續式布線結構決定了它的時序延遲是均勻的和可預測的,而FPGA的分段式布線結構決定了其延遲的不可預測性。
③在編程上FPGA比CPLD具有更大的靈活性。CPLD通過修改具有固定內連電路的邏輯功能來編程,FPGA主要通過改變內部連線的布線來編程;FP GA可在邏輯門下編程,而CPLD是在邏輯塊下編程。
④FPGA的集成度比CPLD高,具有更復雜的布線結構和邏輯實現。
⑤CPLD比FPGA使用起來更方便。CPLD的編程採用E2PROM或FASTFLASH技術,無需外部存儲器晶元,使用簡單。而FPGA的編程信息需存放在外部存儲器上,使用方法復雜。
⑥CPLD的速度比FPGA快,並且具有較大的時間可預測性。這是由於FPGA是門級編程,並且CLB之間採用分布式互聯,而CPLD是邏輯塊級編程,並且其邏輯塊之間的互聯是集總式的。
⑦在編程方式上,CPLD主要是基於E2PROM或FLASH存儲器編程,編程次數可達1萬次,優點是系統斷電時編程信息也不丟失。CPLD又可分為在編程器上編程和在系統編程兩類。FPGA大部分是基於SRAM編程,編程信息在系統斷電時丟失,每次上電時,需從器件外部將編程數據重新寫入SRAM中。其優點是可以編程任意次,可在工作中快速編程,從而實現板級和系統級的動態配置。
⑧CPLD保密性好,FPGA保密性差。
⑨一般情況下,CPLD的功耗要比FPGA大,且集成度越高越明顯。
D. FPGA關於編譯方面的問題
由於演算法是隨機的,因此一般來說,是不確定的。
當然,如果你使用了反標注,或者分區設計之類的用法,只要你的程序不發生改變,那麼它可以保留你上次編譯的結果不變,即使再編譯也不會發生改變。
我指的程序不變,是不要進行任何修改,你說的語句順序調換了,那麼也被認為是程序發生改變,自然編譯結果也可能不同。
E. 關於FPGA,它的什麼過程算是硬體啊
你還沒有入門吧??
推薦給你一本書《Altera FPGA/CPLD設計 基礎篇》,網上有PDF格式的,看看就知道了。
「什麼過程算是硬體啊??」這句話沒看懂,它的所有過程都是硬體,包括VHDL和Verilog HDL程序設計也是硬體范疇,一般稱之為編寫「邏輯」。
DSP和FPGA不同,它裡面的電路是定死的,不可改變。舉個例子假如說一款DSP集成AD功能,你絕對不可能通過改變程序把DSP的AD功能功能刪除掉。但FPGA不同,你可以用邏輯語言自己在其內部設計一個「純硬的單片機或DSP」,別且你還可以把他們刪除掉。
總的來說DSP和FPGA都是有門電路和一些附屬電路組成的,這是他們的共同點,不同的是DSP裡面的電路和一些附屬電路是不能夠重新組合的,軟體程序只能在其提供的硬體功能的基礎上進行軟體應用編程,超出范圍的則不能實現,而FPGA裡面的電路和一些附屬電路是可以通過VHDL和Verilog HDL這些硬體語言對其進行重新組合的,這就是硬體語言的強大,而DSP程序設計也是偏硬的軟體設計,因為它與VC++、C#和JAVA不同,它必須依賴硬體才能運行,現在也應該屬於硬體審計范疇,VC++、C#和JAVA則完全不依賴於硬體。
硬體的定義很簡單,看得見摸得著的都是硬體范疇,但現在的硬體范疇已經擴大了,比如包括VHDL和Verilog HDL這些硬體語言、底層驅動的編寫等等,並且逐漸和軟體的界限變得模糊。
F. 編寫了個FPGA程序,怎麼編譯
你沒有需要顯示的東東,如果有printf(".."),需在returnz;前面加上這一句「getchar();」就會顯示了,這是因為你都return了,屏幕不會一直保持!
G. 敘述EDA的FPGA/CPLD的設計流程
1)設計輸入(包括原理圖輸入和HDL文本編輯,EDA可以提供文本編輯工具)
2)綜合,將輸入的原理圖或者HDL文本根據硬體的約束條件進行編譯綜合,EDA工具提供了綜合器
3)適配,此過程EDA工具貌似沒什麼用
4)時序模擬與功能模擬,EDA工具提供模擬工具
5)編程下載,分不同的方式
6)硬體測試
H. 用FPGA開發一個電子系統需要哪些步驟
首先你要設計verilog或者VHDL文件,然後編譯,綜合,模擬,下載到晶元,大概就是這幾個步驟!
詳細的見下圖!
I. FPGA具體開發流程是怎樣的
1、 首先是根據你的系統要求和需要實現的功能進行器件選型;
2、 然後根據設計需求編寫RTL代碼;
3、 代碼完成後進行模擬,可以分功能模塊模擬,也可以整體模擬;
4、 模擬完成後根據硬體分布,進行管腳的綁定和約束;
5、 上板調試;
6、 如果調試過程中出現問題,可以用cs來協助找找問題。