chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

3天內不再提示

MATLAB代碼仿真介紹

FPGA之家 ? 來源:數(shù)字積木 ? 作者:數(shù)字積木 ? 2022-07-06 10:35 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1,MATLAB代碼仿真。

首先介紹下信號混頻的相關概念。混頻就是把兩個不同頻率的信號混合,得到第三個頻率。數(shù)字電路中最常見的混頻方法就是將兩個信號相乘。將兩個頻率為 f0,f1 的正弦波進行相乘,根據積化和差公式,得到兩個頻率分量為 f0+f1 ,f0-f1 的信號。數(shù)字混頻在通信的調制,解調,DUC(數(shù)字上變頻),DDC(數(shù)字下變頻)等系統(tǒng)中應用廣泛。通常把其中一個信號稱為本振信號( 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; %采樣點數(shù)

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 ) 的信號。時域圖顯示如下:

f6f9c744-fcc2-11ec-ba43-dac502259ad0.png

頻域圖顯示如下:

f71b0a3a-fcc2-11ec-ba43-dac502259ad0.png

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

2.MATLAB設計濾波器系數(shù)。

利用matlab的 濾波器設計工具箱( Filter Designer )可以非常方便地設計出符合工程要求的濾波器,在該工具箱中可以直接導出用于FPGA 濾波器設計的系數(shù)文件。

f73fdf72-fcc2-11ec-ba43-dac502259ad0.png

打開該工具箱后,默認顯示如下:

f75506d6-fcc2-11ec-ba43-dac502259ad0.png

進行簡單的設置:

濾波器類型:低通濾波器

濾波器形式:fir

濾波器階數(shù):100

頻率單位:MHz

采樣頻率:100MHz

通帶頻率:1MHz

截止頻率:2MHz

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

f763a042-fcc2-11ec-ba43-dac502259ad0.png

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

f7758424-fcc2-11ec-ba43-dac502259ad0.png

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

f7899cde-fcc2-11ec-ba43-dac502259ad0.png

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

f79a2e64-fcc2-11ec-ba43-dac502259ad0.png

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

3.建立FPGA工程。

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

f7aea8c6-fcc2-11ec-ba43-dac502259ad0.png

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

f7bc8b6c-fcc2-11ec-ba43-dac502259ad0.png

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

1,建立 block design 工程。

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

f7d8449c-fcc2-11ec-ba43-dac502259ad0.png

2,添加IP。

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

f7e9b4ca-fcc2-11ec-ba43-dac502259ad0.png

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

f803f48e-fcc2-11ec-ba43-dac502259ad0.png

3,設置IP。

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

(1)DDS配置。

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

f8121fbe-fcc2-11ec-ba43-dac502259ad0.png

f822490c-fcc2-11ec-ba43-dac502259ad0.png

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

(2)slice IP設置。

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

f82da612-fcc2-11ec-ba43-dac502259ad0.png

(3)乘法器IP配置。

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

f83f6ea6-fcc2-11ec-ba43-dac502259ad0.png

f8511c14-fcc2-11ec-ba43-dac502259ad0.png

(4)移位寄存器設置。

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

f8619ada-fcc2-11ec-ba43-dac502259ad0.png

(5)fir濾波器配置。

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

f8809e9e-fcc2-11ec-ba43-dac502259ad0.png

f88d6c00-fcc2-11ec-ba43-dac502259ad0.png

4,引出端口。

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

f89e651e-fcc2-11ec-ba43-dac502259ad0.png

5,IP連接。

IP最終連接如下圖。

f8a974e0-fcc2-11ec-ba43-dac502259ad0.png

6,生成代碼。

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

f8c6e4ee-fcc2-11ec-ba43-dac502259ad0.png

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

f8db9272-fcc2-11ec-ba43-dac502259ad0.png

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

f8e84dfa-fcc2-11ec-ba43-dac502259ad0.png

4,F(xiàn)PGA仿真驗證。建立如下的測試文件:

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

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

f7bc8b6c-fcc2-11ec-ba43-dac502259ad0.png

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

原文標題:matlab+vivado設計數(shù)字濾波器

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

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

    關注

    189

    文章

    3001

    瀏覽量

    234172
  • 濾波器
    +關注

    關注

    162

    文章

    8138

    瀏覽量

    182111
  • 代碼
    +關注

    關注

    30

    文章

    4900

    瀏覽量

    70763

