混频器设计分析实例

在FPGA中实现一个简单的混频器电路,模拟仿真两个625khz正弦信号相乘输出,其中625kHz的本振信号有FPGA内部的数字控制振荡器产生,625kHz输入正弦信号通过读取外部文件获得。外部文件由MATLAB产生,电路还需将混频后的信号滤除直流分量,并将滤除直流分量的1.25MHz的正弦信号输出。

MATLAB代码用于产生FPGA程序中需要使用到的正弦波采样数据。

%SimSigProduce.m
%设置系统参数
fi = 625000;                %
fc = 625000;                %
Fs = 5000000;               %
L = 1024;                   %
N = 10;                     %

%产生信号
t = 0:1/Fs:(1/Fs)*(L-1);    %
theta = rand()*2*pi;        %
si = sin(2*pi*fi*t+theta);  %
si = round(si*(2^(N-1)-1)); %

%产生本振信号
sc = sin(2*pi*fc*t);        %
sc = round(sc*(2^(N-1)-1)); 

%仿真混频输出 画图
so = si.*sc;                %
sof = so - mean(so);        %
fso = abs(fft(so,L));       %

%归一化处理
sc = sc/max(abs(sc));       
si = si/max(abs(si)); 
so = so/max(abs(so)); 
sof = sof/max(abs(sof)); 
fso = fso/max(fso);
%转换成相对于原点对称的信号
fso = [fso(L/2+1:L),fso(1:L/2)];        %
m = [-L/2:1:(L/2-1)]*Fs/L*(10^(-6));    %
t = t*(10^6);                           %
subplot(221);plot(t(1:32),si(1:32));    
title('10bit量化后的输入信号(a)','fontsize',8);
subplot(222);plot(t(1:32),so(1:32));    
title('10bit量化后的混频输出信号(b)','fontsize',8);
subplot(223);plot(t(1:32),sof(1:32));    
title('滤除直流分量后的混频输出信号(c)','fontsize',8);
subplot(224);plot(m,fso);    
title('混频输出信号的幅频响应(d)','fontsize',8);

%将生成的输入正弦信号数据,写入外部文本文件中
f_s = si/max(abs(si));      %
Q_s = round(f_s*(2*(N-1)-1));
fid = fopen('D:\matlab_project\txt_pro\SinIn.txt','w');
for k=1:length(Q_s)
    B_s = dec2bin(Q_s(k)+(Q_s(k)<0)*2^N,N);
    for j=1:N
        if B_s(j) == '1'
            tb=1;
        else
            tb=0;
        end
        fprintf(fid,'%d',tb);
    end
    fprintf(fid,'\r\n');
end
fprintf(fid,';');
fclose(fid);

程序运行结果如下图,同时还会在程序指定的目录'D:\matlab_project\txt_pro\SinIn.txt’下生成txt文件,公FPGA使用。由于输入信号的相位与本振信号有相位差,因此直接混频输出的信号有直流分量;经过直流滤波后的信号没有直流分量。

             


 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值