1. 程式人生 > >[轉載]在Matlab中實現FPGA硬體設計

[轉載]在Matlab中實現FPGA硬體設計

摘要:System Generator for DSP是Xilinx公司開發的基於Matlab的DSP開發工具同時也是一個基於FPGA的訊號處理建模和設計工具。
文章介紹了在Matlab中使用 System Generator for DSP實現FPGA硬體設計的方法,同時給出了一個應用例項。 

    關鍵詞:Matlab;FPGA;System Generator;DSP

    近年來,在數字通訊、網路、視訊和影象處理領域,FPGA已經成為高效能數字訊號處理系統的關鍵元件。FPGA 的邏輯結構不僅包括查
找表、暫存器、多路複用器、儲存器,而且還有快速加法器、乘法器和I/O處理專用電路。FPGA具有實現高效能並行演算法的能力,是構成
高效能可定製資料通路處理器(數字濾波、FFT)的理想器件。如Virtex-II Pro FPGA包含高效能的可程式設計架構、嵌入式PowerPC處理器和

                   


    但是,FPGA在數字訊號處理領域的廣泛應用受限於幾個因素。首先,DSP開發人員不熟悉硬體設計,尤其是 FPGA。他們使用
Matlab驗證演算法,運用C語言或組合語言程式設計,通常不會使用硬體描述語言(VHDL或Verilog)實現數字設計。其次,雖然 VHDL語言
也提供了許多高層次的語言抽象,但是基於並行硬體系統的VHDL程式設計與基於微處理器的序列程式設計有很大的不同。

    基於以上原因,Xilinx公司開發了基於Matlab的System Generator for DSP工具。System Generator for DSP是Simulink中一個基
於FPGA的訊號處理建模和設計工具。該工具可以將一個DSP系統表示為一個高度抽象的模組,並自動將系統對映為一個基於FPGA
的硬體方案。重要的是,該System Generator for DSP實現這些功能並沒有降低硬體效能。

   System Generator for DSP的特點

     simulink為DSP系統提供了強有力的高層次建模環境,可大量應用於演算法開發和驗證。System Generator for DSP作為Simulink的
一個工具箱很好地體現了這些特性,同時又可以自動將設計轉換為可綜合的高效硬體實現方案。該硬體實現方案忠實於原始設計,因此
設計模型與硬體實現在取樣點(在simulink中定義)是一一對應的。通過使用Xilinx精心設計的IP (intellectual property)核可以使硬體方案
具有較小的延遲和體積。雖然System Generator中的IP模組是經過功能抽象的,但是對於熟悉FPGA的設計者來說,該模組也具有直
接訪問底層硬體細節的能力。例如,可以指定 System Generator乘法器模組使用Virtex-II系列FPGA中的專用高速乘法器元件,使用者定
義的IP模組也能夠作為黑盒子插入系統之中,等等。

使用System Generator for  DSP實現系統設計的主要特點有:

●在simulink中實現FPGA電路的系統級建模,並自動生成硬體描述語言。

●自動生成modelsim測試程式,支援軟硬體模擬。

●支援使用者建立的simulink模組。

●使用XILINX FPGA自動實現硬體系統。支援的XILINX FPGA系列包括Spartan-II,Spartan-IIE、Spar-tan-3、Virtex、Virtex-E、Virtex-II、
Virtex-II PRO。

    

  2 使用System Generator for DSP實現系統級建模

  傳統的DSP系統開發人員在設計一個DSP系統時,一般先研究演算法,再使用matlab或C語言驗證演算法,最後由硬體工程師在fpga或DSP
上實現並驗證。典型的DSP系統設計流程如下:

(1) 用數學語言描述演算法。

(2) 設計環境中使用雙精度數實現演算法。

(3) 將雙精度運算變為定點運算。

(4) 將設計轉換為有效的硬體實現。

    使用System Generator for DSP可以簡化這一過程。設計人員先在matlab中對系統進行建模和演算法驗證,經過模擬後便可以直接將系統
