利用Xilinx FPGA實現高效並行實時上採樣

2021-01-15 電子產品世界

本文介紹一種使用Virtex-6器件和免費WebPACK工具實現實時四倍上採樣的方法。

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

許多信號處理應用都需要進行上採樣。從概念上講,對數據向量進行M倍上採樣的最簡單方法是用實際頻率分量數的(M-1)倍個零填充數據向量的離散傅立葉變換(DFT)[1],然後將零填充向量轉換回時域[1,2]。但這種方法計算量很大,因此不能在FPGA內部高效實現。在本文介紹的高效並行實時上採樣電路中,每個ADC時鐘可產生M個上採樣值,其中M是所需的上採樣倍數。在我們賽靈思的Virtex®-6 XC6VLX75T FPGA實現方案中,上採樣倍數M為4,可以作為較普遍方法的一個實例。

我們並行上採樣方法的總體概念源於某些作者所稱的「窗口SINC插值」,這種方法在文獻資料[3,4]中有一些非常精彩的專文介紹。

為了更好的說明,現以圖1中所示的16MHz模擬信號為例。該信號的表達式為:

等式 1

如果用12位ADC以80MHz的頻率對圖1所示的信號進行採樣或量化,輸入範圍為ADC完整輸入範圍的97.7%,則每個信號周期只能採樣五次,產生的樣本數據序列如圖2所示。如果對該示例數據序列進行四倍上採樣,則有效採樣率為320MHz,每個信號周期能夠提供20個樣本。雖然您可以使用本文介紹的方法進行更高倍數的上採樣,但為了說明起見我們還是使用M=4的上採樣。

當然,還可以通過直接在ADC生成的數據序列的每個實際樣本值之間插入(M-1)個零來獲得上採樣數據向量及所需的樣本數(公認效果較差)。該「零插入步驟」對應於複製頻域中的原始信號頻譜。通過對得到的「零填充」時域信號進行低通濾波,就能去除頻域中所需頻譜的「複本」,從而獲得上採樣數據向量。

FIR濾波器設計

頻域中的理想(磚牆式)低通濾波器相當於在時域中用無限域Sinc函數作卷積。因此為近似化所需的卷積運算,可讓前述的零填充時域信號通過速率為ADC時鐘頻率M倍的對稱低通FIR濾波器,該濾波器拓撲結構與圖3所示的示例31抽頭FIR濾波器相同。用這種方法,我們可以實時生成上採樣數據向量。圖3中的R1、R2、...、R31代表速率為ADC時鐘頻率M倍的寄存器,C0、C1、…、C15代表FIR濾波器的係數。

需要說明的是,圖3所示的FIR濾波器中的大部分寄存器在任何特定時鐘間隔內都會包含0,而非實際的樣本數據。以M=4為例,當R1包含實際樣本數據時,R2、R3和R4將包含0。當R1包含實際樣本數據時,R5、R9、R13、R17、R21、R25和R29也將包含實際樣本數據,其餘的寄存器將包含0。在下一時鐘間隔中,R2、R6、R10、R14、R18、R22、R26和R30將包含實際樣本數據。

如圖3所示,由於在通過FIR濾波器的每M個樣本中有M-1個樣本為0,就M=4、使用31抽頭FIR濾波器的情況而言(如圖4所示),您可以將濾波器分解開,並行產生M個輸出。採用這種實現方案,並行FIR濾波器的工作頻率為ADC的基本時鐘頻率,而非ADC時鐘頻率的M倍。

如圖4所示,您可以設定窗口SINC函數的係數Cw(n)來最大限度地減少實現該FIR濾波器所需的乘法器數量。對於T個抽頭的低通FIR濾波器而言,可通過下式得出最佳係數:

等式2

這裡的漢寧窗係數的計算方法為:

等式3


窗口SINC函數係數Cw(n)隨即通過對應的C(n)和H(n)值相乘即可得到,如:

等式 4

在M=4時,如果按上面介紹的方法計算31抽頭FIR濾波器的係數,令C0=1.0,C4=C8=C12=C15=0,則無需使用與圖4中這些係數有關的9個乘法器。此外,由於生成UPSAMPLED VALUE(1)每個係數會使用兩次,用戶可以「摺疊」該實現方案,比如在相乘之前讓R1和R8相加,這樣就可以去掉四個乘法器。最後得到的設計僅使用18個乘法器每時鐘周期就可產生四個上採樣值。需要注意的是按上文介紹的設計方法,每個原始樣本值會原樣從並聯濾波器輸出。

