在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

淺談matlab+vivado設計數字濾波器

FPGA之家 ? 來源:數字積木 ? 作者:數字積木 ? 2021-05-29 11:09 ? 次閱讀

1,MATLAB代碼仿真

首先介紹下信號混頻的相關概念?;祛l就是把兩個不同頻率的信號混合,得到第三個頻率。數字電路中最常見的混頻方法就是將兩個信號相乘。將兩個頻率為 f0,f1 的正弦波進行相乘,根據積化和差公式,得到兩個頻率分量為 f0+f1 ,f0-f1 的信號。

數字混頻在通信的調制,解調,DUC(數字上變頻),DDC(數字下變頻)等系統中應用廣泛。通常把其中一個信號稱為本振信號( local oscillator ),另一個我信號稱為混頻器的輸入信號。

下面的matlab代碼用于驗證混頻器的設計。

%%信號混頻

%%將兩個頻率為 f0,f1 的正弦波進行相乘,根據積化和差公式,得到兩個頻率分量為 f0+f1 ,f0-f1 的信號

clear all;close all;clc;

fs = 100*10e6; %采樣頻率 100MHz

f1 = 2*10e6; %信號0的頻率 2MHz

f0 = 1.5*10e6; %信號1的頻率 1.5MHz

fpass =1.7*10e6; %低通濾波器通帶頻率

fstop =1.9*10e6; %低通濾波器截止頻率

DIV = 16

N = 4096; %采樣點數

t = 0 : 1/fs : (N-1)/fs; %設置采樣時間

Sig0 = sin (2*pi*f0*t); %生成信號0

Sig1 = sin (2*pi*f1*t); %生成信號1

Sig = Sig0 .*Sig1; %兩個信號進行相乘

% 進行快速傅里葉變化,得到頻譜

XK0 = fft(Sig0);

XK1 = fft(Sig1);

XK = fft(Sig);

%設置頻率

f = ( 0:N/DIV-1 )*fs/( N * 10e6 ); %單位設置為MHz

Amax = max (abs( XK(1:N/DIV)));

f0 = [0 fpass/(10e6 ) fstop/(10e6 ) ( N/DIV-1 )*fs/( N * 10e6 ) ];

A = [ Amax Amax 0 0 ];

%繪制時域波形圖

figure(1);

subplot(3,1,1); plot(t,Sig0); title(“頻率為1.5MHz的正弦信號”);xlabel(“時間(s)”);ylabel(“幅度”);

subplot(3,1,2); plot(t,Sig1); title(“頻率為2.0MHz的正弦信號”);xlabel(“時間(s)”);ylabel(“幅度”);

subplot(3,1,3); plot(t,Sig); title(“1.5MHz和2.0MHz正弦波相乘得到的信號”);xlabel(“時間(s)”);ylabel(“幅度”);

%繪制頻域圖

figure(2);

subplot(3,1,1); plot(f, ( abs( XK0(1:N/DIV) ) ) );title(“1.5MHz正弦信號的頻譜”);xlabel(“頻率(MHz)”);ylabel(“幅度”);

subplot(3,1,2); plot(f, ( abs( XK1(1:N/DIV) ) ) );title(“2.0MHz正弦信號的頻譜”);xlabel(“頻率(MHz)”);ylabel(“幅度”);

subplot(3,1,3); plot(f, ( abs( XK(1:N/DIV) ) ) );title(“1.5MHz和2.0MHz正弦波相乘得到的信號的頻譜”);xlabel(“頻率(MHz)”);ylabel(“幅度”);

hold on;

%低通濾波器示意圖

plot( f0 ,A );

在該仿真代碼中,設置采樣時鐘為100MHz,兩個信號的頻率分別為1.5MHz 和2.0 MHz 。兩個信號相乘后,產生一個頻率分量為 0.5MHz ( 2.0MHz - 1.5MHz ) 和3.5MHz ( 2.0MHz + 1.5MHz ) 的信號。時域圖顯示如下:

3cc3531c-bfcf-11eb-9e57-12bb97331649.png

頻域圖顯示如下:

3ccf8542-bfcf-11eb-9e57-12bb97331649.png

如圖上所示,混頻后得到了兩個頻率頻率分量為 0.5MHz 和 3.5 MHz的信號。將該信號通過一個截止頻率為2.0MHz左右的濾波器中,即可過濾掉 3.5 MHz的高頻信號,只留下 0.5MHz的信號。即如上圖橙色曲線所示。

2.MATLAB設計濾波器系數。

