FPGA器件的開(kāi)發(fā)平臺與MATLAB接口仿真
引言
現場(chǎng)可編程邏輯門(mén)陣列fpga器件的出現是超大規模集成電路技術(shù)和計算機輔助設計技術(shù)發(fā)展的結果。fpga器件集成度高、體積小,具有通過(guò)用戶(hù)編程實(shí)現專(zhuān)門(mén)應用功能。它允許電路設計者利用基于計算機的開(kāi)發(fā)平臺,經(jīng)過(guò)設計輸入、仿真、測試和校驗,直到達到預期的結果。目前使用最多的quartus
ii 軟件支持幾乎所有的eda工具,并且可以通過(guò)命令行或tcl腳本與第三方eda工具之間進(jìn)行無(wú)縫連接。但在很多工程設計應用中,由fpga器件完成的主程序中只完成大量的數學(xué)運算,程序調試時(shí)以二進(jìn)制輸出的信號可視性差,給設計人員進(jìn)行仿真、調試帶來(lái)了很多不便。對于很多工程設計人員來(lái)說(shuō)matlab是一種熟悉的具有強大的運算功能和波形仿真、分析功能的軟件,如果能將fpga與matlab接口,就可以快速、準確、直觀(guān)地對fpga程序進(jìn)行校驗和仿真,尤其在波形信號處理等工程應用領(lǐng)域具有實(shí)際意義。
quartus ii 開(kāi)發(fā)軟件
altera公司的quartusii軟件提供了可編程片上系統(sopc)設計的一個(gè)綜合開(kāi)發(fā)環(huán)境。quartus ii 開(kāi)發(fā)工具人機界面友好、易于使用、性能優(yōu)良,并自帶編譯、仿真功能。quartusii軟件支持vhdl和verilog硬件描述語(yǔ)言的設計輸入、基于圖形的設計輸入方式以及集成系統級設計工具。quartusii軟件可以將設計、綜合、布局和布線(xiàn)以及系統的驗證全部都整合到一個(gè)無(wú)縫的環(huán)境之中,其中也包括和第三方eda工具的接口。quartusii設計軟件根據設計者需要提供了一個(gè)完整的多平臺開(kāi)發(fā)環(huán)境,它包含整個(gè)fpga和cpld設計階段的解決方案。圖1說(shuō)明了quartusii軟件的開(kāi)發(fā)流程。

quartusii與matlab的接口實(shí)現
接口原理
vhdl程序從根本上講就是將一些現有的數據進(jìn)行處理,并輸出預期的數據。quartusii 軟件的波形文件(.vwf文件)可以根據設計人員的要求靈活輸入。但在大多數情況下需要仿真的波形數據數量龐大,這樣的輸入方式就明顯不能滿(mǎn)足仿真的要求了。而上述提到的一些外圍電路的作用也是將需要處理的數據輸入到程序中,并將處理過(guò)的數據輸出到指定的裝置。根據這一原理,用一個(gè)輸入、輸出寄存器就可以方便的實(shí)現與matlab之間的接口了。quartusii工具中提供了很多種類(lèi)的寄存器宏模塊,并能根據用戶(hù)的要求進(jìn)行編輯。使用這些宏模塊可以很容易地實(shí)現與matlab之間的接口。下面就是幾種ram宏模塊:

數據的輸入
很多fpga程序在仿真時(shí),需要輸入特定條件下的數值。程序設計時(shí),可以在輸入端口前加一個(gè)預置的存儲器,那么初始數據的輸入就變成了該寄存器的初始化。一般情況下,這些初始數據很容易用matlab軟件經(jīng)過(guò)計算實(shí)現。quartusii中提供了兩種寄存器的初始文件格式,.mif文件和.hex文件。由matlab生成的數據可以方便的根據指定路徑加載到寄存器模塊中。
數據的輸出
數據輸出和數據輸入的原理是相同的。將寄存器中的.mif文件或.hex文件導出,并加載到matlab中相應的變量中,matlab的波形仿真功能就可使設計人員方便直觀(guān)地觀(guān)察程序結果了,這樣大大地方便了設計人員在設計早期對程序進(jìn)行校驗。
應用舉例
這里以一個(gè)簡(jiǎn)單的fft諧波分析過(guò)程的設計為例,說(shuō)明如何在fpga設計中靈活地應用matlab來(lái)完成設計的初步仿真和驗證。fpga的快速運算雖然能更好的實(shí)現了fft,但大多數fft設計并不能預知處理對象的準確波形,而quartusii更不能提供直觀(guān)的結果觀(guān)察。為了驗證設計的可行性,在設計時(shí),在輸入、輸出端分別設置一個(gè)數據存儲器,數據存入的時(shí)序可以根據設計的要求靈活控制,存儲需要的數據。需要注意的一點(diǎn)就是,對于大量數據的波形驗證,存儲器的加入會(huì )使設計的資源變大,初步驗證時(shí)需使用比預計的容量大的器件。在程序的初步驗證之后,就可以在預定的器件中進(jìn)行編譯配置,然后進(jìn)行進(jìn)一步的調試。 程序設計
如圖2所示,程序設計大致分為四個(gè)模塊,主程序模塊、輸入存儲器、輸出存儲器以及控制模塊。主程序模塊是fft的設計程序,來(lái)完成預期的數據處理,而輸入、輸出存儲器則為與matlab的接口程序,控制模塊則控制數據的輸入、輸出,也即是接口模塊的控制。

假設設計時(shí)的a/d接口采樣頻率為50khz,即一個(gè)周期內的采樣點(diǎn)數為1000點(diǎn)。在matlab中可以很容易的實(shí)現公式(1)所示的信號的a/d采樣。根據采樣要求,就可以確定輸入存儲器的容量為12 1000bit。將matlab中生成的目標向量以相應的二進(jìn)制表示,并導入到該輸入存儲器中,就完成了輸入存儲器的初始化。所得的結果輸出原理亦同,在matlab中建立大小相當的向量,將輸出存儲器中的數據導入到該向量就可以直觀(guān)的形式觀(guān)察輸出的結果。那么設計中的關(guān)鍵問(wèn)題主要就集中在了控制模塊的設計。該模塊的時(shí)序必須與外圍電路時(shí)序、主程序中的時(shí)序相匹配,以達到逼真模擬真實(shí)a/d等外圍電路的作用。


任意取兩個(gè)不同的輸入信號如下:
按照上述的程序設計流程,可以由fpga快速計算得到任意波形的fft處理結果,并以直觀(guān)的結果方便程序設計人員的初步程序調試。
結論
fpga器件的最大的優(yōu)勢就是具有更快的速度、更靈活的控制方式及現場(chǎng)可編程功能,但處理對象只限于數字信號,因而給程序的初期調試帶來(lái)了不便。而matlab具有強大的計算功能,尤其便于實(shí)現數字信號與模擬信號之間的靈活轉換,并將結果直觀(guān)呈現。仿真結果證明,將兩種設計軟件結合使用,可以大大地方便工程設計人員進(jìn)行初期修正。
fpga相關(guān)文章:fpga是什么
存儲器相關(guān)文章:存儲器原理
評論