我們使用圖5所示的可綜合VHDL[5]模型評估圖4所示電路的性能。該VHDL實現方案假定樣本數據為12位,即可能來自美國模擬器件公司的AD9670八通道超聲前端集成電路[6]的數據。濾波器係數表達為25位定點常數,以與集成到FPGA晶片上的乘法器輸入位數相匹配。來自ADC的輸入樣本先饋入與輸入引腳相連的寄存器(圖4中的R1),上採樣輸出值則使用與輸出引腳相連的寄存器。寄存器R2到R8屬晶片內部寄存器。寄存器R1到R8故意設定為15位寬度,以便為綜合後邏輯提供執行計算所需的動態餘量。該設計能檢查溢出或下溢,還能將結果鉗制在有效範圍以內。

無需流水線化

圖6顯示的是使用免費的賽靈思WebPACK™工具[8]中提供的14.7版ISim仿真器對該VHDL模型進行仿真並將饋送圖2中的採樣/量化12位數據序列後得到的上採樣數據序列。每個原始的12位樣本均保持不變,原因上文已述。原始波形中每個實際樣本之間插入了三個新樣本。

計算所得(上採樣所得)值與原始模擬信號中理想值之間最大的誤差為整個範圍的0.464%,平均誤差為整個範圍的0.070%。當然因初始量化步驟原因,在採樣/量化12位源矢量數據值中存在1/2 LSB的誤差(合整個範圍的0.012%)。

布局布線設計使用19個DSP48E1模塊,但佔用的Virtex-6 Slice資源不足1%,無需流水線化即可運行在107MHz下。

我們使用WebPACK工具14.7版在賽靈思XC6VLX75T-3FF484 Virtex-6 FPGA[7]上實現這一上採樣器。布局布線設計佔用該器件中288個DSP48E1模塊中的19個,但使用的Slice資源不足1%。最終得到的上採樣電路能夠運行在107MHz下。無需讓濾波器流水線化即可實現這一性能。此外,我們還開發出了用流水線實現的版本,可以工作在217MHz以上。

雖然XC6VLX75T-3FF484是賽靈思Virtex-6系列中的最低端成員,但晶片上仍集成有288個帶有25x18位乘法器的DSP48E1模塊。換言之,在理論上足以實現15個圖4所示的並行上採樣FIR濾波器。我們製作的原型環形陣列超聲系統使用了八套以80MHz的頻率運行在XC6VLX75T FPGA上的上採樣器,在波束成形之前對來自八通道Analog Devices AD9670超聲前端晶片的數據進行上採樣處理。在該系統中,上採樣器按仿真預測的方式運行,在以AD9670 ADC的基本時鐘頻率80MHz運行的情況下,能使用上採樣到320MHz的數據實時完成波束成形。



最大型賽靈思Virtex-6 FPGA器件XC6VSX475T包含有2,016個25x18位乘法器,在理論上一個晶片就可以實現106個圖4所示類型的上採樣濾波器。

只要濾波器使用本文介紹的高效並行拓撲結構進行設計,就能夠使用實現在工作頻率為107MHz的賽靈思XC6VLX75T-3FF484 FPGA上的FIR濾波器完成M=4倍的實時上採樣。原始數據樣本將原封不動通過濾波器,並行產生(M-1)=3個上採樣值。這種簡明的FIR濾波器設計方法無需藉助複雜精密的濾波器設計工具就能提供優異的結果。本文介紹的思路稍加拓展,就可以使用更大的因數進行上採樣,或者是使用抽頭數更多的FIR濾波器降低計算出的上採樣值的誤差。

這種簡明的FIR濾波器設計方法無需藉助複雜精密的濾波器設計工具就能提供優異的結果。

參考資料:

1. A.V. Oppenheim、R.W. Schafer,《離散時間信號處理》,Prentice Hall,新澤西州恩格爾伍德克利夫斯,1989年。

2. H. Stark、J.W. Woods、I. Paul,《使用直接傅立葉逆轉換和最優插值法對計算機體層攝影術進行探討》,IEEE生物醫學工程通訊第28期,496到505頁(1981年)。

3. R.W. Schafer、L.R. Rabiner,《插值的數位訊號處理方法》,IEEE第61期會刊,692到702頁(1973年)

4. R. Crochiere、L.R. Rabiner,《多速率數位訊號處理》,Prentice Hall,新澤西州恩格爾伍德克利夫斯,1983年。

5. D. Pellerin、D. Taylor,《輕鬆VHDL設計》,Prentice Hall,新澤西州恩格爾伍德克利夫斯,1997年。

6. Analog Devices AD9670八通道超聲AFE及數字解調器產品說明書,Sp0修訂版,美國模擬器件公司,2013年。

7. Virtex-6系列總覽2.3版(DS150),賽靈思公司,2011年。

8. ISE深入教程13.1版(UG695),賽靈思公司,2011年。

