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

2021-01-15 電子產品世界

採樣就是採集模擬信號的樣本。通常採樣指的是下採樣,也就是對信號的抽取。其實,上採樣和下採樣都是對數位訊號進行重採,重採的採樣率與原來獲得該數位訊號的採樣率比較,大於原信號的稱為上採樣,小於的則稱為下採樣。上採樣是下採樣的逆過程,也稱增取樣或內插。

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

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

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

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

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

等式 1

圖1 - 展示上採樣過程的16MHz信號實例

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

圖2 - 本圖是12位ADC,輸入範圍為ADC完整輸入範圍的97.7%,用80MHz或每周期五次頻率對圖1的模擬信號採樣得到的樣本數據序列實例。

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

FIR濾波器設計

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

圖3 - 當濾波器工作在基本ADC時鐘頻率的M倍頻率時,零插入步驟中使用31抽頭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 - 通過在任何給定時鐘周期內對圖3中每四個寄存器中唯一一個包含非零數據的寄存器進行觀察,可以拆解該濾波器,再讓濾波器在以基礎ADC時鐘頻率運行的情況下並行

如圖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八通道超聲前端集成電路的數據。濾波器係數表達為25位定點常數,以與集成到FPGA晶片上的乘法器輸入位數相匹配。來自ADC的輸入樣本先饋入與輸入引腳相連的寄存器(圖4中的R1),上採樣輸出值則使用與輸出引腳相連的寄存器。寄存器R2到R8屬晶片內部寄存器。寄存器R1到R8故意設定為15位寬度,以便為綜合後邏輯提供執行計算所需的動態餘量。該設計能檢查溢出或下溢,還能將結果鉗制在有效範圍以內。

圖5 - 該VHDL原始碼使用單進程和25位定點係數實現圖4的濾波器拓撲結構。

無需流水線化

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

圖6 - 該圖表顯示的是VHDL模型生成的上採樣數據序列

計算所得(上採樣所得)值與原始模擬信號中理想值之間最大的誤差為整個範圍的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上實現這一上採樣器。布局布線設計佔用該器件中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濾波器設計方法無需藉助複雜精密的濾波器設計工具就能提供優異的結果。

