Xcell China 27 - (Page 16) 技 術 專 欄 Xilinx AccelDSPTM 綜合工 具是專為已經熟悉基於語 言的 DSP 算法建模的算法 開發人員和 DSP 架構設計 師開發的。借助 AccelDSP 綜合工具,算法開發人員 可以用浮點 MATLAB M 文 件創建激勵、評估算法並 對結果進行後處理。 dbl Sine Wave fpt z-16 Delay a xn 2 tap yn a+b b Gateway Out Add Sub CurrentState Single Port RAM FIR Scope fpt dbl Gateway In2 dbl Random Number fpt Gateway In1 addr data we simin From Workspace dbl fpt Inputs Outputs Moore State Machine Gateway In DSP 硬件系統 System Generator for DSP 非常適合 DSP 系統建模,它不僅包括核心 DSP 算法,還 包括針對外部總線、存儲器讀寫訪問、 系統數據同步和整體系統控制的同步接 口。System Generator for DSP 提供了面向控 制的模塊(如 MicroBlaze TM 處理器),還 提供了用於實現 DSP 系統同步的各個寄存 器、延時器和存儲器模塊(圖 1)。 圖 1 – 顯示系統控制和同步邏輯的 Xilinx System Generator 圖 Clock Data In Data Out New Data Valid Data In New Data Valid Clock Data Out Done Done Output data available to downstream system 自定制 DSP 算法 任何 DSP 系統的核心都是算法。算 法與系統的區別在於所產生的輸出是基 於給定輸入集的函數,與時鐘或硬件無 關。這可以由以下簡單公式錶示: 我們可以分別在 FPGA、DSP 處理器和 軟件上執行一種 MATLAB 定義的算法,它 們對時序精度的理解各不相同。 y = f(x) 算法的這種特有性質具有兩大好處。 首先,算法開發人員完全不用顧及硬件 實現細節,可以只專心於算法功能。正 因為如此,今天在 DSP 中使用的算法估 計有 90% 都是首先作為 MATLAB 模型出 現的,即使設計流程錶明它們此後還要 重新實現成 Simulink 圖或 System Generator for DSP 圖。用一個簡單的 MATLAB 語句就 可以計算 4 x 1,024 數據矩陣的快速傅裡 葉變換 (FFT),不必考慮基數、擴展性、 緩衝或有效信號的同步,如下所示: y = fft(data,1024); 其次,在建立算法模型時,給定的輸 出集總是對應於給定的輸入集;因此, 不必在生成的硬件中解決同步問題。這 就使算法具有可通過 AccelDSP 這樣的綜合 工具進行調度的固有“可調度”性。由 於硬件要求,可能需要使用多個時鐘周 期來計算一個輸出(如資源共享 MAC FIR 濾波器的情形),但這種操作卻非常適 合 AccelDSP 綜合工具的自動流程。加入一 個簡單的硬件握手接口即可為集成到整 個系統敞開方便之門,如圖 2 所示。 圖 2 – AccelDSP 握手接口 M AT L A B 運 算 符 ( 如 矩 陣 轉 置 ) 可 以 使 M AT L A B 代 碼 短小易讀。而像矩陣求逆運算這類複雜運算可以用 M AT L A B 豐 富 的 線 性 代 數 功 能 完 成 。 AccelDSP 和 System Generator 工具 一起使用 AcceDSP 綜合工具可依據浮點 MATLAB 模型生成 System Generator IP 模塊,從而 使 System Generator for DSP 能夠支持 DSP 系統和算法兩種建模方法。這樣可以 產生與用嵌入式 MATLAB 模塊功能相似 的 FPGA 設計流程(圖 3)。我們可以用 Xilinx DSP 模塊集實現系統設計,而用浮 點 MATLAB 實現算法設計。用 AccelDSP 綜 合工具創建的 System Generator IP 模塊是 具有時序精度特點的定點模塊。 function [S] = simple_kalman(A) DIM = size(A,2); persistent p P_cap if isempty(P_cap) P_cap = [8 0 0; 0 8 0; 0 0 8]; p = ones(DIM,1)/2; end; I = eye(DIM); R = [128 0 0;0 128 0; 0 0 128]; % estimate step: P_cap_est = P_cap+I; % correction step: K = P_cap_est * inv(P_cap_est+R); p = p + K * ( A’ – p ); P_cap = (I – K)*P_cap_est; S = p’; 以下是一個卡爾曼濾波器的 MATLAB M 文件。該算法定義矩陣 R 和 I,這兩個 矩陣描述了實測信號和預測行為的統計 數據。算法的後九行是前向預測代碼和 自我校正代碼。 卡爾曼濾波器示例 我們來看一種用 MATLAB 編寫的高 級算法,使用 AccelDSP 綜合工具進行綜 合,然後將算法集成到 System Generator 模型中。卡爾曼濾波器是一種特殊類型 的自適應遞歸濾波器,非常適合將多 個有噪聲的信號合併成一個較清晰的信 號。卡爾曼濾波器以對象(如由地面雷 達跟蹤的商用飛機)的數學模型開始, 使用該模型預測未來行為。然後,濾波 器使用實測信號(如返回到雷達接收器 的飛機特徵信號)定時校正預測。 像加減這類常用運算符是在 A 或 P_cap 這類陣列上運算,無需像 C 語言所 要求的那樣編寫循環語句。二維陣列自 動以矩陣相乘,無需任何特別註釋。 16 賽靈思中國通訊 27期
For optimal viewing of this digital publication, please enable JavaScript and then refresh the page. If you would like to try to load the digital publication without using Flash Player detection, please click here.