相關焦點

  • 使用FPGA實現高效並行實時上採樣
    本文引用地址:http://www.eepw.com.cn/article/201610/308355.htm本文介紹一種使用Virtex-6器件和免費WebPACK工具實現實時四倍上採樣的方法。許多信號處理應用都需要進行上採樣。
  • 基於FPGA的實時中值濾波器硬體實現
    在許多實際應用場合,如高清視頻監控、X光圖像的降噪等,需要快速且實時地進行中值濾波,軟體實現達不到實時處理的要求,因此選用硬體實現。 在硬體實現上,文獻[1]、[2]等採用行延遲的方法形成鄰域數據,以實現3×3的中值濾波。文獻[7]為了提高紅外成像跟蹤器設計了大窗口的中值濾波器。
  • 賽靈思推出Spartan-6 FPGA系列
    這一新系列產品實現了低風險、低成本、低功耗以及高性能的完美平衡。 Spartan-6 FPGA系列的高效雙寄存器6輸入LUT(查找表)邏輯結構利用了可靠成熟的Virtex架構,支持跨平臺兼容性以及優化系統性能。 豐富的內建系統級模塊包括DSP邏輯片、高速收發器以及PCI Express® 接口內核,也源於Virtex系列,能夠提供更高程度的系統級集成。
  • fpga應用領域_fpga應用三個主要方向
    FPGA簡介   FPGA(Field Programmable Gate Array)於1985年由xilinx創始人之一Ross Freeman發明,雖然有其他公司宣稱自己最先發明可編程邏輯器件PLD,但是真正意義上的第一顆FPGA晶片XC2064為xilinx所發明,這個時間差不多比摩爾老先生提出著名的摩爾定律晚
  • 一種基於FPGA的實時紅外圖像預處理方法
    針對這一問題,提出一種基於FPGA的實時紅外圖像預處理方法。該方法採用了流水線技術來並行完成非均勻校正、空間濾波、直方圖統計等多個紅外圖像預處理算法,對系統結構進行了改進和優化。經過實驗測試驗證,該方法合理可行,能夠實時高效地完成紅外圖像預處理任務。與DSP圖像預處理系統相比可以節約將近50%的處理時間。
  • 基於DSP和FPGA的機器人聲控系統設計與實現
    2 系統硬體總體設計 系統的硬體功能是實現語音指令的採集和步進電機的驅動控制,為系統軟體提供開發和調試平臺。如圖1所示。 3 語音識別系統設計 3.1 語音信號的特點 語音信號的頻率成分主要分布在300~3400hz之間,根據採樣定理選擇信號的採樣率為8 khz。語音信號的一個特點在於他的"短時性",有時在一個短時段呈現隨機噪聲的特性,而另一段表現周期信號的特性,或二者兼而有之。
  • 基於fpga二維小波變換核的實時可重構電路
    項目背景及可行性分析本文引用地址:http://www.eepw.com.cn/article/266432.htm  2.1 項目名稱及摘要:  基於fpga二維小波變換核的實時可重構電路  現場可編程門陣列為可進化設計提供了一個理想的模板
  • 基於FPGA IP核的FFT實現
    目前現有的文獻大多致力於研究利用FFT算法做有關信號處理、參數估計、F+FT蝶形運算單元與地址單元設計、不同算法的FFT實現以及FFT模型優化等方面。而FPGA廠商Altera公司和Xilinx公司都研製了FFT IP核,性能非常優越。在FFT的硬體實現中,需要考慮的不僅僅是算法運算量,更重要的是算法的複雜性、規整性和模塊化,而有關利用FFT IP核實現FFT算法卻涉及不多。
  • 基於FPGA的並行掃頻DDS的實現
    與傳統的頻率合成器相比,DDS具有低成本、低功耗、高解析度和快速轉換時間等優點,廣泛使用在電信與電子儀器領域,是實現設備全數位化的一個關鍵技術。DDS在結構上由三部分構成:⑴ 累加器;⑵ 角度幅度轉換器,它將數字相位值轉換為數字幅度值;⑶ 數模轉換器。ADI公司所有DDS的DAC都是電流輸出形式。
  • 基於FPGA流水線結構並行FFT的設計與實現
    FFT的FPGA實現同時具有軟體編程的靈活性和ASIC電路的快速性等優點,成為快速實時實現FFT的一種重要手段。文章意在設計一種高速率高吞吐率的FFT處理器,以滿足實時處理要求。設計採用流水線結構,流水線結構一般在FFT實現的每一級均採用一個運算單元,前一級算結果直接用於下一級運算而無需等到本級運算全部完成,因此,可提高運算速度。遞歸結構的運算的時間較長,並行迭代結構對數據存取帶寬要求很高,全並行結構資源消耗過大,均不適用。
  • 基於FPGA的複數浮點協方差矩陣實現
    故目前國內外協方差運算的FPGA實現都是採用定點運算方式。 在所有運算都是定點運算的情況下,每次乘法之後數據位寬都要擴大一倍。若相乘後的數據繼續做加減運算,為了保證數據不溢出,還必須將數據位寬擴展一位,而協方差矩陣的運算核心就是乘累加單元,隨著採樣點數的增加,位寬擴展呈線性增加。最終導致FPGA器件資源枯竭,無法實現設計。
  • 基於Xilinx FPGA 實現FFT算法的電力諧波檢測的設計方案詳解
    而現場可編程邏輯門陣列(Field Programmable Gate Array, FPGA)在近年來獲得了突飛猛進的發展,目前已成為實現數字系統的主流平臺之一。與DSP相比,FPGA最大的優勢就是可以進行並行計算。在進行FFT這類並行運算為主的算法時,採用FPGA的優勢不言而喻。用FPGA實現FFT算法進行諧波檢測成為了一大熱點。 以往FPGA的設計主要依靠硬體描述語言來完成。
  • 基於FPGA的結構光圖像中心線提取
    編者按:在線結構光視覺三維測量系統中,為了實現對結構光圖像線條紋中心的實時高精度提取,本文採用了極值法、閾值法和灰度重心法相結合的中心線提取方法。利用現場可編程門陣列器件(FPGA)的流水線技術以及並行技術的硬體設計來完成運算,保證了光條紋中心點的實時準確提取。
  • 用FPGA實現FFT算法
    當N較大時,因計算量太大,直接用DFT算法進行譜分析和信號的實時處理是不切實際的。快速傅立葉變換(Fast Fourier Transformation,簡稱FFT)使DFT運算效率提高1~2個數量級。其原因是當N較大時,對DFT進行了基4和基2分解運算。FFT算法除了必需的數據存儲器ram和旋轉因子rom外,仍需較複雜的運算和控制電路單元,即使現在,實現長點數的FFT仍然是很困難。
  • 聲納圖像動態範圍擴展與FPGA實現
    高精度的 轉換器保證了信號處理過程所需的數據動態範圍,為實現系統的高分辨能力提供了可能,高性能成像聲納系統通常都採高位數的 轉換器對接收聲基陣的輸出信號進行採樣和量化。為了保證輸出的圖像數據具有合適的亮度和對比度,同時兼顧到信號處理過程的系統複雜度及顯示設備的實際需求,需要將 高精度數據壓縮到 數據寬度,信號處理過程中的數據流位寬如圖 1所示。
  • 基於Spartan-6 FPGA的Sinc3 Filter設計
    Sinc3濾波器的基本原理本文引用地址:http://www.eepw.com.cn/article/129009.htm  Σ-Δ ADC利用過採樣的方法將量化噪聲搬移到高頻段,後端再使用數字抽取濾波器將高頻噪聲濾除
  • 基於FPGA的卷積層並行加速方案
    想要將卷積神經網絡投入實際應用,例如在移動端利用伺服器訓練好的卷積核參數進行實時的物體或者人臉識別,需要對CNN進行許多改進。其中,卷積層運算需要消耗大量計算資源,使用串行計算方式速度不快。因此,提高CNN卷積層的計算速度是CNN進行實際應用時需要解決的一個重要問題。
  • 利用FPGA實現外設通信接口之: 利用FPGA實現A/D、D/A轉換器接口
    10.5.1A/D、D/A轉換器接口的特點A/D、D/A轉換器是FPGA系統設計中的常用器件,經常用來實現模擬信號和數位訊號的相互轉換。根據應用場合的不同,A/D、D/A轉換晶片的性能指標參數差別比較大,因此接口格式也無法統一。
  • 到底選擇實時採樣還是等效時間採樣?
    很明顯,Windows並不是一種實時作業系統。許多人認為,如果應用軟體要成為實時軟體,那麼它必須進行彙編。這是我最近一次客戶拜訪談話的主題,首先它起於對軟體的討論,後來轉到示波器上。現在的問題是,什麼時候應該使用實時示波器?什麼時候等效時間示波器是更好的選擇?我認為,這個問題值得注意。儘管有大量的不同的採樣技術實現方案,但當前數字示波器採用兩種基本採樣方法:實時採樣和等效時間採樣。
  • 一種近距雷達目標檢測信號處理的FPGA實現
    對於高斯類雜波,較早的CFAR檢測是噪聲電平恆定電路,它適合於接收機內部噪聲的平均功率水平變化較慢的情況,稱為慢門限CFAR;當雜波特性在時間和空間上劇烈變化時應採用快門限CFAR,需要利用參考單元估計檢測單元背景雜波的平均功率水平,顯然用這種方法得到的檢測閾值是隨著雜波的變化而自適應變化的,在理論上檢測的虛警率因此而維持恆定。