精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用matlab產生待濾波信號并編寫testbench進行仿真分析

Hx ? 來源:CSDN技術社區 ? 作者:DengFengLai123 ? 2021-04-27 18:18 ? 次閱讀

本講使用matlab產生待濾波信號,并編寫testbench進行仿真分析,在Vivado中調用FIR濾波器的IP核進行濾波測試,下一講使用兩個DDS產生待濾波的信號,第五講或第六講開始編寫verilog代碼設計FIR濾波器,不再調用IP核。

本例使用上一講的FIR濾波器IP核工程。

matlab與FPGA數字濾波器設計(2)——Vivado調用IP核設計FIR濾波器

matlab與FPGA數字濾波器設計(1)——通過matlab的fdatool工具箱設計FIR數字濾波器

100063647-127709-tu_1.png

1. 新建仿真文件

(1) Simulation Sources -》 sim_1 -》右鍵 Add Sources;

(2) Add or Create Simulation Sources,新建仿真文件 fir_ip_tb;

100063647-127710-tu_2.png

2. 編寫testbench

(1) 例化加入的IP核,其中:

輸入時鐘引腳為 clk,設置為32MHz(此處暫時還未設定頻率);

輸入數據引腳為data_in,位寬16-bit,表示待濾波數據;

輸出數據引腳為data_out,位寬40-bit,表示濾波后的數據;

輸出數據有效信號引腳data_out_valid,位寬1-bit,輸出狀態,為高電平時表示輸出的data_out有效;

輸入數據準備好信號引腳data_in_ready,位寬1-bit,輸出狀態,為高電平時表示準備好接收輸入數據;

輸入有效信號S_AXIS_DATA_0_tvalid,為1時表示輸入信號有效,為0時即使有輸入信號data_in到 fir 的 ip 核 ,ip 核也不做處理,此處直接讓其恒為1,輸入數據恒有效;

總結,需要給ip核輸入的數據目前只有兩個,一個是時鐘,一個是待濾波數據。

100063647-127711-tu_3.png

(2) 產生32MHz時鐘信號;

初始 initial 時設置時鐘信號clk為低電平0,always 表示一直執行,#16表示每隔16 ns(單位是在仿真文件開頭自動有定義ns)時鐘取反一次,即每隔 16ns 時鐘 0/1間隔變化,相當于32ns一個時鐘周期,約等于32MHz;

100063647-127712-tu_4.png

3. 產生待濾波數據data_in

(1) 編寫matlab程序,產生兩個信號0.5MHz和5MHz,采樣頻率32MHz,采樣5個周期,進行16-bit量化,并把量化后的數據寫到 .txt 文件中;

100063647-127713-tu_5.png

可以看到,在 0.5MHz 和 5MHz處有兩個峰,表示抽樣后的兩個信號,經過濾波器之后,5MHz 信號被濾除,只剩下 0.5MHz 信號,藍色框內可以看到,在 3MHz 以后濾波器的響應已經低于 -80dB,相當于濾波后的幅度是濾波前的1/10000,濾波效果很好。

100063647-127714-tu_6.png

使用 32MHz 的采樣時鐘采樣 0.5MHz 待濾波信號(相當于0.5MHz信號疊加了5MHz噪聲),每個周期采樣 64 個點,在testbench中讀取一個周期的64個點,重復30個周期得到30個周期的輸入待濾波信號給FIR濾波器;

100063647-127715-tu_7.png

4. 仿真結果分析

點擊1處開始仿真,Vivado中一般默認只會仿真1us,這時候只看到了初始化的一部分,是看不到后續結果的,點擊2處進行仿真,會將所有的仿真步驟完成,執行到上圖中第64行的 $stop 語句停止仿真;

100063647-127716-tu_8.png

5. 仿真結果分析

(1) data_out_valid:初始為0,在1.872 ns跳變為1,輸出數據開始有效,在為0的那段時間輸出數據data_out無效,這段時間內是FIR的IP核進行一些內部的配置和初始化;

100063647-127717-tu_9.png

(2) 更改數據表示模式

對data_in,右鍵設置其數據格式Radix為有符號的十進制數(Signed Decimal),設置其波形為模擬波形(Analog);

對 data_out 同樣設置;

對 Pattern 設置 無符號十進制,不需要設置波形。

100063647-127718-tu_10.png

(3) 點擊放大縮小可以查看整個仿真的效果

通過下面幾圖,可以看到仿真效果很好,5MHz高頻噪聲濾除干凈,肉眼觀察不出來。

100063647-127719-tu_11.png

100063647-127720-tu_12.png

100063647-127721-tu_13.png

(4) Matlab數據分析

肉眼觀察時域的仿真圖無法得知高頻噪聲具體被濾掉了多少,是否還混有噪聲,此時需要將濾波后的數據按照前文讀取仿真數據的方式,將仿真得到的濾波后的數據寫入.txt文件,再通過 matlab 讀取 FPGA 濾波后的數據并進行FFT 頻譜分析,通過頻域的波形來觀察濾波效果,通過 matlab 仿真,可以看到高頻信號的確被濾除。

100063647-127722-tu_14.png

100063647-127723-tu_15.png