原文標題:matlab+vivado設計數(shù)字濾波器

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    OptiSystem應用:用MATLAB組件實現(xiàn)振幅調制

    本案例展示了在OptiSystem中調用MATLAB代碼實現(xiàn)振幅調制。 一、建模目標 案例中,我們生成兩束功率為0dBm,頻率分別為192.7THz、191THz的載波,合束之后經過自定義脈沖的調制
    發(fā)表于 06-13 08:46

    利用MATLAB對交流電機調速系統(tǒng)進行建模和仿真

    技術是借助計算機及相關技術,對真實系統(tǒng)的運行過程和狀態(tài)進行數(shù)字化模擬的技術。Simulink作為MATLAB的一個組件,能夠實現(xiàn)對動態(tài)系統(tǒng)的建模、仿真和綜合分析。本文在Simulink環(huán)境中建立面向電氣
    發(fā)表于 06-06 14:31

    MATLAB電機仿真精華50例【干貨】

    空載建立電壓、突然短路、接整流負載時的電壓畸變、六相交直流混合供電同步發(fā)電機仿真。5、電機仿真實驗系統(tǒng)介紹仿真實驗系統(tǒng)的界面設計思路和流程、回調函數(shù)編寫。 本書主要面向從事電機電氣自動
    發(fā)表于 04-01 16:23

    如何用FOC電機控制MATLAB仿真

    [導讀]本文將介紹如何用FOC電機控制MATLAB仿真,首先從整體結構及功能介紹,用MATLAB2013以上版本打開文件,看到如圖1所示界面
    發(fā)表于 03-28 14:51

    直流電機控制方法的Matlab仿真研究

    速度控制模型,以提高無刷直流電機速度控制系統(tǒng)的穩(wěn)定性和抗干擾能力 。使用 Matlab/Simulink 工具箱建立無刷直流電機的仿真模型,研究結果表明,模糊自適應 PID 算法能夠使無刷直流電機的速度
    發(fā)表于 03-27 12:15

    MATLAB仿真在直流電機雙閉環(huán)調速系統(tǒng)中的應用

    在分析了直流調速系統(tǒng)原理的基礎上,在MATLAB/SIMULINK 仿真環(huán)境下對轉速、電流雙閉環(huán)調速系統(tǒng)建模并進行了仿真分析。仿真結果表明,該控制系統(tǒng)模型具有轉速、轉矩響應好和
    發(fā)表于 03-20 13:03

    MATLAB中的simulink中仿真速度過慢,狀態(tài)量數(shù)值很小可以忽略,怎么忽略較小數(shù)值,加快仿真進度呢?

    由于目前我使用MATLAB中的Simscape Multibody插件進行仿真測試,載入物理模型后,使用PID搭建了初步的控制器。進行計算時,只能使用變步長的模式去求解,而且其計算步長特別?。ù蟾艦?/div>
    發(fā)表于 02-23 23:08

    OptiSystem應用:用MATLAB組件實現(xiàn)振幅調制

    本案例展示了在OptiSystem中調用MATLAB代碼實現(xiàn)振幅調制。 一、建模目標 案例中,我們生成兩束功率為0dBm,頻率分別為192.7THz、191THz的載波,合束之后經過自定義脈沖的調制
    發(fā)表于 02-14 09:39

    單片機學習—C51源代碼和Proteus仿真文件

    單片機學習—C51源代碼和Proteus仿真文件.zip, 有各種例子
    發(fā)表于 02-10 13:46 ?1次下載

    matlab里的simulink仿真一個推挽升壓仿真電路,輸出帶載能力很差?

    新手用了matlab里的simulink搭了個推挽仿真,pwm輸出為28khz,占空比0.45,變壓器匝數(shù)比1:31,輸入電壓12v,輸出電壓310v,想做個功率1kw的,然后接了個96.1的負載,輸出電壓只有160多v了。*附件:newpushpull.zip空載帶載變
    發(fā)表于 02-07 20:01

    SPICE混合電路仿真介紹

    電子發(fā)燒友網站提供《SPICE混合電路仿真介紹.pdf》資料免費下載
    發(fā)表于 01-22 17:14 ?1次下載
    SPICE混合電路<b class='flag-5'>仿真</b><b class='flag-5'>介紹</b>

    Simulink與 MATLAB 的結合使用 Simulink中的信號處理方法

    被快速搭建和仿真。 MATLAB 在信號處理中的作用 MATLAB 是一個強大的數(shù)學計算工具,它提供了大量的內置函數(shù)和工具箱,用于信號的生成、分析和處理。以下是 MATLAB 在信號處
    的頭像 發(fā)表于 12-12 09:25 ?1518次閱讀

    Matlab/Simulink/Stateflow建模開發(fā)及仿真測試

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

    FPGA仿真工具包軟件EasyGo Vs Addon介紹

    EasyGo Vs Addon是一款領先的FPGA仿真工具包軟件,它強大地連接了VeriStand軟件與Matlab/Simulink,為實時測試和驗證領域帶來了前所未有的便利和效率,特別適用于汽車、航空航天和能源電力等實時測試和驗證至關重要的行業(yè)。
    的頭像 發(fā)表于 10-24 15:55 ?1145次閱讀
    FPGA<b class='flag-5'>仿真</b>工具包軟件EasyGo Vs Addon<b class='flag-5'>介紹</b>

    常用的仿真軟件有哪些

    在當今的工程和技術領域,仿真軟件已經成為了一種非常重要的工具。它們可以幫助工程師和研究人員在實際制造和測試之前,對系統(tǒng)或產品進行模擬和分析。以下是一些常用的仿真軟件及其特點: MATLAB
    的頭像 發(fā)表于 08-22 09:18 ?6378次閱讀