1. 學習FPGA請推薦書籍
在學習一門技術之前我們往往從它的編程語言開始,如同學習單片機一樣,我們從C語言開始入門,當掌握了C語言之後,開發單片機應用程序也就不是什麼難事了。學習FPGA也是如此,FPGA的編程語言有兩種:VHDL和Verilog,這兩種語言都適合用於FPGA的編程,VHDL是由美國軍方組織開發的,在1987年就成為了IEEE的標准;而Verilog則是由一家明間企業的私有財產轉移過來的,由於其優越性特別突出,於是在1995年也成為了 IEEE標准。VHDL在歐洲的應用較為廣泛,而Verilog在中國、美國、日本、台灣等地應用較為廣泛,作者比較推崇是Verilog,因為它非常易於學習,很類似於C語言,如果具有C語言基礎的人,只需要花很少的時間便能迅速掌握Verilog,而VHDL則較為抽象,學習的時間較長。
作為在校大學生,學習Verilog的最好時期是在大學二年級開設《電子技術基礎(數字部分)》時同步學習,不僅能夠理解數字電路實現的方式,更能通過FPGA將數字電路得以實現。作者發現華中科技大學康華光教授主編的《電子技術基礎(數字部分)》非常好,可以說是一本與時俱進的教材,在本書的第二章最後一節專門介紹了Verilog語言與FPGA,並且在每一章的最後一節都介紹了如何使用Verilog建模實現相關數字電路的內容,因此本書非常適合大二學習FPGA的學生參考。本書是以《電子技術基礎(數字部分)》為背景,並與該書同步配套學習FPGA,並在它的基礎上作了改進,源於它而又高於它。
大三、大四的學生還可以進一步強化學習Verilog,建議以北京航天航空大學出版社出版的由夏宇聞教授編寫的《Verilog數字系統設計教程(第二版)》作為藍本,本書比較全面地、詳細地介紹了Verilog的基本語法。如果是其他初學者,可以直接藉助《Verilog數字系統設計教程(第二版)》和本書即能全面掌握Verilog的語法,這是學習FPGA的第一步,也是必不可少的一步。
2. 你有《FPGA與sopc-DE2設計教程>發給我下
到xilinx網站下啊,
3. 用FPGA做陀螺的信號採集,SOPC中用的是SPI匯流排,在Nios II中程序怎麼寫
void init_spi(void)
{
IOWR_32DIRECT(SPI_BASE,12,0xc0);//bit6 bit7 置1使能發送接收等待標志
IOWR_32DIRECT(SPI_BASE,8,0x60);//bit5 傳輸移位寄存器空標志 bit6 發送等待
}
alt_u8 spi_process(alt_u8 txdata)
{
alt_u8 rxdata;
alt_u32 spi_status_reg;
//發送數據
do{
spi_status_reg = IORD_32DIRECT(SPI_BASE,8);
}while((spi_status_reg & 0x40) != 0x40);
IOWR_32DIRECT(SPI_BASE,4,txdata);
//接收數據
do{
spi_status_reg = IORD_32DIRECT(SPI_BASE,8);
}while((spi_status_reg & 0x80) != 0x80);
rxdata = IORD_32DIRECT(SPI_BASE,0);
return rxdata;}
有這兩個基本函數就可以通訊了,剩下的就要看你的陀螺儀的手冊進行配置...
4. FPGA設計的核心是什麼,應該如何學好呢
首先是數字電路,可以參考國外的verilog與數字邏輯基礎(前提是懂一點c語言),再是專注下verilog,可以看夏宇聞的verilog數字系統設計教程,最後建議最好買一個開發板,這樣可以獲得很多相關開發的資料和很多有用的軟體,不過如果你懂單片機的話,入手還是蠻快的,深入下去其實才是最難得。這樣軟體操作和做些試驗後基本可以算入門了。接著就是看自己如何選擇向哪一方面精了,可以ic的可以嵌入式sopc的,覺得你還是看看夏宇聞的那本高級實驗教程。
當然還有很多講VHDL語言的,總的來說Verilog是發展趨勢,標准也在不斷的更新,生命力應該更強點。最後提醒下,學習的時候其實比較好的就兩家公司的,你可以自己需要選擇下,學好了一個在學另一個還是不難的。
總的來說,FPGA要求的知識很多的,尤其是你的數字電路,語言編程,到後面還有本身硬體知識的局限,硬體系統包括外圍電路等等諸多的知識,不可急於求成,慢慢積累學好基礎知識對於學習FPGA很有幫助的。
5. DE-10 Standard HPS SOC和FPGA聯合使用常式
在開始本教程之前,請注意演示項目准備需要以下內容:
在Intel SoC FPGA中,HPS邏輯與FPGA結構通過AXI(Advanced eXtensible Interface)橋進行連接。為了實現HPS邏輯與FPGA 結構的通信,需要通過使用Intel系統集成工具Qsys添加HPS組件來進行系統設計。從HPS組件的AXI主埠,HPS可以訪問那些連接到AXI主埠的內存映射從埠。
HPS包含以下HPS-FPGA AXI橋
下圖顯示了FPGA結構和L3與HPS互連的AXI橋的框圖。每個主(M)介面和從(S)介面顯示其數據寬度。括弧中標注了每個互連的時鍾域。
HPS-to-FPGA橋由3級(L3)主開關控制,輕量級控制HPS-to-FPGA橋由L3從外圍從開關控制。
FPGA-to-HPS橋接控制L3主開關,允許任何在FPGA結構的主實現(implemented)去訪問在HPS中大多數從實現。
所有三個橋都包含全局程序員視圖GPV寄存器。GPV寄存器控制網橋的行為。通過輕量級的HPS-to-FPGA橋訪問可以所有三個橋的GPV寄存器。
這個常式向用戶介紹了如何使用HPS/ARM與FPGA進行通信。這個與DE10-Standard板上ARM C程序配套的GHRD工程,演示了HPS/ARM程序如何控制連接到FPGA部分的紅色LED。
術語GHRD是黃金硬體參考設計(Golden Hardware Reference Design)的簡稱。友晶科技為DE10-Standard開發板提供的GRD項目位於CD文件夾中: CD-ROMDemonstrationSOC_FPGA DE10_Standard_GHRD。
本項目由以下組成部分組成:
MPU所看到的SoC FPGA部分的系統外圍設備的內存映射從輕量級的HPS-to-FPGA到FPGA的基礎地址0xFF20_0000開始。MPU可以通過Qsys中的地址偏移來訪問這些外圍設備。用戶可以打開GHRD項目與Quartus II軟體。然後打開soc_system。qsys文件與qsys工具。下圖列出了連接到輕量級HPS-to-FPGA的外圍設備的地址映射。
這些外設的所有Avalon引出信號( Avalon Conit signals)都連接到DE10-Standard板上SoC FPGA的I/O引腳,如圖所示
在實際的應用過程中,友晶科技提供的DE10_Standard_GHRD工程並不是十分契合我們的開發需要,這可能包括外圍設備的冗餘和不足。下面為了實現本教程開篇所定的目標,我們需要根據DE10_Standard_GHRD工程進行修改。其中友晶科技提供的DE10_Standard_GHRD工程實現的是LEDR0通過閃爍模擬板子的心跳, LEDR1-9 按照一定頻率進行左移右移循環閃爍60次;我們的目標是LEDR0通過閃爍模擬板子的心跳, LEDR1-8 按照一定頻率進行左移右移循環閃爍60次, LEDR9 在LEDR1-8的每一次循環後閃爍一次。可以看出,我們只需要將DE10_Standard_GHRD工程中的LEDR9的設計進行更改就可以打到我們的目的。下面正式開始更改操作。
新建文件夾: E:workQuartusMy_GHRD ,然後將DE10_Standard_GHRD工程目中的一下文件復制到工程目錄下:
因為其中的文件DE10_Standard_GHRD.v後面將會被指定為頂層文件,所以需要將其更改為與工程名My_GHRD相同的My_GHRD.v文件,同時為了與工程名保持協調,我們也將文件DE10_Standard_GHRD.sdc更改為與工程名My_GHRD相同的My_GHRD.sdc。最終工程目錄文件夾如下圖所示:
首先,建立一個名為:My_GHRD的工程。打開軟體Quartus Prime Standard Edition,點擊:File→New Project Wizard…,進入工程創建引導界面。
點擊引導界面下方的:Next,進入Directory, Name, Top-Level Entity設置界面。
點擊右側按鈕:…選擇你的工程目錄 E:/work/Quartus/My_GHRD 。之後設置工程名: My_GHRD 。此時軟體將自動把頂層設計entity name設置為工程名: My_GHRD 。繼續點擊:Next,進入Project Type設置界面。
在Project Type界面選擇:Empty Project選項,繼續點擊:Next,進入Add Files設置界面。
在Add Files設置界面,點擊右側按鈕:…,添加工程目錄下的文件:My_GHRD.v和soc_system.qsys以及文件夾hps_isw_handoff和ip下的所有文件進入工程。
然後點擊:Next,進入Family, Device & Board Settings設置界面。
在Family, Device & Board Settings設置界面,我們要設置我們所用的SoC FPGA型號:5CSXFC6D6F31C6N。為了能夠快速鎖定我們要選擇的SoC FPGA型號,我們可以點擊:Device下拉列表,選擇:Cyclone V SX Extended Features,以縮小選型範圍。
然後,選擇Available devices下的5CSXFC6D6F31C6。繼續點擊:Next,進入EDA Tool Settings設置界面。
在EDA Tool Settings設置界面下,我們保留默認設置。之後點擊:Fnish,完成工程創建,退出工程創建引導界面。
由於我們需要在DE10_Standard_GHRD工程的基礎上更改Qsys的設計來實現對LEDR9的單獨控制,所以我們需要在Qsys中添加一個1位的PIO埠來實現對LEDR9的控制,同時需要將原來用於同時控制LEDR0-9的10位PIO埠的改為9位的PIO埠。
依次點擊:Tools→Qsys,啟動Qsys,之後選中要打開的soc_system.qsys文件。
此時將彈出「 PIO(Parallel I/O) 」設置界面。將PIO的數據寬度Width設置為:1,數據輸入輸出方向Direction設置為:Output。最後點擊右下角的Finish按鈕退出設置。
現在,新的Qsys設計中將會出現我們新添加的PIO埠pio_0,我們可以對其進行重命名。游標移動到在埠名pio_0處,右鍵選擇「Rename」,重命名為:led_pio9。點擊空白處保存命名。
之後我們需要對led_pio9組件的信號進行連接,將游標放置到下圖中led_pio9組件中clk信號所在行的白點處,點擊後可以將led_pio9組件中clk信號與clk_0組件的clk信號進行連接,可以表示為:led_pio9.clk—clk_0.clk。使用類似的操作,將led_pio9組件的其它信號分別與其它組件進行如下連接,最終的連接關系如下:
如下圖:
其中led_pio9有一個信號led_pio9.external_connection需要進行對外引出。游標置於信號led_pio9.external_connection處右擊選擇:Connections:led_pio9.external_connection→Export as: led_pio9_external_connection。
到此,添加一個1位的PIO埠led_pio9的操作已經完成。
接下來需要將原來控制LEDR0-9的數據寬度為10位的PIO埠led_pio更改為只用控制LEDR0-8的數據寬度為9位的PIO埠led_pio。雙擊組件led_pio,將數據寬度Width(1-32 bits)設置為:9,關閉Parameters窗口將自動保存更改。
現在,我們要為我們新添加的PIO埠led_pio9分配基地址,同時更新Qsys設計中其它組件的基地址。依次點擊:System→Assign Base Addresses。
可以看出,至此,我們需要在Qsys設計中做的更改已經完成了。現在,只要重新生成相應的HDL文件,更新Qsys設計就可以結束Qsys部分的設計了。但是後面對工程編譯時軟體將會輸出錯誤提示:
Error (10228): Verilog HDL error at soc_system_sysid_qsys.v(34): mole 「soc_system_sysid_qsys」 cannot be declared more than once。
更令人遺憾的是,目前本人還沒有找到解決上述錯誤信息的辦法。有一個無奈的辦法就是:將Qsys設計中的soc_system_sysid_qsys組件刪除。這不會影響Qsys設計的功能,關於該組件功能的詳細介紹,讀者可以自行查找,此處不再贅述。
刪除soc_system_sysid_qsys組件的辦法是:將soc_system_sysid_qsys組件sysid_qsys的Use列方框中的「√」去掉。
之後進行Qsys設計中的文件生成工作。點擊右下角的Generate HDL…按鈕。
在彈出的「Generation」窗口中,確認Output Directory下Path所指定的生成文件的輸出目錄在工程目錄下。然後點擊Generate按鈕。
接下來會彈出「Save System Completed」窗口,點擊右下角的Close按鈕。
接下來會彈出的「Generate」窗口,等待幾分鍾,文件生成工作完成後,右下角的「Close」按鈕會高亮顯示。此時,點擊「Close」按鈕。
最後,又會退回到Qsys設計頁面,點擊右下角的Finish按鈕,退出Qsys設計。
在返回Quartus Prime Standard Edition主界面後,會提示我們把更新後的.qip和.sip文件重新手動添加到工程中來。點擊提示窗口右下角的Close按鈕。
現在,我們來手動添加更新後的.qip和.sip文件。右擊Project Navigator窗口中工程名:My_GHRD。點擊Settings…選項。
接下來會彈出Category界面,點擊右側的…按鈕。
此時會彈出Select File界面,在指定的目錄下找到生成的soc_system.qip文件並選中,然後點擊右下角的「打開」按鈕。
最後,可以在返回的Catagory界面中可以看到生成的soc_system.qip文件已經被成功添加到工程中。
在上述界面中可以看到文件:hps_reset_bb.qip和hps_reset_bb.v,這一組文件的定義了模塊:hps_reset。但是,由於 文件:hps_reset.qip和hps_reset.v這一組文件同樣也定義了模塊:hps_reset,所以hps_reset_bb.qip和hps_reset_bb.v的加入會導致模塊:hps_reset的重復定義。
現在我們需要將文件:hps_reset_bb.qip和hps_reset_bb.v進行移除。選中文件:hps_reset_bb.qip和hps_reset_bb.v,點擊右側的Remove按鈕移除文件。最後,點擊右下角的OK按鈕退出該界面。
至此,工程My_GHRD中Qsys部分的設計已經完成。接下來我們需要對工程中的硬體描述文件.v文件進行修改。其實,我們在DE10_Standard_GHRD工程的基礎上只用對My_GHRD中頂層實體文件My_GHRD.v中各個模塊的引腳及其連接關系進行描述即可。
在此之前,我們先指定我們的頂層實體文件My_GHRD.v。點擊Project Navigator窗口中Hierachy按鈕,會彈出下拉列表,我們點擊File選項。
找到工程中的My_GHRD.v,右擊選擇Set as Top-Level Entity。
我們雙擊Project Navigator窗口中工程名My_GHRD,此時軟體將會打開工程的頂層實體文件My_GHRD.v
對頂層實體文件My_GHRD.v的修改主要有以下各處:
第一,頂層實體模塊的命名須與工程名My_GHRD保持一致。
第二,在模塊soc_system u0中對新引出的PIO埠led_pio9_external_connection_export進行聲明。可以發現,我們聲明埠led_pio9_external_connection_export的同時需要為其指定一個wire類型的變數進行連接。對照led_pio_external_connection_export連接到wire類型的變數fpga_led_internal上,我們新定義了一個wire類型的變數fpga_led9_internal與埠led_pio9_external_connection_export進行連接。當然,wire類型的變數fpga_led9_internal可以理解為是一條導線,它的一端接到了模塊soc_system u0中對新引出的PIO埠led_pio9_external_connection_export上,兩外一端也是要為它連接適當的埠的。我們新增埠led_pio9_external_connection_export的目的就是能夠對LED燈LEDR9進行控制,所以,不難想到,wire類型的變數fpga_led9_internal另一端一定是要連接到埠LEDR[9]上面的。這樣,總體的更改就是下面這樣的:
現在,我們可以對工程My_GHRD進行編譯操作。首先是進行工程的分析與綜合,依次點擊:Processing→Start→Start Analysis & Synthesis。
工程的分析綜合通過後,主界面中左側的Tasks窗口下的Analysis & Synthesis欄前面會展示一個綠色的「√」,後面會顯示分析綜合所用的時間。
上面分析綜合成功後,下一步需要進行Fitter(Place & Route),這里進行的是關於FPGA內部的布局布線操作。在此之前我們需要對我們模塊中設計的輸入輸出引腳進行引腳分配。引腳分配的方法有很多種,讀者可以自行學習。這里由於我們定義了大量的引腳,而且我們有現成的DE10_Standard_GHRD工程可以利用,我們只需將該工程裡面的引腳分配信息轉移進入我們的My_GHRD工程就可以了。
我們現在打開DE10_Standard_GHRD工程。進入工程後,我們點擊:Assignments→Pin Planner,進入引腳分配界面。
在該界面下,點擊:File→Export…。
之後會彈出Export窗口。我們需要選擇我們要導出的文件格式為:.tcl。
然後,點擊右下角的Export按鈕。
最後,依次點擊引腳分配界面和DE10_Standard_GHRD工程界面右上角的關閉按鈕,退出DE10_Standard_GHRD工程。
我們現在已經得到了我們需要的引腳分配文件DE10_Standard_GHRD.tcl,現在我們需要把它從DE10_Standard_GHRD工程目錄下復制到My_GHRD工程目錄下。為了與My_GHRD工程名保持一致,將其改名為:My_GHRD.tcl。
接下來,我們需要利用得到的引腳分配文件My_GHRD.tcl對工程My_GHRD中的引腳進行分配。點擊:Tools→Tcl Scripts…。
在彈出的Tcl Scripts窗口下,點擊右側的Add to Project…按鈕。
在彈出的Add to Project窗口下,選中我們的引腳分配文件My_GHRD.tcl,並點擊右下角的打開按鈕。
此時,軟體又自動退回到Tcl Scripts窗口下。在Libraries欄中找到我們的引腳分配文件My_GHRD.tcl,點擊下方的Run按鈕來載入我們的引腳分配文件。
在後面彈出的界面中點擊OK按鈕,退回到Tcl Scripts窗口。
最後點擊到Tcl Scripts窗口下方的Close按鈕退出到Tcl Scripts窗口,回到工程主界面。
此時,點擊主界面的:Assignments→Pin Planner進入引腳分配界面。
在引腳分配界面中,可以看到,引腳大部分已經被分配完成,未分配的引腳暫時不用擔心它們,我們還沒有用到。
現在,我們開始對工程進行布局布線。點擊:Processing→Start→Start Fitter。
工程的布局布線通過後,主界面中左側的Tasks窗口下的Fitter(Place & Route)欄前面會展示一個綠色的「√」,後面會顯示布局布線所用的時間。
到此,基本上我們可以判斷在邏輯上我們的設計已經沒有問題了,接下來我們是可以進行工程的全編譯了。但是,在實際的應用設計中我們還要考慮對信號的時序進行約束,尤其是具有 SDRAM DDR3這種高速存取器件的設計中。對於時序約束,我們可以利用DE10_Standard_GHRD工程中的時序約束文件:DE10_Standard_GHRD.sdc。同樣的,將其復制到My_GHRD工程目錄下,改名為:My_GHRD.sdc。
將時序約束文件添加進入工程,右擊Project Navigator窗口下的工程名:My_GHRD,點擊:Setting…按鈕。
接下來會彈出Category界面,點擊右側的…按鈕。
此時會彈出Select File界面,進入工程主目錄下,點擊右下角的文件類型選擇按鈕,選中:Script Files( * .tcl .sdc .pdc*.qip)一項。
下找到時序約束文件My_GHRD.sdc並選中,然後點擊右下角的「打開」按鈕。
最後,可以在返回的Catagory界面中可以看到時序約束文件:My_GHRD.sdc文件已經被成功添加到工程中。依次點擊右下角的Apply按鈕和OK按鈕退出該界面。
此時已經回到工程主界面,我們可以進行工程的全編譯了。點擊Processing→Start Compilation。
本節將介紹如何設計一個ARM C程序來控制PIO控制器led_pio。SoC EDS用於編譯C項目。為了讓ARM程序控制PIO組件led_pio,我們需要led_pio地址。使用linux內置驅動程序』 /dev/mem '和mmap system-call可以將led_pio組件的物理基址映射到Linux應用軟體可以直接訪問的虛擬地址。
ARM C程序需要led_pio的組件信息,因為程序會嘗試控制組件。這部分將會描述如何使用一個給定的Linux shell批處理文件將Qsys HPS信息提取到一個頭文件中,這個頭文件稍後將包含在C程序中。
上面提到的批處理文件名為:generate_hps_qsys_header.sh。它與DE10_Standard_GHRD工程位於同一個文件夾中。現在,我們要為工程My_GHRD生成頭文件。首先,從DE10_Standard_GHRD工程目錄下復制文件:generate_hps_qsys_header.sh到My_GHRD工程目錄下。
接下來,使用記事本打開批處理文件:generate_hps_qsys_header.sh,確認文件中紅線標注的路徑下有應用程序:sopc-create-header-files.exe。其中,路徑:/cygdrive/d/…表示D盤…。如果該路徑下沒有上述應用程序,讀者需自行更改其中的路徑。
注意,如果後面在SoC EDS命令shell中運行generate_hps_qsys_header.sh時,提示出現錯誤。(其實這個錯誤當時解決後忘記進行記錄,好像是提示執行文件sopc-create-header-files的過程中sopcinfo2swinfo還是swinfo2
6. 學FPGA,verilog,暑假看完了夏宇文的那本《verilog數字系統設計》,接下來應該看什麼書fpga該怎麼學
1
接下來學SOPC技術(片上可編程系統):是在FPGA晶元裡面移植一個nios軟核,然後用c語言編程,進行軟體開發。把這個也學了之後就可以學習ucos或者uclinux操作系統,還有ucgui是圖形界面,可以顯示桌面了。
2
如果繼續學習硬體的話就學fpga設計高級教程。
3
想學dsp的話。fpga可以用硬體實現傳統dsp的功能,而且速度快得多,那麼你可以學dspbuilder.
7. FPGA系統工程師需要學什麼東西
1、數字電路基礎。做FPGA一定要有數字硬體的概念。FPGA是硬體設計,而不是軟體設計,首先要有這個概念
2、硬體描述語言,Verilog或VHDL,推薦Verilog
3、主流廠家的晶元底層結構,如Logic Cell、DSP Block、時鍾、IO單元等
4、EDA工具的使用,如主流廠家的集成編譯環境(Quartus II、Vivado等)、模擬軟體(ModelSim等)的使用
5、熟悉FPGA設計流程(模擬,綜合,布局布線,時序分析)。
6、熟練掌握資源估算(特別是slice,lut,ram等資源的估算)。
7、同步設計原理。
一個合格的FPGA工程師至少在以下三個方面的一個非常熟悉:
嵌入式應用 2.DSP應用 3.高速收發器應用
(7)fpga與sopc設計教程擴展閱讀
FPGA工程師的核心競爭力
1、RTL設計實現能力。也就是演算法實現能力,RTL實現是FPGA工程師或者說HDL開發人員的入門首先接觸到的東西;
2、硬體調試能力。包括問題定位分析能力和系統調試能力,FPGA工程師真正的核心競爭力,因為這不僅僅需要經驗的積累,同時還需要很好的邏輯思維和分析能力。
另外一方面是整個硬體軟體系統層次的調試能力,要看得懂原理圖PCB,懂硬體,了解軟體介面,現在FPGA越來越講究HardwareSoftwareCo-design,軟體硬體這個系統層次的調試能力對人的要求更加高。
3、更加高層次的能力。還是系統層次的東西。演算法和架構,怎樣將一系列數學公式,轉換為演算法,在最終形成系統硬體的實現;
整個系統採用什麼樣的架構,純FPGA,arm+FPGA,DSP+FPGA,SOC+FPGA;FPGA頂層採用什麼架構,通用匯流排還是自定義匯流排,如何考慮通用性和可擴展性等等,再大至什麼樣的應用適合用FPGA實現。
什麼樣的問題適合軟體實現,怎樣的組合能更加低成本高效率的解決問題,這一些列問題涉及的東西有很多,基本上都是以FPGA為核心做開發要面臨的問題,其實其他平台的硬體、軟體產品都是類似,系統層面的問題都是復雜的問題,同時,從系統層面去優化,解決問題才是最高效率的方式。
8. SOPC,FPGA概念問題
先從字面意思理解:
SOPC
System-on-a-Programmable-Chip,即可編程片上系統。
用可編程邏輯技術把整個系統放到一塊矽片上,稱作SOPC。可編程片上系統是一種特殊的嵌入式系統:首先它是片上系統(SOC),即由單個晶元完成整個系統的主要邏輯功能;其次,它是可編程系統,具有靈活的設計方式,可裁減、可擴充、可升級,並具備軟硬體在系統可編程的功能。
。。。。說白了,SOPC是一種技術。。。
FPGA(Field-Programmable Gate
Array),即現場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎上進一步發展的產物。
。。。。FPGA 是一類硬體。。。
FPGA和 SOPC的聯系就是:利用VHDL語言在FPGA晶元上可以搭建片上系統,而把這種運用編程語言在可編輯邏輯器件上搭建嵌入式系統的技術叫做SOPC技術。
希望以上回答對你有幫助<—>
9. 學習FPGA的問題
FPGA應該是未來電子產業的一個發展方向,但FPGA不是全部,任何一個電路系統都不可能僅僅由一片FPGA來完成,其他的外圍電路同樣重要。要想學好FPGA應該掌握以下知識:
1、VHDL\Verilog HDL語言
2、C#\VB\delphi等任何一種高級語言。
3、FPGA開發平台(根據學習FPGA晶元的不同,選擇一種開發平台並熟練應用)
4、擴展電路的開發以及應用,包括USB介面、視頻顯示介面、各種IC卡識別、驅動電路等等
5、與電腦連接進行數據交換。
學習FPGA應具有這樣一種思想,FPGA只是一種晶元,與普通的IC沒什麼太大的區別,能用FPGA實現的電路用普通邏輯器件同樣可以實現,只不過用FPGA方便一點罷了,關鍵在於你的思想。
大學的這些課程並不能教會你如何做一件賺錢產品,而是教會你開發的思想,剩下的就靠你自己憑借興趣自己鑽研了。
以上學科都很有用,好好學吧,模電數電都很有用的,如果說數電是FPGA的靈魂的話模電就是FPGA的骨架,缺一不可的。
現如今FPGA在高頻領域也應用很廣的,FPGA內部的鎖相環技術,在信號倍頻放大方面應用廣泛,因此很多開發者也把FPGA用在製作高精度,高頻率的信號源上。