下一講使用兩個 DDS 產生待濾波的信號,結合FIR濾波器搭建一個信號產生及濾波的系統,并編寫testbench進行仿真分析。
編輯:lyn

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • matlab
    +關注

    關注

    182

    文章

    2963

    瀏覽量

    230170
  • 仿真
    +關注

    關注

    50

    文章

    4044

    瀏覽量

    133419
  • fir濾波器
    +關注

    關注

    1

    文章

    95

    瀏覽量

    19026
  • Vivado
    +關注

    關注

    19

    文章

    808

    瀏覽量

    66329
收藏 人收藏

    評論

    相關推薦

    編寫高效Testbench的指南和示例

    Testbench是驗證HDL設計的主要手段,本文提供了布局和構建高效Testbench的指南以及示例。另外,本文還提供了一種示例,可以為任何設計開發自檢Testbench
    的頭像 發表于 10-29 16:14 ?140次閱讀
    <b class='flag-5'>編寫</b>高效<b class='flag-5'>Testbench</b>的指南和示例

    Matlab/Simulink/Stateflow建模開發及仿真測試

    matlab 模擬仿真 熟悉Matlab/Simulink/Stateflow建模開發及仿真測試,熟悉V模型開發流程。 熟悉自動代碼生成,能夠編寫
    發表于 10-24 17:23

    基于MATLAB的數字濾波器語音信號去噪

    1.1設計目標 (1)利用Windows下的錄音或其他軟件,采集一段語音信號,名為“add.wav”,利用MATLAB中的audioread命令對該信號進行采樣; (2)根據語音
    的頭像 發表于 10-10 18:22 ?534次閱讀
    基于<b class='flag-5'>MATLAB</b>的數字<b class='flag-5'>濾波</b>器語音<b class='flag-5'>信號</b>去噪

    信號進行濾波處理的方法

    濾波處理是信號處理中的一個重要環節,它可以幫助我們從噪聲中提取有用的信號,提高信號的質量和可靠性。 1. 信號
    的頭像 發表于 08-25 14:47 ?490次閱讀

    基于 FPGA 的任意波形發生器+低通濾波器系統設計

    疊加的濾波信號,兩個正弦波的頻率分別是200Hz、800Hz。用MATLAB產生頻率為500Hz的低通
    發表于 07-15 18:33

    如何利用Matlab進行神經網絡訓練

    ,使得神經網絡的創建、訓練和仿真變得更加便捷。本文將詳細介紹如何利用Matlab進行神經網絡訓練,包括網絡創建、數據預處理、訓練過程、參數調整以及仿真預測等步驟。
    的頭像 發表于 07-08 18:26 ?1680次閱讀

    基于matlab FPGA verilog的FIR濾波器設計

    )相應的改為if(i0<5)。 仿真的波形如下圖(fir濾波器的輸入輸出信號): 運行matlab,用sin_1MHz_gen.m產生
    發表于 07-04 20:11

    FPGA verilog HDL實現中值濾波

    ,推薦使用TimeDesigner進行波形的設計;另外還需要有關聯的兩個甚至多個不同模塊信號的交叉仿真驗證。 4、與matlab的中值濾波
    發表于 06-18 18:50

    matlab與FPGA數字信號處理系列 Verilog 實現并行 FIR 濾波

    Matlab 與 Vivado 聯合仿真 FIR 濾波器 ; 3. 編寫仿真文件testbench
    發表于 05-24 07:48

    MATLAB信號處理常用函數詳解

    MATLAB是一款功能強大的數學軟件,尤其在信號處理領域,它提供了眾多的函數和工具箱,使得信號分析、處理、仿真變得簡單而高效。本文將詳細介
    的頭像 發表于 05-17 14:31 ?1759次閱讀

    基于MATLAB信號處理系統與分析

    基于MATLAB信號處理系統與分析,包括信號的導入、預處理、分析、特征提取以及頻譜分析等關鍵步
    的頭像 發表于 05-17 14:24 ?975次閱讀

    FPGA入門必備:Testbench仿真文件編寫實例詳解

    編寫完HDL代碼后,往往需要通過仿真軟件Modelsim或者Vivadao自帶的仿真功能對HDL代碼功能進行驗證,此時我們需要編寫
    發表于 04-29 10:43 ?1822次閱讀

    請問一下spice仿真怎么產生時鐘信號呢?

    SPICE是一種用于模擬和分析電子電路的計算機程序。在SPICE仿真中,產生時鐘信號是許多電路設計和模擬任務中的關鍵步驟。
    的頭像 發表于 02-06 14:22 ?984次閱讀

    如何使用濾波器來進行有效的信號濾波

    濾波器是一種電子設備或電路,用于改變信號的頻率特性。它可以選擇特定頻率范圍內的信號增強或削弱它們,同時抑制其他頻率范圍內的信號
    的頭像 發表于 01-16 14:52 ?1068次閱讀

    AD5933相移必須是由信號通過網絡而產生的才能準確算出測阻抗嗎?

    AD5933產生的正弦信號通過阻抗網絡產生了相移后,再通過IV轉換輸入給芯片,并在芯片內部做DFT運算。請問這個相移必須是由信號通過網絡而產生
    發表于 01-08 12:17