當前位置:首頁 » 編程軟體 » fpga編程

fpga編程

發布時間: 2022-01-10 00:11:13

Ⅰ FPGA編程

今年電子大賽的時候做過一個,不過是基於XILINX公司的FPGA的,我給你介紹一下思路吧。

還有就是不知道你的信號發生器要求頻率和精度是多少

一般有兩種實現方式:一種是控制AD輸出模擬量,另一種是通過SPWM和低通整流而來

本程序是第二種

工作機理有兩部分組成:PWM的產生和表

產生部分由兩個寄存器和一個計數器組成,計數器不聽累加同時與兩個寄存器作比較,兩個寄存器一個控制置底一個控制拉高,一般把一個固定就行了(有的地方說是一個控制周期一個控制高電平時間,其實是一樣的)

表裡放的是一個正弦數組(產生正弦波),之後有一個寄存器控制讀取表的速度(間隔),把讀取出的表值存入上面那個沒固定的寄存器就行了

http://blog.sina.com.cn/s/blog_6e22b1da0100n52r.html

我的博客里有一篇關於SPWM模式的DDS的文章
你可以看一看
不懂得話可以給我留言

A/D轉換的方法要比SPWM的方法簡單,首先你要新建一個存儲空間,裡面存上A/D的電壓控制量的一維數組,數組中存在的數值對應的電壓從前到後呈正弦波形排列,每個周期從數組中每隔n個元素依次讀取數組付給A/D轉換器,這樣A/D就可以輸出正弦波了,而裡面的n步進是由一個寄存器控制的,n的大小決定了你的頻率。

至於你說的液晶顯示,按鍵等。我建議你用SOPC實現,Alter公司有Nois2的ip核。它相當於把FPGA當單片機用,你將液晶控制、按鍵控制、波形生成分別變成自定義IP核集成於系統,之後在頂層用c語言實現目的即可。

如果你不會HDL語言的話,必須先把它學了。如果你不了解SOPC的話,給你介紹一個很好的資料,估計你按這個一步一步來,1周就能學會。
http://wenku..com/view/dd7ade360b4c2e3f57276360.html

這是網路文庫的鏈接,一共是五章,你可以自己搜索。

今年的電子大賽FPGA組的比賽有不少省市都和你這道題有關,雖然是XILINX公司的,但是大同小異。

Ⅱ FPGA用什麼編程語言

用硬體描述語言,例如Verilog HDL或者VHDL,如果注重驗證的話,可以用SV(SystemVerilog)。

Ⅲ fpga開發的語言是什麼

fpga開發的語言是Verilog HDL。

Verilog HDL是一種硬體描述語言,以文本形式來描述數字系統硬體的結構和行為的語言,用它可以表示邏輯電路圖、邏輯表達式,還可以表示數字邏輯系統所完成的邏輯功能。

Verilog的設計初衷是成為一種基本語法與C語言相近的硬體描述語言。這是因為C語言在Verilog設計之初,已經在許多領域得到廣泛應用,C語言的許多語言要素已經被許多人習慣。一種與C語言相似的硬體描述語言,可以讓電路設計人員更容易學習和接受。

不過,Verilog與C語言還是存在許多差別。另外,作為一種與普通計算機編程語言不同的硬體描述語言,它還具有一些獨特的語言要素,例如向量形式的線網和寄存器、過程中的非阻塞賦值等。總的來說,具備C語言的設計人員將能夠很快掌握Verilog硬體描述語言。



(3)fpga編程擴展閱讀


FPGA具有可編程的延遲數字單元,在通信系統和各類電子設備中有著比較廣泛的應用,比如同步通信系統,時間數值化系統等,主要的設計方法包括數控延遲線法,存儲器法,計數器法等,其中存儲器法主要是利用 FPGA的RAM或者FIFO實現的。

利用 FPGA 對SD卡相關數據進行讀寫可以依據具體演算法的需求低FPGA晶元開展編程,更加實際情況的變化實現讀寫操作的不斷更新。這種模式之下只需要利用原有的晶元便可以實現對SD卡的有效控制,明顯降低了系統的成本。