利用matlab的 濾波器設計工具箱( Filter Designer )可以非常方便地設計出符合工程要求的濾波器,在該工具箱中可以直接導出用于FPGA 濾波器設計的系數文件。打開該工具箱后,默認顯示如下:

3d04b640-bfcf-11eb-9e57-12bb97331649.png

進行簡單的設置:

濾波器類型:低通濾波器

濾波器形式:fir

濾波器階數:100

頻率單位:MHz

采樣頻率:100MHz

通帶頻率:1MHz

截止頻率:2MHz

濾波器參數設置好后,點擊 Designer Filter 按鈕,稍等片刻,即可出現設計好的濾波器的頻幅相應曲線?!咀ⅰ坑捎谑浅鯇W乍練,以上的參數設計的不一定合理,其中某些概念還不是很懂,還望通信大神指點。

由于要在FPGA中使用,還要將浮點型的系數轉化為定點數。如下圖設置,設置輸出格式為定點數,位寬為16bit.

3d22621c-bfcf-11eb-9e57-12bb97331649.png

接下來就可以生成用于FPGA設計的系數文件了。在菜單【 Targets 】下點擊【 XILINX coefficient(.coe)file 】,保存即可。

.coe文件中的內容大致如下,存儲了濾波器的各個系數,用16進制表示。

3d7a7092-bfcf-11eb-9e57-12bb97331649.png

至此,濾波器就設置完成了。

3.建立FPGA工程。

利用xilinx 的vivado工具來建立 fir 濾波器系統,對上述的matlab 程序進行硬件驗證。兩路正弦波信號可以用vivado 的DDS IP生成,乘法操作用乘法器IP實現,用vivado自帶的fir 濾波器實現濾波。利用vivado 的 block design 工具,可以不寫一行代碼,實現FPGA系統的搭建。先預覽下搭建好的一個簡單的fir 系統工程。

3d854224-bfcf-11eb-9e57-12bb97331649.png

該工程中,利用兩個DDS 輸出 1.5MHz 和 2.0MHz 的正弦波,利用乘法器IP進行兩路信號的相乘,實現混頻操作。再講混頻的信號通過一個fir濾波器,實現濾波操作。先亮以下仿真結果,漂亮的波形圖。

3d8f4a44-bfcf-11eb-9e57-12bb97331649.png

濾波器完美輸出了0.5MHz的波形,濾掉了3.5MHz的高頻波。不過這是在仿真中的結果,在實際工程中,輸入的信號可能含有噪聲,失真等缺陷,實際效果不可能如此完美,但這個仿真結果也可以說明問題,在理想的輸入下,該濾波器可以完美地濾掉高頻波。下面詳細介紹 FPGA 工程的搭建。

1,建立 block design 工程。

在vivado 工具中點擊 create block design ,輸入 fir_system ( 該名稱可以任意指定 )。

2,添加IP。

在新打開的 Diagram 視圖中,添加IP 塊。點擊 “ + ”號,在彈出的對話框中輸入DDS,雙擊DDS compiler ,即可將DDS IP 加入到塊圖中。

3da1935c-bfcf-11eb-9e57-12bb97331649.png

按照上面的方法依次添加兩個 DDS( DDS compiler ) IP ,兩個截位( slice )IP ,一個fir濾波器(fir compiler) IP,一個乘法器( mult )IP,如下圖。

3,設置IP。

IP添加后,還有經過配置參數才能使用。雙擊IP 塊即可進行配置。

(1)DDS配置。

兩個DDS模塊,一塊設置輸出為2.0MHz,一個設置輸出為1.5MHZ,其余設置保持相同即可。時鐘頻率一定要設置為100MHz,和前面matlab仿真保持一致。

另一個DDS設置為1.5MHz 。設置方法同上。需要注意的是,如上圖顯示,輸出數據端口(MAXISDATA_TDATA)為16bit ,高8位為 正弦波(sin)數據,低8位為余弦波(cos)數據。

(2)slice IP設置。

該IP用于截位操作,設置如下,輸入為16bit,輸出為8bit,為16bit的bit7到bit0.位寬為8bit.該IP用于截取從DDS輸出的正弦波數據。

(3)乘法器IP配置。

輸入位寬設置為8bit 有符號數,流水線級數采用建議的延時,設置為3.表示從輸入到乘法結果輸出經過3個時鐘周期延時。其余可保持默認。

(4)移位寄存器設置。

移位寄存器用以延時數據有效信號,使其與乘法器的輸出保持同步。由于乘法器有3個時鐘的延遲,故將移位寄存器深度也設置為3,使其輸出比輸入延遲3個時鐘周期。其余可保持默認。

