新聞中心

        EEPW首頁 > 設計應用 > 頻率匹配的原理及其硬件實現

        頻率匹配的原理及其硬件實現

        作者:■北京航空航天大學 王建坤 夏宇聞 時間:2004-12-14 來源:電子設計應用2004年第11期 收藏

        摘    要:本文介紹了一種的方法——,文中詳細地敘述了算法的原理,用 從理論上證明了算法的正確性, 在此基礎上用可綜合的RTL Verilog模型描述了算法,通過對綜合后網表進行仿真,驗證了算法硬件實現的可行性。最后,根據頻率匹配的原理,實現了一種高精度數字頻率檢測器,并給出了相關的精度值。
        關鍵詞:;頻率匹配;

        本文引用地址:http://www.104case.com/article/4153.htm

        圖 1 實現頻率匹配算法的結構框圖

        圖2 頻率匹配算法模塊的內部結構

        前言
        對于未知信號,可以通過傅立葉變換來檢測信號中的頻譜分布情況。但是,從傅立葉變換的結果只能看出該信號中包含哪些頻率,而對于某頻率的幅度在時域的分布情況卻無從知曉,為了弄清楚某一頻率的幅度在時域的分布情況,可以通過頻率匹配來測定。同樣,如果知道某一信號中包含某一頻率,也可以通過頻率匹配將信號中該頻率的幅度所在的時域檢測出來。
        所謂頻率匹配就是使用一種頻率的信號(以下稱之為匹配信號)去與未知信號(以下稱之為被匹配信號)進行相關運算。因為相關運算可以用來檢測兩個信號的相似性,而做相關運算的目的就是將被匹配信號中與匹配信號頻率相同或相近的部分進行放大,這樣就可以弄清楚與匹配信號頻率相同或相近的頻率在被匹配信號中的分布情況。匹配信號必須是一種單一頻率的信號,因此最理想的匹配信號當然就是三角函數。本文就以三角函數為例,敘述頻率匹配的原理和方法。

        頻率匹配的實現方法
        實際應用中的信號通常是離散的,因此,本文只討論離散信號。可以用頻率匹配來實現離散信號的檢測、識別和提取。下面介紹離散信號頻率匹配的實現方法。
        設被匹配離散信號為 X(m),其采樣頻率為 fs,取匹配離散信號為 和,離散信號的頻率匹配運算如下:
        (1)
        (2)
        (3)
        其中 N 根據實際情況而定,通常取的整數倍。
        通過匹配運算得到的離散函數 M(n),具有如下性質:若 X(n) 在區間[n1,n2]  上的頻率為w,則 M(n) 在區間[n1,n2]上將出現峰值,即在區間[n1,n2] 內 M(n) 的值將明顯大于其它地方的值。

        頻率匹配的 DSP 實現
        下面簡要地介紹頻率匹配的 DSP 實現方法,頻率匹配算法的主要部分是計算 M1(n) 和 M2(n) 。頻率匹配的 DSP 實現方法可以分成兩種:單采樣和塊采樣。在單采樣模式中,每一個采樣周期內只有一個采樣值到達,在每一個采樣周期內也只產生一個信號輸出值。因此,單采樣實現的頻率匹配必須實時執行。在塊采樣模式中,每一個塊周期內有多個采樣值到達,且每一個塊周期內能產生多個信號輸出值。塊采樣能夠根據實際需要,既可以很快也可以很慢地處理所有輸入采樣值。
        在這里將使用塊采樣模式來實現頻率匹配,為了節省存儲器和軟件開銷,大多數 DSP 硬件都可實現循環存儲器,此處的頻率匹配 DSP也使用循環緩沖器來實現。對于輸入的新的采樣值,采用新的采樣值進入、老的采樣值溢出的方式,這樣可以節省軟件開銷。頻率匹配的 DSP 實現需要 3 個循環緩沖器,用來分別存儲 X(n)、sin(n) 和cos(n) 。其中 X(n) 在每一個塊周期內需要接收多個采樣值,在新的采樣值進入循環緩沖器時,溢出老的采樣值。由于sin(n) 和cos(n)  是周期函數,因此不需要在每個塊周期都向其循環緩沖器輸入采樣值,只需在第一個塊周期內將一個周期的采樣值存到緩沖器中即可。在處理過程中,在每一個塊周期內,不需要再向循環緩沖器中裝載 sin(n) 和cos(n)  的值,只需更新循環緩沖器的變址器指針即可,而對于 X(n) 循環緩沖器,每一個塊周期都要向其中輸入新的采樣值,并且需要更新循環緩沖器的變址器指針。
        為了理解上述實現思想,舉一個簡單的例子:設采樣的塊長度為 4,做相關運算的點數為 5,保存X(n)  值的循環緩沖器長度為 8;設三角離散函數的周期為 5(在實際應用中,通常取做相關運算的點數 = 三角離散函數的周期),考慮到循環緩沖器的長度必須是 2 的冪次,所以保存sin(n)  和 cos(n) 的循環緩沖器的長度也取 8。在第一個塊周期內,第一次輸出集合{M1(0),M1(1), M1(2),M1(3) }按下式計算:      (4)
        從式(4)可以看出,在第一個塊周期內,需要從緩沖器得到 8 個采樣值X(0)~X(7)。同理可以推出在第二個塊周期內,需要從緩沖器得到X(4)~X(11),在第三個塊周期內,需要從緩沖器得到X(8)~X(15)。因此在第二個塊周期后,應按順序向循環緩沖器中裝入4個新的采樣值。一個塊周期開始時,循環緩沖器的變址器指針總是指向在該塊周期內使用的第一個采樣值,因此 X(n) 的循環緩沖器變址指針應該按照式(5)來計算。
        變址器指針=[前一個變指針 + 塊長度] mod 緩沖器長度                    (5)
        由于sin(n)是周期為 5 的函數,因此只需在第一個塊周期內向sin(n)的循環緩沖器裝載 5 個采樣值。sin(n)的循環緩沖器變址指針應該按照式(6)來計算。
        變址器指針=[前一個變指針 + 塊長度] mod  三角離散函數的周期      (6)
        在計算M2(n)時,X(n)循環緩沖器實現方法如前面所述,cos(n)循環緩沖器的實現方法與sin(n)的循環緩沖器相同,其循環緩沖器變址指針計算也遵循式 (6)。

        使用 Verilog HDL實現頻率
        匹配算法
        頻率匹配算法并不是很復雜,因此可以使用 Verilog HDL實現該算法,然后將生成的網表文件下載到 FPGA中。使用 Verilog HDL實現頻率匹配算法的結構框圖如圖 1所示。
        圖1包含了兩個模塊,其中數據轉換緩存器的作用是實現數據格式轉換和數據緩存,數據格式轉換是將從外部接收到數據的格式轉換成頻率匹配算法模塊可以處理的數據格式,數據緩存就是將接收到的大量數據存到寄存器中,然后在每個時鐘周期向頻率匹配算法模塊輸送一個數據。頻率匹配算法模塊是整個系統的核心,在實現該模塊時,使用了兩級流水線,大大加快了數據的處理速度。頻率匹配算法模塊的內部結構如圖2所示,其中 reg1 和 reg2 用來保存sin(n)和cos(n)的值。
        頻率匹配算法模塊的可綜合RTL Verilog模型描述的代碼保存在 freqmatch.v 文件中。另外,在設計的過程中,還編寫了頂層測試模塊文件 t_freqmatch.v,在該文件中,首先將 生成的仿真數據(保存在 data.txt 中)讀入到緩存器中,然后在每個時鐘周期內向 freqmatch 模塊發送一個數據。data.txt 文件的數據包含三個部分,前一部分為隨機噪聲,中間是頻率為 500Hz 的正弦信號,后一部分是頻率為 1000Hz 的正弦信號。在 freqmatch.v 文件中,將匹配信號的頻率設為 500Hz。通過仿真,freqmatch 模塊能夠有效地將中間部分頻率為 500Hz 的正弦信號提取出來。

        結語
        在設計的過程中,作者為該數字頻率檢測器編寫了可綜合的 RTL Verilog 模塊,并通過了仿真和綜合,其規模可以控制在合理的范圍之內。另外,可以通過增加頻率匹配中作相關運算的點數來提高頻率檢測器的精度。并且在設計中使用了一種改進的頻率匹配算法,可以使硬件規模不會隨著作相關運算的點數的增加而增大。由于頻率匹配檢測器與頻率濾波器很相似,因此在這里借用頻率濾波器的參數來描述頻率檢測器,表1和表2給出了根據頻率匹配原理已經實現的幾種頻率檢測器的參數(表中的通帶指以該匹配頻率進行檢測時所能檢測出的頻率段)。
        最后,需要指出的是本文所討論的頻率檢測器與頻率濾波器很相似,但它們有不同之處。使用理想頻率檢測器對信號進行處理時,能夠將某一頻率信號提取出來,但抹掉了原始信號中該頻率信號振幅上的差異,即在輸出信號中,該頻率信號振幅是一個恒定值。而使用理想濾波器器對信號進行處理時,不僅能夠將某段頻率信號提取出來,而且不會改變該段頻率信號的其它特性。■

        參考文獻
        1 胡廣書 編著. 數字信號處理——理論、算法和實現. 清華大學出版社,1997
        2 王華 等編著. Matlab 在電信工程中的應用. 中國水利水電出版社,2001
        3 戴逸民, 梁小雯, 裴小平 等編著. 基于 DSP 的現代電子系統設計.電子工業出版社,2002



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 玛多县| 石渠县| 阿拉善左旗| 寿光市| 衡水市| 左权县| 沁阳市| 睢宁县| 团风县| 尉犁县| 鄂伦春自治旗| 金坛市| 兴化市| 藁城市| 运城市| 喀喇沁旗| 屏南县| 丹东市| 木里| 石嘴山市| 黔西县| 寿光市| 宝坻区| 澄江县| 甘德县| 界首市| 霸州市| 隆回县| 南开区| 成武县| 桓仁| 昌图县| 广东省| 伊金霍洛旗| 江川县| 丹凤县| 平乡县| 太仆寺旗| 铜鼓县| 鹿邑县| 临颍县|