FPGA的用途近來又有突破性的發展,因為FPGA現在可被用作建置各種高效能訊號處理功能的引擎,而且可作為取代ASIC或為運用DSP處理器的訊號處理鏈提供效能加速之機制。在本文中,我們將談到如何在以FPGA作為訊號處理器的系統中建構控制電路。
在針對FPGA型DSP系統建置控制電路時,大概會有兩項關鍵決定:
‧控制電路應該建置在硬體元件中,或是設計成軟體演算法?
‧哪些元件能協助迅速且輕鬆地開發控制電路?
在第一個階段,您必須在建置於硬體中的演算法,以及比較適合建置在搭配軟型微處理器(Xilinx PicoBlazeTM與MicroBlazeTM處理器)的軟體或硬式嵌入式微處理器(PowerPCTM 405)等方案之間做取捨。表1列出硬體與軟體方案的優缺點,在選擇這些方案時,需考慮許多因素,其中包括:
‧演算法的複雜度-您可以在軟體與硬體中建置簡單的演算法(例如只需數行C-code就可完成的演算法)。雖然至今尚沒有絕對的估算標準能算出一個區塊需要多少行C-code程式碼,但依據經驗法則,一行程式碼約等於1至10個區塊。當演算法複雜度持續提高時,在硬體中建置與測試演算法的難度也持續攀升。可能輕易利用數行的C-code程式碼建置複雜的演算法,並在微處理器上執行,這種模式是大多數研發業者優先考慮的選擇。
‧需要即時作業系統(RTOS)-如果控制演算法必須要在即時作業系統下執行,較理想的作法是在Virtex- IITMPro或VirtexTM-4 FX FPGA,或者外部微處理器上運用搭配硬型嵌入式PowerPC的軟體,目前這些微處理器有包括Wind River與MontaVista等廠商提供RTOS的支援。
‧與主處理器溝通-與主要處理器之間的通訊往往(但不是必然)需要透過匯流排架構,在這種狀況下,像MicroBlaze處理器或PowerPC處理器等這類微處理器是理想的選擇,因為兩種微處理器都支援像OPB的匯流排架構。硬體型主系統通訊須運用各種狀態機器(State Machine),因此設計的工作較為繁瑣。
‧判斷的速度-如果每項決定都有特定時脈作為判斷的速度,對於需要高時脈的方案而言,硬體電路會是較優先的選擇。對於門檻值在數百或數千時脈的方案而言,軟體型演算法就足以應付效能的需求。
‧浮點運算的需求-雖然大多數控制功能很少用到浮點運算,但有些系統的控制作業的確需要浮點運算,例如過濾器係數的計算作業。對於需要進行逆向矩陣運算的聲納系統(Sonar System),浮點運算的控制往往是最優先考慮的方案,因為它們的開發工作比較容易。當控制的精準度較高,而且演算法不支援固定小數點的數值格式時,浮點運算控制亦是優先的選擇。
當決定採用硬體與軟體平台後,可著手運用許多元件,每種元件都能對不同種類控制作業提供適當的支援。
控制作業可分成許多不同類型。在本文中,我們將範圍鎖定在以下類型的問題,這些都是經常出現在訊號處理系統設計上的難題。
‧硬體方面
‧資料多向傳輸
‧建置有限狀態機器(FSM)
‧取樣率的控制
‧排序–模式產生
‧軟體方面
‧建置各種低傳輸率控制演算法
‧實體層資料通道(媒體存取控制層)的高複雜控制作業(本文將不會討論這個問題)
表2是各種工具與典型控制作業種類的摘要。這些資料只是一些較理想選擇的建議,不能算是嚴謹的推薦。Xilinx專為DSP而設的System Generator是在FPGA中DSP系統模型化與設計的其中一項可選用工具,因此將藉由在System Generator中提供的免費實例說明運用控制電路的方法。
資料多向傳輸是一個不需監控狀態控制作業之範例,以即時模式對資料進行監控與測試,這些測試的結果決定控制電路的輸出內容,圖1顯示資料多向傳輸的範例,這裡的函式是MATLAB中名為xlmax的簡單函式。除非x大於y,否則選擇y作為輸入值,在這個範例中我們選擇x。
當需要依據當前「儲存」的輸入狀態進行決策時,就需要用到有限狀態機器,對於硬體型高效能DSP系統而言,時常看到每個時脈狀態監控作業時的電路,可採用許多種建置方式,但在System Generator中建置FSM最常見的方法是透過m-code的CASE敘述(演算法研發業者常用的方法)以及撰寫HDL(硬體工程師偏愛的方法)。HDL可透過黑盒模式輕易整合至System Generator中,若有需要亦可運用ModelSim進行協同模擬。
圖2顯示可運用m-code模塊輕易在System Generator中建置FSM,並在這個模塊擷自detect1011_w_state中的MATLAB描述檔,這個描述檔的目的是從MATLAB工作空間傳來的訊號中偵測出1011的訊號模式。
在高效能DSP系統中,樣本傳至系統或系統某部份的速度通常與FPGA的時脈不同步時,會建議工程師可以採用控制取樣率的技術。在System Generator中設計控制取樣率的方法包括向上/向下取樣率、時域、FIFO、以及Clock Enable啟用時脈。圖3顯示如何運用單一分時Second-order(Biquad階段)資源建置多個IIR過濾器。因此可以產生15個不同的IIR過濾器,每個過濾器含有4個層疊的Biquad階段,運用單一硬體Biquad階段建構「交疊」(Folded)的架構。硬體交疊是一種分時多工的技術,讓許多演算法能在單一功能單元(加法器、乘法器)上運作。對於像音效與控制這類低取樣率的應用而言,運用硬體資源的分時作業模式,可大幅降低矽元件的空間。這種設計運用許多控制電路,其中包括計量受限的計數器,將訊號饋送到兩個輸入端的多工器(在序列資料與回饋通道之間作選擇)以及向上採樣與向下採樣模塊(負責在Biquad階段控制資料傳輸率)中。
排序問題通常涉及到需要一個週期性的控制模式,不但必須具備可預測的特性,而且不必依賴目前「儲存」的狀態,排序問題常用的解決方案是運用一個簡單的模式產生器,可運用各種計數器、比較器、延遲、ROM、或是System Generator模塊中的邏輯描述模塊來建構一個模式產生器。這種低度使用模式的優點在於其簡化的形式─許多研發業者通常選擇較複雜的狀態機器。
圖3顯示Biquad模塊中模式產生器的實例。Biquad模塊(未列於圖中)裡的定址產生器能產生RAM與ROM的所有位址,並且能針對在交疊Biquad模組中的單埠RAM產生寫入啟動的訊號功能。
愈來愈多業者運用Xilinx微處理器來建置各種低速演算法。在其中三種主流處理器中,8位元PicoBlaze處理器、32位元MicroBlaze處理器、以及嵌入式32位元IBM PowerPC 405處理器,可根據目前的作業選擇適合的處理器。需要用到晶片內建處理器的常見作業包括計算過濾器係數、作業排程、偵測封包(例如像FEC接收器)、以及建置即時作業系統等。
除此之外,運用PicoBlaze微處理器而建置的簡單控制電路的例子形成在16-QAM解調器中的接收通道,以執行調適性通道等化,以及針對QAM輸入來源的載波回復功能執行,傳送器套上的附屬同步標記(ASM)從解調後的資料中被取下,然後再進行FEC,並且PicoBlaze微控制器負責控制RS解碼器;維持接收封包的訊框位置;以及針對反映至(De-mapping)QAM-16限象參考訊號執行定期調整。
在針對高效能FPGA型DSP系統建置控制電路時,System Generator裡眾多欄位(Building Block),即可輕鬆完成設計工作也可成為一項選擇。表1與表2列出一些考量因素,並歸納出一些可行的控制方案。