(5)fir濾波器配置。

濾波器的系數設置為coe文件,加載前面在matlab生成的coe文件,稍等片刻即可在左邊窗口看到該濾波器的幅頻響應曲線。將輸入采樣頻率和時鐘頻率都設置為100MHz。其余可默認。

4,引出端口。

鼠標選中端口,右鍵選擇 make external,即可導出端口。

5,IP連接。

IP最終連接如下圖。

3e92f0a8-bfcf-11eb-9e57-12bb97331649.png

6,生成代碼。

按照下圖,選中塊設計,右鍵先選擇 “ generate output product.。?!?,等待完成后在選擇 “create HDL wrapper.。。”,即可自動生成頂層代碼。

3ea054dc-bfcf-11eb-9e57-12bb97331649.png

如果出現下面的界面,可選擇下拉菜單中的最大值,這個選項表示運行時vivado軟件可使用的最大核心數。

最終自動生成的頂層代碼如下,就是對建立的原理圖工程做了模塊調用,其本質還是Verilog代碼。

4,FPGA仿真驗證。建立如下的測試文件:

module tb_fir( );

wire [7:0]adc0_sin;

wire [7:0]adc1_sin;

wire [15:0]fir_in;

wire [39:0]fir_out_tdata;

wire fir_out_tvalid;

reg sysclk;

fir_system_wrapper fir_system_wrapper

.adc0_sin ( adc0_sin ),

.adc1_sin ( adc1_sin ),

.fir_in ( fir_in ),

.fir_out_tdata ( fir_out_tdata ),

.fir_out_tvalid ( fir_out_tvalid ),

.sysclk ( sysclk )

);

initial

begin

sysclk = 0;

#50000 $stop(2);

end

always #5 sysclk = ~sysclk;

Endmodule

由于該工程的邏輯已在源代碼中完成,故在測試文件只是對頂層模塊做了例化和產生時鐘信號。最后仿真結果如下圖:

3d8f4a44-bfcf-11eb-9e57-12bb97331649.png

濾波器完美輸出了0.5MHz的波形,濾掉了3.5MHz的高頻波。

編輯:jq

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

    關注

    161

    文章

    7879

    瀏覽量

    179086
  • 寄存器
    +關注

    關注

    31

    文章

    5372

    瀏覽量

    121314
  • IP
    IP
    +關注

    關注

    5

    文章

    1723

    瀏覽量

    150033
  • 乘法器
    +關注

    關注

    8

    文章

    206

    瀏覽量

    37212
  • 代碼
    +關注

    關注

    30

    文章

    4841

    瀏覽量

    69146