通常情況下,通信行業綜合考慮成本以及運營等各方面的因素,在終端設備數量比較多的位置,FPGA的用量比較大,基站最適合使用FPGA,基站幾乎每一塊板子都需要使用FPGA晶元,而且型號比較高端,可以處理復雜的物理協議,實現邏輯控制。

同時,由於基站的邏輯鏈路層,物理層的協議部分需要定期更新,也比較適合採用FPGA技術。目前,FPGA主要在通信行業的建設初期和中期應用,後期逐步被ASIC替代。

Ⅳ FPGA編程開發工具有哪些

目前FPGA的生產廠家主要有ALTERA,Xilinx,Actel,Lattice。

FPGA開發板在基於MCU、定製ASIC和體積龐大的電線束來實現引擎及控制電子的系統方案已發展至接近其技術和應用極限,汽車工業正面臨新的設計挑戰。汽車電子設計人員通過使用具有擴展溫度范圍的FPGA技術,能夠顯著提高應對多種故障的能力。

雖然許多元件供應商採用預防性的設計技術及限定方法來模擬和模擬環境影響,但是某些FPGA構架在承受擴展溫度范圍方面仍然具有先天優勢。

Actel以反熔絲為基礎的汽車器件能承受業界最高的結點溫度。為設計人員的高可靠性系統帶來更大的性能冗餘。

Ⅳ FPGA編程軟體哪個好用

得看你用哪個公司的晶元了。

一般綜合工具都是根據自己公司的晶元進行了優化。

XILINX用ISE,Altera用Quartus II,這兩個是主流的,還有atmel等等,那些較少。

Ⅵ FPGA的編程語言跟C語言有什麼不同

學FPGA給我最大的體會就是它的編程語言是並行執行的,不像C語言那樣一行一行的執行。verilog裡面有個always語句,所有的always語句塊全部並發執行,而always語句塊內部是逐行執行的(前提是只是用阻塞賦值)。
verilog中沒有中斷的概念,而逐行執行指令的C語言卻離不開中斷。
學習verilog必須要掌握最基本的概念,像上面的阻塞賦值等等,新手都要經歷這一關的,呵呵。
還有,verilog是始終離不開硬體,c語言中可以不限制循環次數,而verilog就不行,因為每循環一次就會增加FPGA內部資源的佔用。
最後在說一點兒,verilog中有的語句不能被綜合(Oh,什麼是綜合?,網路吧),像定義浮點的float就不可以,在編程時慎用。
好啦就說這些吧。。

Ⅶ 關於FPGA晶元的編程工具(主流)

你說的是開發工具嗎?首先明確的一點上的是關於編程,fpga屬於硬體,用的是HDL語言,所以不能叫編程吧,那是軟體的叫法,應該叫寫代碼。主流的開發軟體看你用哪個公司的晶元,現在主流的是alter公司的晶元,則用quartus ii和xilinx公司的晶元,則用ise,涉及到更復雜的運用則需要安裝更多的配套軟體。有不懂的或者需要下載地址的可以追問我

Ⅷ 如果想做一個FPGA軟體開發工程師,碩士應該讀什麼專業呢

