公司簡介 產品資訊 教育訓練 活動資訊 鈦思書網 技術支援 工程師俱樂部 會員登入



 

用FPGA實現數位訊號處理(DSP)功能(下)

鈦思科技股份有限公司
企劃部專員 黃忻 譯


VHDL程式碼產生
在接下來的步驟中,Xilinx模塊的另一個重要特性-直接將這些模塊轉成VHDL程式碼-的功能開始發揮作用。這個轉碼的動作需以Xilinx System Generator工具完成,而且這項操作不僅僅是將個別的模塊轉成VHDL程式碼,同時也將整個Simulink模型轉成VHDL碼,並能夠自動產生一個FPGA project資料夾。接著我們便可以使用FPGA發展軟體將資料夾開啟並進行後續處理。整個發展流程及工具鏈如下圖二所示。


這裡需要注意的一點是,System Generator僅能將Xilinx所提供之模塊組轉成VHDL程式碼。
圖二:FPGA發展流程工具鏈。點選可將本圖放大。
翻譯:
左上角:Development, Simulation, Verification, Optimization of the Algorithm
左下角:Development, Simulation, Verification, Optimization of the FPGA
 

圖三為一利用Xilinx模塊所建構之半頻濾波器示意圖。我們在模型的最左手邊和最右手邊可以看到在IIR濾波器中典型的延遲網路(delay networks),以及五個乘法器和四個加法器。接著System Generator會自動辨識出這些乘法器模塊,並將它們配置到所選擇晶片的硬體乘法器上。我們接著可以點按一個模塊以打開設定選單(configuration menu)。

圖三:IIR濾波器的Simulink模型。點選可將本圖放大。
 
圖四顯示其中一個乘法器的選單。由上面算下來的前四個選項為數值表示及字元寬度的相關設定。在訊號處理應用中,一般我們會選擇以2進位法表示數字,並以分數格式呈現。這代表小數點會落在左邊第二個位置。接下來兩個選項可分別用來控制結果值小數點左邊及右邊的delimited方法。對左手邊的部分我們可以選擇採用wrapping或saturation;而對於右手邊的部分則有多種不同的取近似值方法可以選擇使用。其他參數設定的部分則跟VHDL程式碼產生有關。

圖四:乘法器的設定選單。點選可將本圖放大。
 
原則上,我們只需再將演算法分配至實體接腳及時鐘(clock),整個發展流程即可宣告完成。在此範例中,連接至codec的序列介面在之前即以VHDL程式碼實現,因此可直接將相關檔案加入設計中。最後,我們以FPGA發展軟體建立完成的FPGA程式碼,並可透過JTAG下載到驗證板上立即執行。
 
結語
表一顯示這個等化器設計在Xilinx XC2V1000-4FG456C FPGA上的使用情形。我們可以清楚發現這顆FPGA的容量對於一個單一等化器的設計而言足足有餘。正反器主要是由序列介面及shift register使用。Look-up table在加入濾波器後開始被使用。本文中這個範例設計完全是並聯的,輸出值的結果在每一個FPGA時鐘循環(clock cycle)中都會被計算。這表示此設計是針對處理速度的最佳化解決方案。然而,為了達到這樣的最佳化目標,此等化器佔用了晶片上一半(40個中的20個)的可用 18x18-bit乘法器。 理論上若採用串聯形式,我們可以更精簡地實現這個濾波器,不過所需的開發時間會比此範例所花時間多一些,另外最大可達成的資料傳輸速度也會較低。

Elements
Total
Used
Occupancy
Flip-flops
10240
327
3%
Look-up tables
10240
1141
11%
I/O pins
324
11
3%
Multipliers
40
20
50%
Clock lines
16
2
12%
Data rate
10 MHz
18 MHz
0.2%
表一:等化器在XC2V1000上的使用情形。
 

這邊很值得注意的一點,就是資料傳輸速度,充分展現今日FPGA所能提供的優異算數效能。這個等化器每秒可處理18,000個樣本,而這顆FPGA的極限大約是80個內部邏輯層,等於可用超過10 MHz的速度處理資料。如果配接正確,我們的等化器能夠處理超過500個音訊通道。
 

若需更深入了解關於The MathWorks及Xilinx的相關產品訊息,歡迎與鈦思科技聯絡,謝謝!