www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > > FPGA開源工作室

基于FPGA數(shù)字混頻器的設(shè)計(jì)

1 混頻原理

混頻即兩個(gè)不同頻率之間的混合,得到第三個(gè)頻率。數(shù)字混頻器的設(shè)計(jì)也是FPGA數(shù)字信號(hào)處理中基礎(chǔ)入門的設(shè)計(jì)之一,混頻便是兩個(gè)信號(hào)相乘得它們的和頻率和差頻率。數(shù)字混頻在通信的調(diào)制、解調(diào)、DUC(數(shù)字上變頻)、DDC(數(shù)字下變頻)等系統(tǒng)中廣泛應(yīng)用。通常把其中一個(gè)信號(hào)稱為本振信號(hào)(local oscillator),另一個(gè)信號(hào)稱為混頻器的輸入信號(hào)。

2 設(shè)計(jì)目標(biāo)

在采樣頻率為44.1KHZ下通過DDS產(chǎn)生2KHZ的本振信號(hào)和3KHZ的外部輸入信號(hào)。對(duì)兩個(gè)信號(hào)分別進(jìn)行相加處理和相乘處理。使用matlab分析信號(hào)頻域和時(shí)域的變化。

3 matlab設(shè)計(jì)驗(yàn)證

clear all
close all
clc

FS = 44100;%采樣率
fc = 2000; %本振信號(hào) 2khz
fe = 3000; %外部輸入信號(hào)  3khz
N  = 1024;%1024點(diǎn)一個(gè)正玄周期
Q  = 32;  %量化32bit

t =0:2*pi/FS:2*pi*N/FS;

sin_osc =sin(t*fc);
sin_e =sin(t*fe);

sin_mult = sin_osc.*sin_e;
sin_add = sin_osc+sin_e;

f_osc =fft(sin_osc,N);
f_osc=20*log(abs(f_osc))/log(10);        %換算成dBW單位
ft=[0:(FS/N):FS/2];              %轉(zhuǎn)換橫坐標(biāo)以Hz為單位
f_osc=f_osc(1:length(ft));

f_e =fft(sin_e,N);
f_e=20*log(abs(f_e))/log(10);        %換算成dBW單位
f_e=f_e(1:length(ft));

f_add =fft(sin_add,N);
f_add=20*log(abs(f_add))/log(10);        %換算成dBW單位
f_add=f_add(1:length(ft));

f_mult =fft(sin_mult,N);
f_mult=20*log(abs(f_mult))/log(10);        %換算成dBW單位
f_mult=f_mult(1:length(ft));

figure,
hold on
subplot(221),plot(t(1:128),sin_osc(1:128),'-');
legend('sinosc');title('2K HZ');
subplot(222),plot(t(1:128),sin_e(1:128),'-');
legend('sine');title('3K HZ');
subplot(223),plot(t(1:128),sin_add(1:128),'-');
legend('sinadd');title('add ');
subplot(224),plot(t(1:128),sin_mult(1:128),'-');
legend('sinmult');title('mult ');
grid;
hold off

figure,
hold on
subplot(221);plot(ft,f_osc);
xlabel('頻率(Hz)','fontsize',8); ylabel('功率(dBW)','fontsize',8);
title('信號(hào)頻譜圖 2KHZ','fontsize',8);legend('sinosc');
subplot(222);plot(ft,f_e);
xlabel('頻率(Hz)','fontsize',8); ylabel('功率(dBW)','fontsize',8);
title('信號(hào)頻譜圖3KHZ','fontsize',8);legend('sine');
subplot(223);plot(ft,f_mult);
xlabel('頻率(Hz)','fontsize',8); ylabel('功率(dBW)','fontsize',8);
title('信號(hào)頻譜圖1KHZ 和 6','fontsize',8);legend('sinmult');
subplot(224);plot(ft,f_add);
xlabel('頻率(Hz)','fontsize',8); ylabel('功率(dBW)','fontsize',8);
title('信號(hào)頻譜圖2KHZ 和 3KHZ','fontsize',8);legend('sinadd');
hold off

圖1 matlab時(shí)域波形

如上圖1所示,圖1左上1為2khz本振信號(hào)sin波,圖1右上2為3khz外部輸入sin波,圖1左下1為2khz+3khz時(shí)域波形,圖1右下1為2KHZ*3KHZ時(shí)域波形。

圖2 信號(hào)頻域分析

如上圖2所示,左下1為兩個(gè)信號(hào)相乘所得頻域圖形,分析可知2KHZ*3KHZ得到了1KHZ和6KHZ,右下1為兩個(gè)信號(hào)相加所得頻域圖像,分析可知2khz+3khz得到了2khz 和 3khz。

4 FPGA的程序設(shè)計(jì)

1) 相加模塊設(shè)計(jì)

`timescale 1ps/1ps

module digital_add( input mclk,//45.1584MHZ input reset_n, input signed[31:0] pcm_in1, input signed[31:0] pcm_in2, output signed[31:0] pcm_out ); localparam LAST_CYCLE = 1023; reg [9:0] i; reg signed [32:0] pcm_r; assign pcm_out = pcm_r[32:1]; always @(posedge mclk or negedge reset_n) begin if(!reset_n) begin
 i<= 0; pcm_r <= 33'b0; end else begin
 i <= i + 1; if(i == 0) pcm_r <= pcm_in1 + pcm_in2;//add end
end
endmodule

相加會(huì)產(chǎn)生位擴(kuò)展。
2)相乘模塊設(shè)計(jì)

timescale 1ps/1ps

module digital_mult( input mclk,//45.1584MHZ input reset_n, input signed[31:0] pcm_in1, input signed[31:0] pcm_in2, output signed[31:0] pcm_out ); localparam LAST_CYCLE = 1023; reg [9:0] i; reg signed [63:0] pcm_r; assign pcm_out = pcm_r[63:32]; always @(posedge mclk or negedge reset_n) begin if(!reset_n) begin
 i<= 0; pcm_r <= 0; end else begin
 i <= i + 1; if(i == 0) pcm_r <= pcm_in1*pcm_in2;//mult end
end
endmodule

圖3 數(shù)字混頻器的modelsim時(shí)域波形

觀察圖3 可知matlab仿真基本和FPGA時(shí)域波形一致,設(shè)計(jì)成功。接下來(lái)對(duì)FPGA設(shè)計(jì)處理的數(shù)據(jù)進(jìn)行分析。

圖4 FPGA產(chǎn)生的2khz 和3khz時(shí)域和頻域波形

圖5 混頻后時(shí)域和頻域分析

由圖4和圖5與圖1和圖2對(duì)比,F(xiàn)PGA設(shè)計(jì)成功。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