對映為基於FPGA的底層硬體實現方案。可用 simulink提供的圖形化環境對系統進行建模。System Generator for  DSP包括被稱為xukub
xilinx blockset的simulink庫和模型到硬體實現的轉換軟體,可以將simulink中定義的系統引數對映為硬體實現中的實體、結構、埠、信
號和屬性。另外,System Generator可自動生成FPGA綜合、模擬和實現工具所需的命令檔案,因此使用者可以在圖形化環境中完成系統模
型的硬體開發。圖1為使用System Generator for  DSP設計系統的流程圖。

    在Matlab中,我們可以通過Simulink的庫瀏覽器使用Xilinx blockset庫中的模組,Xilinx blockset庫中的模組可以與Simulink其它庫中的
模組自由組合。Xilinx blockset庫中最重要的模組是System Generator,利用該模組可完成系統級設計到基於FPGA的底層硬體設計的轉換
工作。可以在System Generator模組的屬性對話方塊中選擇目標FPGA器件、目標系統時鐘週期等選項。System Generator將Xilinx
blockset中的模組對映為IP庫中的模組,接著從系統引數(例如取樣週期)推斷出控制訊號和電路,再將Simulink的分層設計轉換為VHDL的
分層網表,之後,System Generator即可呼叫Xilinx CORE Generator和VHDL模擬、綜合、實現工具來完成硬體設計。


    由於一般的FPGA綜合工具不支援浮點數,因此System Generator模組使用的資料型別為任意精度的定點數,這樣可以實現準確的硬體
模擬。由於smulink中的訊號型別是雙精度浮點數,因此在xil- inx模組和非Xilinx模組之間必須插入gateway inblock和gateway inblock模
塊。通常simulink中的連續時間訊號在Gateway In block模組中進行取樣,同時該模組也可將雙精度浮點訊號轉換為定點訊號,而
Gateway Out block模組則可將定點訊號轉換為雙精度浮點訊號。大部分xilinx模組能夠根據輸入訊號型別推斷輸出訊號的型別。如果模組
的精度引數定義為全精度,則模組將自動選擇輸出訊號型別以保證不損失輸入訊號精度,並自動進行符號位擴充套件和補零操作。使用者也可以
自定義輸出訊號型別來進行精度控制。

  3 使用中需注意的問題

    在FPGA系統設計中,時鐘的設計十分重要。因此必須正確理解System Generator中的時鐘和FPGA硬體時鐘之間的關係。simulink中沒
有明確的時鐘源訊號,模組在系統引數中定義的取樣週期點進行取樣。硬體設計中的外部時鐘源對時序邏輯電路十分重要。在System
Generator模組中,通過定義simulink System period和fpga  system clock period引數可以建立simulink取樣週期和硬體時鐘間的關係,
也可通過設定這些引數來改變Simulink中模擬時間和實際硬體系統中時間的比例關係。simulink的系統週期一般是各模組取樣週期的最大
公約數。FPGA的硬體時鐘是單位為ns的硬體時鐘週期。例如,若simulink中有兩個模組,取樣週期分別為2s和3s,而FPGA系統時鐘周
期為10ns,則simulink系統週期應該為兩個模組取樣週期的最大公約數即為1s。這意味著simulink中的1s對應實際硬體系統的10ns。在
生成硬體系統前,System Generator將自動檢查使用者定義的simulink系統週期引數是否與系統中模組的取樣週期相沖突,如果衝突,則提
示用修改Simulink系統週期引數。

    有些情況會導致System Generator模組產生不確定數(NaN-not a number)。如在雙埠ram模組中,兩個埠同時對模組中的某一地址
進行寫操作時,該地址中的資料將被標記為NaN。如果模組中有不確定數出現,則表明該模組的最終硬體實現將會有不可預測的行為,當
simulink進行模擬時,System Generator將會捕捉該錯誤。

  4 應用例項

    圖2是一個影象處理應用例項的系統實現框圖。該應用例項使用5×5的二維FIR濾波器完成影象增強預處理。該系統將輸入影象分別延遲
0×N(N為輸入影象寬度)、1×N、2×N、3×N、4×N個取樣點後輸入5個Line Buffer,資料在Line Buffer中快取後並行輸入5個5抽頭的
MAC FIR濾波器。濾波器系統儲存於FPGA的塊RAM中,影象資料經濾波器處理後輸出。圖3為Line Buffer實現框圖,圖4為5×5濾波器
框圖

作者:江 霞