原文標題:matlab+vivado設計數字濾波器

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    模擬電路在數字濾波器中的作用是什么?

    模擬電路在數字濾波器之前
    發表于 02-12 08:32

    ADS1293內部的數字濾波器是怎么樣的作用?

    請問ADS1293內部的數字濾波器是怎么樣的作用? 從DS中我看到該AFE有數字濾波器,請問它是心電算法中常見的低通濾波器嗎?效果如何?可以配置嗎
    發表于 01-20 07:37

    濾波器的一些常識

    濾波器簡介:濾波器是一種用于信號處理的設備或系統,用于改變信號的頻率特性,以實現信號的濾波、增強、去噪或降噪等功能。濾波器根據其工作方式可以分為數字
    的頭像 發表于 12-18 17:05 ?369次閱讀
    <b class='flag-5'>濾波器</b>的一些常識

    AMC1304后接的數字濾波器接口應該是什么樣的?

    疑問: 1、AMC1304后接的數字濾波器接口應該是什么樣的,和ADS1202一樣是采用的SPI嗎。如果是,我需要在上升沿還是下降沿進行數據的讀取。 2、后接的數字濾波器采用的是sin3 OSR為
    發表于 11-28 06:43

    模擬濾波器數字濾波器的轉換步驟

    將模擬濾波器轉換為數字濾波器是一個涉及多個步驟的過程,旨在保持濾波器性能的同時,適應數字信號處理的需求。以下是將模擬濾波器轉換為
    的頭像 發表于 11-26 10:03 ?1082次閱讀

    ADS1256的數字濾波器時可以自己設置嗎?

    想問下TI,ADS1256的數字濾波器時可以自己設置嗎,還是通過ADC的DATA RATE的設置,默認是設置到相對于的數字濾波
    發表于 11-26 07:13

    數模轉換數字濾波器的結合應用

    數模轉換(DAC)與數字濾波器的結合應用在現代電子系統中非常普遍,這種結合能夠顯著提高系統的性能、精度和可靠性。以下是對數模轉換數字濾波器結合應用的介紹: 一、數模轉換
    的頭像 發表于 11-25 16:20 ?465次閱讀

    ADC3663數字濾波器如何使用呢?

    板上用到了ADC3663,看數據手冊上,它可以有數字濾波功能,甚至不需要前級的抗混疊濾波器(這么理解對嗎)。 我想問下,這個數字濾波器如何使用呢?咱們是否有推薦的資料,如源碼等。 因為看了手冊也不知道從何處著手呢
    發表于 11-18 07:12

    PCM1738外接數字濾波器例如PMD100,PCM1738的12,13,14腳如何設置?

    PCM1738外接數字濾波器例如PMD100,PCM1738的12,13,14腳如何設置,不使用微處理控制
    發表于 11-07 07:45

    基于FPGA實現FIR數字濾波器

    數字信號處理系統中,有限脈沖響應(finite impulse response,FIR)數字濾波器是一個非常重要的基本單元。近年來,由于FPGA具有高速度、高集成度和高可靠性的特點而得到快速發展
    的頭像 發表于 11-05 16:26 ?987次閱讀
    基于FPGA實現FIR<b class='flag-5'>數字濾波器</b>

    Δ-Σ ADC中的數字濾波器類型

    電子發燒友網站提供《Δ-Σ ADC中的數字濾波器類型.pdf》資料免費下載
    發表于 09-06 09:50 ?4次下載
    Δ-Σ ADC中的<b class='flag-5'>數字濾波器</b>類型

    數字濾波器的實現方法

    數字濾波器是一種通過對數字信號進行處理來完成對數字信號或模擬信號進行濾波的儀器。其實現方式多樣,可以從硬件和軟件兩個角度進行探討,同時涉及多種數學方法和設計步驟。
    的頭像 發表于 08-20 16:06 ?1124次閱讀

    AMC1210四通道數字濾波器數據表

    電子發燒友網站提供《AMC1210四通道數字濾波器數據表.pdf》資料免費下載
    發表于 08-19 09:15 ?0次下載
    AMC1210四通道<b class='flag-5'>數字濾波器</b>數據表

    數字濾波器的原理和應用

    數字濾波器是一種由數字乘法器、加法器和延時單元組成的算法或裝置,其輸入和輸出均為數字信號。它的主要功能是通過一定的運算關系改變輸入信號所含頻率成分的相對比例或者濾除某些頻率成分,以達到期望的響應特性。
    的頭像 發表于 08-05 16:19 ?1569次閱讀
    <b class='flag-5'>數字濾波器</b>的原理和應用

    數字濾波器是如何工作的

    之前我們在說明數字濾波器的時候,多為Python來進行示例驗證的。實際應用中,多為C/C++,無論是在嵌入式系統中,還是PC機上,尤其對于時間或者實時性要求比較嚴格的情況下,C/C++應該是我們的首選。
    的頭像 發表于 06-13 10:09 ?636次閱讀
    <b class='flag-5'>數字濾波器</b>是如何工作的
    主站蜘蛛池模板: 国产呦精品系列在线 | 一级毛片免费全部播放 | 国产区一区二区三 | 伊人啪| 丁香花五月天婷婷 | 午夜国产大片免费观看 | 人人搞人人爱 | 2021国产精品成人免费视频 | 黄色片日本网站 | 日韩一级在线观看 | 日韩三级毛片 | 国产手机在线国内精品 | 日日干夜夜操视频 | 日本资源在线观看 | 色婷婷色综合 | 日本黄在线观看 | 亚洲爽爽网站 | 欧美猛交喷潮在线播放 | 日韩毛片网 | 丁香网五月网 | 激情综合网色播五月 | 免费一级毛片正在播放 | aaaaaa精品视频在线观看 | 永久网站色视频在线观看免费 | 美女张开腿露尿口给男人亲 | 天天干天天操天天 | 在线观看一区二区三区视频 | 亚洲四虎影院 | 国产福利在线观看你懂的 | 国产在线黄 | 黄黄的网站在线观看 | 中日韩一级片 | 色多多在线观看播放 | 天堂电影免费在线资源 | 久草干| 四虎www成人影院观看 | 美女扒开尿口给男人爽的视频 | 777奇米影视一区二区三区 | 国产色婷婷精品免费视频 | 久久久久久全国免费观看 | aaaaaa级特色特黄的毛片 |