相關焦點

  • 利用Xilinx FPGA實現高效並行實時上採樣
    本文介紹一種使用Virtex-6器件和免費WebPACK工具實現實時四倍上採樣的方法。本文引用地址:http://www.eepw.com.cn/article/201610/308387.htm許多信號處理應用都需要進行上採樣。
  • 基於FPGA的實時中值濾波器硬體實現
    在許多實際應用場合,如高清視頻監控、X光圖像的降噪等,需要快速且實時地進行中值濾波,軟體實現達不到實時處理的要求,因此選用硬體實現。 在硬體實現上,文獻[1]、[2]等採用行延遲的方法形成鄰域數據,以實現3×3的中值濾波。文獻[7]為了提高紅外成像跟蹤器設計了大窗口的中值濾波器。
  • 一種基於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實現
    這裡從Altera IP核出發,建立了基4算法的512點FFT工程,對不同參數設置造成的誤差問題進行分析,並在EP2C70F896C8器件上進行基於Quartus II的綜合仿真,得到利用FFT IP核的FFT算法高效實現,最後利用Matlab進行的計算機仿真分析證明了工程結果的正確性。
  • 基於FPGA的並行掃頻DDS的實現
    與傳統的頻率合成器相比,DDS具有低成本、低功耗、高解析度和快速轉換時間等優點,廣泛使用在電信與電子儀器領域,是實現設備全數位化的一個關鍵技術。DDS在結構上由三部分構成:⑴ 累加器;⑵ 角度幅度轉換器,它將數字相位值轉換為數字幅度值;⑶ 數模轉換器。ADI公司所有DDS的DAC都是電流輸出形式。
  • 基於FPGA流水線結構並行FFT的設計與實現
    FFT的FPGA實現同時具有軟體編程的靈活性和ASIC電路的快速性等優點,成為快速實時實現FFT的一種重要手段。文章意在設計一種高速率高吞吐率的FFT處理器,以滿足實時處理要求。2 結構說明2.1 流水線結構硬體結構實現FFT的常用形式有4種:遞歸結構,流水線結構,並行迭代結構和全並行結構。
  • 基於FPGA的複數浮點協方差矩陣實現
    故目前國內外協方差運算的FPGA實現都是採用定點運算方式。 在所有運算都是定點運算的情況下,每次乘法之後數據位寬都要擴大一倍。若相乘後的數據繼續做加減運算,為了保證數據不溢出,還必須將數據位寬擴展一位,而協方差矩陣的運算核心就是乘累加單元,隨著採樣點數的增加,位寬擴展呈線性增加。最終導致FPGA器件資源枯竭,無法實現設計。
  • 用FPGA實現FFT算法
    當N較大時,因計算量太大,直接用DFT算法進行譜分析和信號的實時處理是不切實際的。快速傅立葉變換(Fast Fourier Transformation,簡稱FFT)使DFT運算效率提高1~2個數量級。其原因是當N較大時,對DFT進行了基4和基2分解運算。FFT算法除了必需的數據存儲器ram和旋轉因子rom外,仍需較複雜的運算和控制電路單元,即使現在,實現長點數的FFT仍然是很困難。
  • 基於FPGA的結構光圖像中心線提取
    編者按:在線結構光視覺三維測量系統中,為了實現對結構光圖像線條紋中心的實時高精度提取,本文採用了極值法、閾值法和灰度重心法相結合的中心線提取方法。利用現場可編程門陣列器件(FPGA)的流水線技術以及並行技術的硬體設計來完成運算,保證了光條紋中心點的實時準確提取。
  • 到底選擇實時採樣還是等效時間採樣?
    很明顯,Windows並不是一種實時作業系統。許多人認為,如果應用軟體要成為實時軟體,那麼它必須進行彙編。這是我最近一次客戶拜訪談話的主題,首先它起於對軟體的討論,後來轉到示波器上。現在的問題是,什麼時候應該使用實時示波器?什麼時候等效時間示波器是更好的選擇?我認為,這個問題值得注意。儘管有大量的不同的採樣技術實現方案,但當前數字示波器採用兩種基本採樣方法:實時採樣和等效時間採樣。
  • 聲納圖像動態範圍擴展與FPGA實現
    高精度的 轉換器保證了信號處理過程所需的數據動態範圍,為實現系統的高分辨能力提供了可能,高性能成像聲納系統通常都採高位數的 轉換器對接收聲基陣的輸出信號進行採樣和量化。為了保證輸出的圖像數據具有合適的亮度和對比度,同時兼顧到信號處理過程的系統複雜度及顯示設備的實際需求,需要將 高精度數據壓縮到 數據寬度,信號處理過程中的數據流位寬如圖 1所示。
  • 基於Spartan-6 FPGA的Sinc3 Filter設計
    Sinc3濾波器的基本原理本文引用地址:http://www.eepw.com.cn/article/129009.htm  Σ-Δ ADC利用過採樣的方法將量化噪聲搬移到高頻段,後端再使用數字抽取濾波器將高頻噪聲濾除
  • 基於FPGA的卷積層並行加速方案
    卷積層在整幅圖像上使用相對很小的卷積核(convolutional kernel)進行特徵檢測,實現了將原始圖像直接輸入神經網絡而不會引發維數災難。克服了之前基於手工特徵和分類器的系統需要分別訓練的缺點,使得圖像分類任務實現了端到端(end-to-end)。
  • 賽靈思推出Spartan-6 FPGA系列
    這一新系列產品實現了低風險、低成本、低功耗以及高性能的完美平衡。 Spartan-6 FPGA系列的高效雙寄存器6輸入LUT(查找表)邏輯結構利用了可靠成熟的Virtex架構,支持跨平臺兼容性以及優化系統性能。 豐富的內建系統級模塊包括DSP邏輯片、高速收發器以及PCI Express® 接口內核,也源於Virtex系列,能夠提供更高程度的系統級集成。
  • 實時示波器和採樣示波器的區別是什麼
    輸入信號經過示波器的前端信號調節電路,數位化之後保存到存儲器,最後在屏幕上顯示。然而,兩種示波器的基本技術則大相逕庭。實時示波器實時示波器包括觸發ASIC技術,允許用戶指定感興趣的事件,例如上升電壓閾值、建立和保持違規或碼型觸發。常規採集模式中,當示波器的觸發電路觀測到這個事件時,示波器將會捕獲並保存在觸發點附近的連續採樣點,並使用已捕獲數據更新顯示屏。
  • 用FPGA實現FFT算法(圖)
    當n較大時,因計算量太大,直接用dft算法進行譜分析和信號的實時處理是不切實際的。快速傅立葉變換(fast fourier transformation,簡稱fft)使dft運算效率提高1~2個數量級。其原因是當n較大時,對dft進行了基4和基2分解運算。fft算法除了必需的數據存儲器ram和旋轉因子rom外,仍需較複雜的運算和控制電路單元,即使現在,實現長點數的fft仍然是很困難。
  • 如何在FPGA中實現狀態機
    FPGA常常用於執行基於序列和控制的行動,比如實現一個簡單的通信協議。對於設計人員來說,滿足這些行動和序列要求的最佳方法則是使用狀態機。狀 態機是在數量有限的狀態之間進行轉換的邏輯結構。一個狀態機在某個特定的時間點只處於一種狀態。
  • FPGA開發外設子板模塊電路設計詳解
    FPGA以並行運算為主,以硬體描述語言來實現;相比於PC或單片機(無論是馮諾依曼結構還是哈佛結構)的順序操作有很大區別,也造成了FPGA開發入門較難。目前國內有專業的FPGA外協開發廠家,開發展基本電路如下:蜂鳴器電路如圖3.47所示。FM信號由FPGA的I/O口控制。當FM為高電平時,Q1的BE導通,則CE導通,蜂鳴器的5V和GND形成迴路,發出聲音。