1、不熟悉FPGA的內部結構,不了解可編程邏輯器件的基本原理。
FPGA為什麼是可以編程的?恐怕很多菜鳥不知道,他們也不想知道。因為他們覺得這是無關緊要的。他們潛意識的認為可編程嘛,肯定就是像寫軟體一樣啦。軟體編程的思想根深蒂固,看到Verilog或者VHDL就像看到C語言或者其它軟體編程語言一樣。一條條的讀,一條條的分析。如果這些菜鳥們始終拒絕去了解為什麼FPGA是可以編程的,不去了解FPGA的內部結構,要想學會FPGA恐怕是天方夜譚。雖然現在EDA軟體已經非常先進,像寫軟體那樣照貓畫虎也能綜合出點東西,但也許只有天知道EDA軟體最後綜合出來的到底是什麼。也許點個燈,跑個馬還行。這樣就是為什麼很多菜鳥學了N久以後依然是一個菜鳥的原因。
那麼FPGA為什麼是可以「編程」的呢?首先來了解一下什麼叫「程」。啟示「程」只不過是一堆具有一定含義的01編碼而已。編程,其實就是編寫這些01編碼。只不過我們現在有了很多開發工具,通常都不是直接編寫這些01編碼,而是以高級語言的形式來編寫,最後由開發工具轉換為這種01編碼而已。對於軟體編程而言,處理器會有一個專門的解碼電路逐條把這些01編碼翻譯為各種控制信號,然後控制其內部的電路完成一個個的運算或者是其它操作。所以軟體是一條一條的讀,因為軟體的操作是一步一步完成的。
而FPGA得可編程,本質也是依靠這些01編碼實現其功能的改變,但不同的是FPGA之所以可以完成不同的功能,不是依靠像軟體那樣將01編碼翻譯出來再去控制一個運算電路,FPGA裡面沒有這些東西。FPGA內部主要三塊:可編程的邏輯單元、可編程的連線和可編程的IO模塊。可編程的邏輯單元是什麼?其基本結構某種存儲器(SRAM、FLASH等)製成的4輸入或6輸入1輸出地「真值表」加上一個D觸發器構成。任何一個4輸入1輸出組合邏輯電路,都有一張對應的「真值表」,同樣的如果用這么一個存儲器製成的4輸入1輸出地「真值表」,只需要修改其「真值表」內部值就可以等效出任意4輸入1輸出的組合邏輯。這些「真值表」內部值是什麼?就是那些01編碼而已。如果要實現時序邏輯電路怎麼辦?這不又D觸發器嘛,任何的時序邏輯都可以轉換為組合邏輯+D觸發器來完成。但這畢竟只實現了4輸入1輸出的邏輯電路而已,通常邏輯電路的規模那是相當的大哦。那怎麼辦呢?這個時候就需要用到可編程連線了。在這些連線上有很多用存儲器控制的鏈接點,通過改寫對應存儲器的值就可以確定哪些線是連上的而哪些線是斷開的。者就可以把很多可編程邏輯單元組合起來形成大型的邏輯電路。最後就是可編程的IO,這其實是FPGA作為晶元級使用必須要注意的。任何晶元都必然有輸入引腳和輸出引腳。有可編程的IO可以任意的定義某個非專用引腳(FPGA中有專門的非用戶可使用的測試、下載用引腳)為輸入還是輸出,還可以對IO的電平標准進行設置。
總歸一句話,FPGA之所以可編程是因為可以通過特殊的01代碼製作成一張張「真值表」,並將這些「真值表」組合起來以實現大規模的邏輯功能。不了解FPGA內部結構,就不能明白最終代碼如何變到FPGA裡面去的。也就無法深入的了解如何能夠充分運用FPGA。現在的FPGA,不單單是有前面講的那三塊,還有很多專用的硬體功能單元,如何利用好這些單元實現復雜的邏輯電路設計,是從菜鳥邁向高手的路上必須要克服的障礙。而這一切,還是必須先從了解FPGA內部邏輯及其工作原理做起。
2、錯誤理解HDL語言,怎麼看都看不出硬體結構。
HDL語言的英語全稱是:Hardware Description Language,注意這個單詞Description,而不是Design。老外為什麼要用Description這個詞而不是Design呢?因為HDL確實不是用用來設計硬體的,而僅僅是用來描述硬體的。描述這個詞精確地反映了HDL語言的本質,HDL語言不過是已知硬體電路的文本表現形式而已,只是將以後的電路用文本的形式描述出來而已。而在編寫語言之前,硬體電路應該已經被設計出來了。語言只不過是將這種設計轉化為文字表達形式而已。但是很多人就不理解了,既然硬體都已經被設計出來了,直接拿去製作部就完了,為什麼還要轉化為文字表達形式再通過EDA工具這些麻煩的流程呢?其實這就是很多菜鳥沒有了解設計的抽象層次的問題,任何設計包括什麼服裝、機械、廣告設計都有一個抽象層次的問題。就拿廣告設計來說吧,最初的設計也許就是一個概念,設計出這個概念也是就是一個點子而已,離最終拍成廣告還差得很遠。
硬體設計也是有不同的抽象層次,沒一個層次都需要設計。最高的抽象層次為演算法級、然後依次是體系結構級、寄存器傳輸級、門級、物理版圖級。使用HDL的好處在於我們已經設計好了一個寄存器傳輸級的電路,那麼用HDL描述以後轉化為文本的形式,剩下的向更低層次的轉換就可以讓EDA工具去做了,者就大大的降低了工作量。這就是可綜合的概念,也就是說在對這一抽象層次上硬體單元進行描述可以被EDA工具理解並轉化為底層的門級電路或其他結構的電路。在FPGA設計中,就是在將這以抽象層級的意見描述成HDL語言,就可以通過FPGA開發軟體轉化為問題1中所述的FPGA內部邏輯功能實現形式。HDL也可以描述更高的抽象層級如演算法級或者是體系結構級,但目前受限於EDA軟體的發展,EDA軟體還無法理解這么高的抽象層次,所以HDL描述這樣抽象層級是無法被轉化為較低的抽象層級的,這也就是所謂的不可綜合。
所以在閱讀或編寫HDL語言,尤其是可綜合的HDL,不應該看到的是語言本身,而是要看到語言背後所對應的硬體電路結構。如果看到的HDL始終是一條條的代碼,那麼這種人永遠擺脫不了菜鳥的宿命。假如哪一天看到的代碼不再是一行行的代碼而是一塊一塊的硬體模塊,那麼恭喜脫離了菜鳥的級別,進入不那麼菜的鳥級別。
3、FPGA本身不算什麼,一切皆在FPGA之外
這一點恐怕也是很多學FPGA的菜鳥最難理解的地方。FPGA是給誰用的?很多學校解釋為給學微電子專業或者集成電路設計專業的學生用的,其實這不過是很多學校受資金限制,賣不起專業的集成電路設計工具而用FPGA工具替代而已。其實FPGA是給設計電子系統的工程師使用的。這些工程師通常是使用已有的晶元搭配在一起完成一個電子設備,如基站、機頂盒、視頻監控設備等。當現有晶元無法滿足系統的需求時,就需要用FPGA來快速的定義一個能用的晶元。前面說了,FPGA裡面無法就是一些「真值表」、觸發器、各種連線以及一些硬體資源,電子系統工程師使用FPGA進行設計時無非就是考慮如何將這些以後資源組合起來實現一定的邏輯功能而已,而不必像IC設計工程師那樣一直要關注到最後晶元是不是能夠被製造出來。本質上和利用現有晶元組合成不同的電子系統沒有區別,只是需要關注更底層的資源而已。
要想把FPGA用起來還是簡單的,因為無法就是那些資源,在理解了前面兩點再搞個實驗板,跑跑實驗,做點簡單的東西是可以的。而真正要把FPGA用好,那光懂點FPGA知識就遠遠不夠了。因為最終要讓FPGA裡面的資源如何組合,實現何種功能才能滿足系統的需要,那就需要懂得更多更廣泛的知識。
目前FPGA的應用主要是三個方向:第一個方向,也是傳統方向主要用於通信設備的高速介面電路設計,這一方向主要是用FPGA處理高速介面的協議,並完成高速的數據收發和交換。這類應用通常要求採用具備高速收發介面的FPGA,同時要求設計者懂得高速介面電路設計和高速數字電路板級設計,具備EMC/EMI設計知識,以及較好的模擬電路基礎,需要解決在高速收發過程中產生的信號完整性問題。FPGA最初以及到目前最廣的應用就是在通信領域,一方面通信領域需要高速的通信協議處理方式,另一方面通信協議隨時在修改,非常不適合做成專門的晶元。因此能夠靈活改變功能的FPGA就成為首選。到目前為止FPGA的一半以上的應用也是在通信行業。
第二個方向,可以稱為數字信號處理方向或者數學計算方向,因為很大程度上這一方向已經大大超出了信號處理的范疇。例如早就在2006年就聽說老美將FPGA用於金融數據分析,後來又見到有將FPGA用於醫學數據分析的案例。在這一方向要求FPGA設計者有一定的數學功底,能夠理解並改進較為復雜的數學演算法,並利用FPGA內部的各種資源使之能夠變為實際的運算電路。目前真正投入實用的還是在通信領域的無線信號處理、信道編解碼以及圖像信號處理等領域,其它領域的研究正在開展中,之所以沒有大量實用的主要原因還是因為學金融的、學醫學的不了解這玩意。不過最近發現歐美有很多電子工程、計算機類的博士轉入到金融行業,開展金融信號處理,相信隨著轉入的人增加,FPGA在其它領域的數學計算功能會更好的發揮出來,而我也有意做一些這些方面的研究。不過國內學金融的、學醫的恐怕連數學都很少用到,就不用說用FPGA來幫助他們完成數學運算了,這個問題只有再議了。
第三個方向就是所謂的SOPC方向,其實嚴格意義上來說這個已經在FPGA設計的范疇之內,只不過是利用FPGA這個平台搭建的一個嵌入式系統的底層硬體環境,然後設計者主要是在上面進行嵌入式軟體開發而已。設計對於FPGA本身的設計時相當少的。但如果涉及到需要在FPGA做專門的演算法加速,實際上需要用到第二個方向的知識,而如果需要設計專用的介面電路則需要用到第一個方向的知識。就目前SOPC方向發展其實遠不如第一和第二個方向,其主要原因是因為SOPC以FPGA為主,或者是在FPGA內部的資源實現一個「軟」的處理器,或者是在FPGA內部嵌入一個處理器核。但大多數的嵌入式設計卻是以軟體為核心,以現有的硬體發展情況來看,多數情況下的介面都已經標准化,並不需要那麼大的FPGA邏輯資源去設計太過復雜的介面。而且就目前看來SOPC相關的開發工具還非常的不完善,以ARM為代表的各類嵌入式處理器開發工具卻早已深入人心,大多數以ARM為核心的SOC晶元提供了大多數標準的介面,大量成系列的單片機/嵌入式處理器提供了相關行業所需要的硬體加速電路,需要專門定製硬體場合確實很少。通常是在一些特種行業才會在這方面有非常迫切的需求。即使目前Xilinx將ARM的硬核加入到FPGA裡面,相信目前的情況不會有太大改觀,不要忘了很多老掉牙的8位單片機還在嵌入式領域混呢,嵌入式主要不是靠硬體的差異而更多的是靠軟體的差異來體現價值的。我曾經看好的是cypress的Psoc這一想法。和SOPC系列不同,Psoc的思想史載SOC晶元裡面去嵌入那麼一小塊FPGA,那這樣其實可以滿足嵌入式的那些微小的硬體介面差異,比如某個運用需要4個USB,而通常的處理器不會提供那麼多,就可以用這么一塊FPGA來提供多的USB介面。而另一種運用需要6個UART,也可以用同樣的方法完成。對於嵌入式設計公司來說他們只需要備貨一種晶元,就可以滿足這些設計中各種微小的差異變化。其主要的差異化仍然是通過軟體來完成。但目前cypress過於封閉,如果其採用ARM作為處理器內核,藉助其完整的工具鏈。同時開放IP合作,讓大量的第三方為它提供IP設計,其實是很有希望的。但目前cypress的日子怕不太好過,Psoc的思想也不知道何時能夠發光。

