用matlab來實現fpga功能的設計

2020-12-14 電子產品世界

近年來,在數字通信、網絡、視頻和圖像處理領域,FPGA已經成為高性能數位訊號處理系統的關鍵元件。FPGA的邏輯結構不僅包括查找表、寄存器、多路復用器、存儲器,而且還有快速加法器、乘法器和I/O處理專用電路。FPGA具有實現高性能並行算法的能力,是構成高性能可定製數據通路處理器(數字濾波、FFT)的理想器件。如Virtex-II Pro FPGA包含高性能的可編程架構、嵌入式PowerPC處理器和3.125Gbps收發器等。

本文引用地址:http://www.eepw.com.cn/article/190767.htm

但是,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實現這些功能並沒有降低硬體性能。

1、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濾波器框圖。

相關焦點

  • 3G系統中AGC的FPGA設計實現
    agc增益控制算法在數字部分來實現,在本設計中,agc電路可以有效提高鏈路的動態範圍(+25~-105 dBm),提高ADC輸出的SNR,以使DSP能更容易地實現Dw-PTS同步。agc在系統中的位置如圖1虛線框所示:    3 agc系統的fpga實現    根據agc所實現的功能  ,在fpga中將agc模塊分為如下幾個部分來實現:  3.1 數據幹路模塊    從RSP接口來10位二進位補碼數據I1和Q1,與求指數模塊傳送來的預放大增益
  • 基於FPGA的RS232行列式矩陣鍵盤接口設計
    一、引言本文引用地址:http://www.eepw.com.cn/article/245960.htm本方案是用VHDL語言來實現的基於RS232按位串行通信總線的行列式矩陣鍵盤接口電路
  • 基於FPGA的m序列信號發生器設計
    基於FPGA與Verilog硬體描述語言設計井實現了一種數據率按步進可調、低數據誤碼率、反饋多項式為本文引用地址:http://www.eepw.com.cn/article/263588.htm  按鍵去抖動、按鍵復位、按鍵切換數據率、時鐘分頻等功能均在FPGA內部編程實現。
  • 基於CORDIC 2FSK調製器的FPGA設計
    提出一種基於流水線CORDIC算法的2FSK調製器的FPGA實現方案,可有效地節省FPGA的硬體資源,提高運算速度。最後,給出該方案的硬體測試結果,驗證了設計的正確性。0 引言 頻移鍵控(FSK)是用不同頻率的載波來傳送數位訊號,並用數字基帶信號控制載波信號的頻率。
  • 基於FPGA的任意分頻器設計
    儘管目前在大部分設計中還廣泛使用集成鎖相環(如Altera的PLL,Xilinx的DLL)來進行時鐘的分頻、倍頻以及相移設計,但是,對於時鐘要求不太嚴格的設計,通過自主設計進行時鐘分頻的實現方法仍然非常流行。首先這種方法可以節省鎖相環資源,再者這種方式只消耗不多的邏輯單元就可以達到對時鐘的操作目的。
  • FPGA是什麼
    與傳統邏輯電路和門陣列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的結構,FPGA利用小型查找表(16×1RAM)來實現組合邏輯,每個查找表連接到一個D觸發器的輸入端,觸發器再來驅動其他邏輯電路或驅動I/O,由此構成了既可實現組合邏輯功能又可實現時序邏輯功能的基本邏輯單元模塊,這些模塊間利用金屬連線互相連接或連接到I/O模塊。
  • 基於Modelsim FLI接口的FPGA仿真技術
    除此之外,Modelsim還能夠與 C 語言一起實現對 HDL 設計文件的協同仿真。同時,相對於大多數的 HDL 仿真軟體來說,Modelsim 在仿真速度上也有明顯優勢。這些特點使 Modelsim 越來越受到 EDA設計者、尤其是 FPGA 設計者的青睞。
  • 聯高軟體:半年內實現Matlab功能的70%,國產替代軟體真的可行?
    不少網友認為這是國產軟體發展的大好時機,可以加大馬力早日實現全面國產化。儘管目前有很多開源軟體能夠替代Matlab的功能,但是似乎並不能滿足國人國產化急切的心情。這不,近日一家國產軟體公司宣稱,Truffer半年內實現Matlab科學計算和圖形顯示功能的70%,1年內100%全部實現,3年內完全實現simulink,而是100%自主版權原始碼……看到這種口號,我們想到了什麼?是不是給人感覺有些冒進?如果這家公司是在數值計算方面有很深的積澱,這種言論無可否非,甚至是大快人心。可是,如果不是呢?
  • 基於FPGA的實時中值濾波器硬體實現
    在高清圖像的生成和採集過程中,往往會受到各種噪聲的幹擾,使高清圖像的質量變差,因此必須對圖像進行濾波、平滑等預處理來消除噪聲。中值濾波作為一種非線性濾波方法,既可以消除隨機噪聲和脈衝幹擾,又可以很大程度地保留圖像的邊緣信息,得到了廣泛的運用。
  • MATLAB課程之第三章 MATLAB程序設計(1)
    第二章講解了matlab中關於畫圖函數的使用方法。現在很多領域都要進行數據統計和分析,結果怎麼表示呢?自然用圖形表示。
  • Python是這樣調用matlab程序的!
    Python語法簡潔清晰,特色之一是強制用空白符(white space)作為語句縮進。Python具有豐富和強大的庫。它常被暱稱為膠水語言,能夠把用其他語言製作的各種模塊(尤其是C/C++)很輕鬆地聯結在一起。
  • 一種基於FPGA的視頻邊緣檢測系統設計
    摘要:對於視頻圖像檢測與識別的需要,提出了一種基於FPGA的視頻邊緣檢測系統設計方案,並完成系統的硬體設計。通過FPGA控制攝像頭進行視頻採集,雙埠SDRAM對圖像數據進行緩存,FPGA再對數據進行實時處理。
  • 基於JTAG接口實現ARM的FPGA在線配置
    在線配置(In Sys—tem Programming,ISP)或者動態配置FPGA就是一種重要的SDR實現技術。本文介紹作者開發實現的一種基於ARM的嵌入式Linux下通過JTAG接口動態配置FPGA的方法。
  • python和matlab哪個好?
    Python語法簡潔清晰,特色之一是強制用空白符(white space)作為語句縮進。Python執行:Python在執行時,首先會將.py文件中的原始碼編譯成Python的byte code(字節碼),然後再由Python Virtual Machine(Python虛擬機)來執行這些編譯好的byte code。這種機制的基本思想跟Java,.NET是一致的。
  • matlab和c語言的區別
    MATLAB可以進行矩陣運算、繪製函數和數據、實現算法、創建用戶界面、連接其他程式語言的程序等,主要應用於工程計算、控制設計、信號處理與通訊、圖像處理、信號檢測、金融建模設計與分析等領域。MATLAB功能特性:數值分析數值和符號計算工程與科學繪圖控制系統的設計與仿真數字圖像處理數位訊號處理通訊系統設計與仿真
  • 基於FPGA的搶答器設計與實現
    搶答器在各類競賽中的必備設備,有單路輸入的,也有組輸入方式,本設計以FPGA 為基礎設計了有三組輸入(每組三人),具有搶答計時控制,能夠對各搶答小組成績進行相應加減操作的通用型搶答器;現行的搶答器中主要有兩種:小規模數字邏輯晶片解碼器和觸發器來做,另外一種用單片機來做;小規模數字邏輯電路比較複雜,用單片機來做隨著搶答組數的增加有時候存在
  • 高雲半導體FPGA系列面世 為國產FPGA注入活力
    2.擁有完全自主智慧財產權的現場可編程門陣列(FPGA)雲源™設計軟體  雲源™設計軟體是專為高雲半導體科技股份有限公司的FPGA晶片而配套的集成電路設計與實現工具。中國唯一由新思科技授權的FPGA前端軟體和自主研發的FPGA後端軟體,擁有Synplify Pro的所有功能。
  • 基於FPGA的DisplayPort設計與實現
    與並行協議不同,串行分組協議在實現和維持連接或鏈路方面要多一層複雜性。在 VESA DisplayPort 1.1a 規範中,控制功能被劃分為 Link Policy Maker 和 Stream Policy Maker。Link Policy Maker 可管理鏈路,並負責保持鏈路同步。其任務包括發現鏈路、對鏈路進行初始化和維護。
  • 如何用Matlab連接控制Arduino:GUI界面製作與電機控制
    Matlab與Arduino聯合應用——GUI界面  首先介紹如何安裝配置一個基於Matlab的GUI界面,能夠實現對ArduinoIO口的操作。  下圖所示為matlab中Arduino相關程序的下載界面
  • 基於FPGA的RISC微處理器的設計與實現
    本文介紹了一種基於FPGA技術用VHDL(VHSICHardw are Description Language)語言實現的8位RISC微處理器,並給出了仿真綜合結果。、狀態控制器、程序計數器、地址多路器等單元來考慮。