 |
用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的相關產品訊息,歡迎與鈦思科技聯絡,謝謝! |
|
|
|
|
| |