Ⅸ FPGA為什麼能實現可編程 急在線等

FPGA採用了邏輯單元陣列LCA(Logic Cell Array)這樣一個概念,內部包括可配置邏輯模塊CLB(Configurable Logic Block)、輸出輸入模塊IOB(Input Output Block)和內部連線(Interconnect)三個部分。CLB包含一個可配置開關矩陣,此矩陣有選型電路(多路復用器),觸發器和4活6個輸入組成。在Xilinx公司的FPGA器件中,CLB由多個(一般為4個或2個)相同的slice和附加邏輯構成。每個CLB模塊不僅可以用於實現組合邏輯和時序邏輯,還可以配置為分布式RAM和分布式ROM. 通過(vhdl verilog)程序的編譯綜合下載到fpga板子上,實現你需要的clb ibo interconnect 的配置。這就是fpga可編程的解釋

Ⅹ C程序和FPGA程序

C語言是目前世界上流行、使用最廣泛的面向過程的高級程序設計語言。 C語言對操作系統和系統使用程序以及需要對硬體進行操作的場合,用C語言明顯優於其它高級語言,許多大型應用軟體都是用C語言編寫的。
C語言一共只有32個關鍵字,9種控制語句,程序書寫自由,主要用小寫字母表示。它把高級語言的基本結構和語句與低級語言的實用性結合起來。 C 語言可以象匯編語言一樣對位、位元組和地址進行操作, 而這三者是計算機最基本的工作單元。

