A. 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公司的,但是大同小異。
B. 如何學習FPGA
第一步:學習了解FPGA結構,FPGA到底是什麼東西,晶元裡面有什麼,不要開始就拿個開發板照著別人的東西去編程。很多開發板的程序寫的很爛,我也做過一段時間的開發板設計,我覺得很大程度上,開發板在誤人子弟。不過原廠提供的正品開發板,代碼很優秀的,可以借鑒。只有了解了FPGA內部的結構才能明白為什麼寫Verilog和寫C整體思路是不一樣的。
第二步:掌握FPGA設計的流程。了解每一步在做什麼,為什麼要那麼做。很多人都是不就是那幾步嗎,有什麼奇怪的?呵呵,我想至少有一半以上的人不知道synthesize和traslate的區別吧。
了解了FPGA的結構和設計流程才有可能知道怎麼去優化設計,提高速度,減少資源,不要急躁,不要去在為選擇什麼語言和選擇哪個公司的晶元上下功夫。語言只是一個表達的方式,重要的是你的思維,沒有一個好的指導思想,語言用得再好,不過是個懂語言的人。
第三步:開始學習代碼了。我建議要學代碼的人都去Altera或Xilinx的網站上下原廠工程師的代碼學習。不要一開始就走入誤區。
C. FPGA怎麼開始學
學習步驟:
1,計算機必不可少。可以選擇安裝quartusII或者ISE軟體。這是必備的軟體環境。
2、熟悉verilog語言或者vhdl語言 ,熟練使用quartusII或者ISE軟體。
3、設計一個小代碼,下載到目標板看看結果。
4、設計稍微復雜的代碼,下載到目標板看看結果。
5、設計復雜的代碼,下載到目標板看看結果。
6、設計高速介面,譬如ddr2或者高速串列介面
7、設計一個復雜的協議,譬如USB、PCIexpress、圖像編解碼等。
8、學習再學習,知道「學無止境,山外有山」。
注意事項:第一步:學習了解FPGA結構,FPGA到底是什麼東西,晶元裡面有什麼,不要開始就拿個開發板照著別人的東西去編程。
第二步:掌握FPGA設計的流程。了解每一步在做什麼,為什麼要那麼做。
第三步:開始學習代碼了。不要一開始就走入誤區。
第四步:template很重要。能不能高效利用FPGA資源,一是了解fpga結構,二是了解欲實現的邏輯功能和基本機構,三是使用正確的模板。
總結:理解時序,邏輯是一拍一拍的東西,在設計初期想的不是很清楚的時候可以畫畫時序圖,這樣思路會更加的清晰,還有就是模擬很重要,不要寫完程序就去往FPGA中去載入,首先要模擬,尤其是對比較大型一點的程序,想像自己是在做asic,是沒有二次機會的,所以一定要把模擬做好。
D. 請教下FPGA完整設計流程
1、設計輸入
1)設計的行為或結構描述。
2)典型文本輸入工具有UltraEdit-32和Editplus.exe.。
3)典型圖形化輸入工具-Mentor的Renoir。
4)我認為UltraEdit-32最佳。
2、代碼調試
1)對設計輸入的文件做代碼調試,語法檢查。
2)典型工具為Debussy。
3、前模擬
1)功能模擬
2)驗證邏輯模型(沒有使用時間延遲)。
3)典型工具有Mentor公司的ModelSim、Synopsys公司的VCS和VSS、Aldec公司的Active、 Cadense公司的 NC。
4)我認為做功能模擬Synopsys公司的VCS和VSS速度最快,並且調試器最好用,Mentor公司的ModelSim對於讀寫文件速度最快,波形窗口比較好用。
4、綜合
1)把設計翻譯成原始的目標工藝
2)最優化
3)合適的面積要求和性能要求
4)典型工具有Mentor公司的LeonardoSpectrum、Synopsys公司的DC、Synplicity公司的 Synplify。
5)推薦初學者使用Mentor公司的LeonardoSpectrum,由於它在只作簡單約束綜合後的速度和面積最優,如果你對綜合工具比較了解,可以使用Synplicity公司的Synplify。
5、布局和布線
1)映射設計到目標工藝里指定位置
2)指定的布線資源應被使用
3)由於PLD市場目前只剩下Altera,Xilinx,Lattice,Actel,QuickLogic,Atmel六家公司,其中前5家為專業PLD公司,並且前3家幾乎佔有了90%的市場份額,而我們一般使用A ltera,Xilinx公司的PLD居多,所以典型布局和布線的工具為Altera公司的Quartus II和 Maxplus II、Xilinx公司的ISE和Foudation。
4)Maxplus II和Foudation分別為Altera公司和Xilinx公司的第一代產品,所以布局布線一般使用Quartus II和ISE。
6、後模擬
1)時序模擬
2)驗證設計一旦編程或配置將能在目標工藝里工作(使用時間延遲)。
3)所用工具同前模擬所用軟體。
7、時序分析
1)一般藉助布局布線工具自帶的時序分析工具,也可以使用Synopsys公司的 PrimeTime軟 件 和Mentor Graphics公司的Tau timing analysis軟體。
8、驗證合乎性能規范
1)驗證合乎性能規范,如果不滿足,回到第一步。
9、版圖設計
1)驗證版版圖設計。
2)在板編程和測試器件
E. 敘述EDA的FPGA/CPLD的設計流程
1.設計輸入(包括原理圖輸入和HDL文本編輯,EDA可以提供文本編輯工具)
2.綜合,將輸入的原理圖或者HDL文本根據硬體的約束條件進行編譯綜合,EDA工具提供了綜合器
3.適配,此過程ED
4.時序模擬與功能模擬,EDA工具提供模擬工具
5.編程下載,分不同的方式
6.硬體測試A工具貌似沒什麼用
F. fpga開發設計的一般流程
1.電路功能設計
在系統設計之前,首先要進行的是方案論證、系統設計和FPGA晶元選擇等准備工作。系統工程師根據任務要求,如系統的指標和復雜度,對工作速度和晶元本身的各種資源、成本等方面進行權衡,選擇合理的設計方案和合適的器件類型。一般都採用自頂向下的設計方法,把系統分成若干個基本單元,然後再把每個基本單元劃分為下一層次的基本單元,一直這樣做下去,直到可以直接使用EDA元件庫為止。
2.設計輸入
設計輸入是將所設計的系統或電路以開發軟體要求的某種形式表示出來,並輸入給EDA工具的過程。常用的方法有硬體描述語言(HDL)和原理圖輸入方法等。原理圖輸入方式是一種最直接的描述方式,在可編程晶元發展的早期應用比較廣泛,它將所需的器件從元件庫中調出來,畫出原理圖
G. fpga使用過程是怎樣的
FPGA你可以當做一個白紙,是個含有好多門電路的可編程晶元,你把你想實現的功能系統用verilog語言實現程序,下載FPGA晶元中將門電路按照你的設計編程,下載完成之後就可以按照你的設計工作了
H. 簡述基於eda軟體的fpga/cpld設計流程主要包括哪幾個步驟
1、功能定義/器件選型
一般都採用自頂向下的設計方法,把系統分成若干個基本單元,然後再把每個基本單元劃分為下一層次的基本單元,一直這樣做下去,直到可以直接使用EDA元件庫為止。
2、設計輸入
設計輸入是將所設計的系統或電路以開發軟體要求的某種形式表示出來,並輸入給EDA工具的過程。常用的方法有硬體描述語言(HDL)和原理圖輸入方法等。原理圖輸入方式是一種最直接的描述方式,在可編程晶元發展的早期應用比較廣泛,它將所需的器件從元件庫中調出來,畫出原理圖。
3、功能模擬
功能模擬也稱為前模擬是在編譯之前對用戶所設計的電路進行邏輯功能驗證,此時的模擬沒有延遲信息,僅對初步的功能進行檢測。
4、綜合優化
所謂綜合就是將較高級抽象層次的描述轉化成較低層次的描述。綜合優化根據目標與要求優化所生成的邏輯連接,使層次設計平面化,供FPGA布局布線軟體進行實現。
5、綜合後模擬
綜合後模擬檢查綜合結果是否和原設計一致。在模擬時,把綜合生成的標准延時文件反標注到綜合模擬模型中去,可估計門延時帶來的影響。但這一步驟不能估計線延時,因此和布線後的實際情況還有一定的差距,並不十分准確。
6、實現與布局布線
布局布線可理解為利用實現工具把邏輯映射到目標器件結構的資源中,決定邏輯的最佳布局,選擇邏輯與輸入輸出功能鏈接的布線通道進行連線,並產生相應文件(如配置文件與相關報告),實現是將綜合生成的邏輯網表配置到具體的FPGA晶元上,布局布線是其中最重要的過程。
7、時序模擬
時序模擬,也稱為後模擬,是指將布局布線的延時信息反標注到設計網表中來檢測有無時序違規(即不滿足時序約束條件或器件固有的時序規則,如建立時間、保持時間等)現象。時序模擬包含的延遲信息最全,也最精確,能較好地反映晶元的實際工作情況。
8、板級模擬與驗證
板級模擬主要應用於高速電路設計中,對高速系統的信號完整性、電磁干擾等特徵進行分析,一般都以第三方工具進行模擬和驗證。
9、晶元編程與調試
設計的最後一步就是晶元編程與調試。晶元編程是指產生使用的數據文件(位數據流文件,Bitstream Generation),然後將編程數據下載到FPGA晶元中。其中,晶元編程需要滿足一定的條件,如編程電壓、編程時序和編程演算法等方面。
I. fpga和asic開發流程的區別
1、FPGA——現場可編程門陣列
FPGA(Field-ProgrammableGateArray),即現場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎上進一步發展的產物。它是作為專用集成電路(ASIC)領域中的一種半定製電路而出現的,既解決了定製電路的不足,又克服了原有可編程器件門電路數有限的缺點。
ASIC具有高性能、低功耗的優勢,但它們包含的任何演算法——除了那些在軟體內部處理器內核執行的——其餘都是「凍結的」。所以這個時候我們就需要現場可編程門陣列(FPGA)了。早期的FPGA器件的架構相對簡單——只是一系列通過可編程互連的可編程模塊。
J. 基於fpga/cpld的數字系統設計流程包括哪些步驟
EDA技術的設計流程:
1、設計輸入
用一定的邏輯表達手段表達出來。
2、邏輯綜合
將用一定的邏輯表達手段表達出來的設計經過一系列的操作,分解成一系列的邏輯電路及對應關系(電路分解)。
3、目標器件的適配
在選用的目標器件中建立這些基本邏輯電路的對應關系(邏輯實現)。
4、目標器件的編程/下載
將前面的軟體設計經過編程變成具體的設計系統(物理實現)。
5、模擬/硬體測試
驗證所設計的系統是否符合要求。同時,再設計過程中要進行有關「模擬」,即模擬有關設計結果,驗證是否與設計構想相符。
(10)fpga編程流程擴展閱讀:
基於fpga/cpld數字系統的設計規則:
1、分割准則
(1)、分割後最底層的邏輯塊應適合用邏輯語言進行表達。
(2)、相似的功能應該設計成共享的基本模塊。
(3)、介面信號盡可能少。
(4)、同層次的模塊之間,在資源和i/o分配上,盡可能平衡,以便結構勻稱。模快的劃分和設計,盡可能做到通用性好,易於移植。
2、系統設計的可測性
具有系統的關鍵點信號,如時鍾、同步信號和狀態等信號;具有代表性的節點和線路上的信號等。
3、系統設計的重用性
(1)、設計者應該盡可能採用同步電路進行設計,系統中應該有時鍾和復位信號。
(2)、fpga/cpld的結構可以提供一定數量的片上存儲器塊。
(3)、復雜、系統級晶元需要各種標準的i/o介面。
(4)、編碼是數字系統設計者應該給予足夠重視的一項工作。
4、最優化設計
由於可編程器件的邏輯資源、連接資源和i/o資源有限,器件的速度和性能也是有限的,用器件設計系統的過程相當於求最優解的過程。
5、可靠性設計