運算符豐富
C的運算符包含的范圍很廣泛,共有種34個運算符。C語言把括弧、賦值、強制類型轉換等都作為運算符處理。從而使C的運算類型極其豐富表達式類型多樣化,靈活使用各種運算符可以實現在其它高級語言中難以實現的運算。

數據結構豐富
C的數據類型有:整型、實型、字元型、數組類型、指針類型、結構體類型、共用體類型等。能用來實現各種復雜的數據類型的運算。並引入了指針概念,使程序效率更高。另外C語言具有強大的圖形功能, 支持多種顯示器和驅動器。且計算功能、邏輯判斷功能強大。

FPGA(Field-Programmable Gate Array),即現場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎上進一步發展的產物。它是作為專用集成電路(ASIC)領域中的一種半定製電路而出現的,既解決了定製電路的不足,又克服了原有可編程器件門電路數有限的缺點。
以硬體描述語言(Verilog或VHDL)所完成的電路設計,可以經過簡單的綜合與布局,快速的燒錄至 FPGA 上進行測試,是現代 IC設計驗證的技術主流。這些可編輯元件可以被用來實現一些基本的邏輯門電路(比如AND、OR、XOR、NOT)或者更復雜一些的組合功能比如解碼器或數學方程式。在大多數的FPGA裡面,這些可編輯的元件里也包含記憶元件例如觸發器(Flip-flop)或者其他更加完整的記憶塊。
系統設計師可以根據需要通過可編輯的連接把FPGA內部的邏輯塊連接起來,就好像一個電路試驗板被放在了一個晶元里。一個出廠後的成品FPGA的邏輯塊和連接可以按照設計者而改變,所以FPGA可以完成所需要的邏輯功能。
FPGA一般來說比ASIC(專用集成電路)的速度要慢,實現同樣的功能比ASIC電路面積要大。但是他們也有很多的優點比如可以快速成品,可以被修改來改正程序中的錯誤和更便宜的造價。廠商也可能會提供便宜的但是編輯能力差的FPGA。因為這些晶元有比較差的可編輯能力,所以這些設計的開發是在普通的FPGA上完成的,然後將設計轉移到一個類似於ASIC的晶元上。另外一種方法是用CPLD(Complex Programmable Logic Device,復雜可編程邏輯器件)。

熱點內容
java配置mysql 發布:2024-09-20 21:32:44 瀏覽:757
phpapache偽靜態 發布:2024-09-20 20:54:45 瀏覽:588
新浪雲緩存 發布:2024-09-20 20:53:45 瀏覽:286
怎麼上傳學歷 發布:2024-09-20 20:53:42 瀏覽:848
華為至尊平板電腦是什麼配置 發布:2024-09-20 20:47:47 瀏覽:293
shell腳本字元串查找 發布:2024-09-20 20:47:44 瀏覽:274
如何在伺服器上搭建linux系統 發布:2024-09-20 20:43:32 瀏覽:386
上傳汽車保單 發布:2024-09-20 20:30:46 瀏覽:436
櫻花伺服器測試ip 發布:2024-09-20 20:10:39 瀏覽:280
爐石傳說安卓怎麼玩 發布:2024-09-20 20:09:59 瀏覽:313