混频器 matlab,基于FPGA数字混频器的设计
基于FPGA数字混频器的设计
1 混频原理
混频即两个不同频率之间的混合,得到第三个频率。数字混频器的设计也是FPGA数字信号处理中基础入门的设计之一,混频便是两个信号相乘得它们的和频率和差频率。数字混频在通信的调制、解调、DUC(数字上变频)、DDC(数字下变频)等系统中广泛应用。通常把其中一个信号称为本振信号(local oscillator),另一个信号称为混频器的输入信号。
2 设计目标
在采样频率为44.1KHZ下通过DDS产生2KHZ的本振信号和3KHZ的外部输入信号。对两个信号分别进行相加处理和相乘处理。使用matlab分析信号频域和时域的变化。
3 matlab设计验证
clear all
close all
clc
FS = 44100;%采样率
fc = 2000; %本振信号 2khz
fe = 3000; %外部输入信号 3khz
N = 1024;%1024点一个正玄周期
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]; %转换横坐标以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('信号频谱图 2KHZ','fontsize',8);legend('sinosc');
subplot(222);plot(ft,f_e);
xlabel('频率(Hz)','fontsize',8); ylabel('功率(dBW)','fontsize',8);
title('信号频谱图3KHZ','fontsize',8);legend('sine');
subplot(223);plot(ft,f_mult);
xlabel('频率(Hz)','fontsize',8); ylabel('功率(dBW)','fontsize',8);
title('信号频谱图1KHZ 和 6','fontsize',8);legend('sinmult');
subplot(224);plot(ft,f_add);
xlabel('频率(Hz)','fontsize',8); ylabel('功率(dBW)','fontsize',8);
title('信号频谱图2KHZ 和 3KHZ','fontsize',8);legend('sinadd');
hold off
图1 matlab时域波形
如上图1所示,图1左上1为2khz本振信号sin波,图1右上2为3khz外部输入sin波,图1左下1为2khz+3khz时域波形,图1右下1为2KHZ*3KHZ时域波形。
图2 信号频域分析
如上图2所示,左下1为两个信号相乘所得频域图形,分析可知2KHZ*3KHZ得到了1KHZ和6KHZ,右下1为两个信号相加所得频域图像,分析可知2khz+3khz得到了2khz 和 3khz。
4 FPGA的程序设计
1) 相加模块设计
`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
相加会产生位扩展。2)相乘模块设计
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 数字混频器的modelsim时域波形
观察图3 可知matlab仿真基本和FPGA时域波形一致,设计成功。接下来对FPGA设计处理的数据进行分析。
图4 FPGA产生的2khz 和3khz时域和频域波形
图5 混频后时域和频域分析
由图4和图5与图1和图2对比,FPGA设计成功。
DSP往期
更多精彩推荐,请关注我们
万水千山总是情,点个 “在看” 行不行!!!
混频器 matlab,基于FPGA数字混频器的设计相关推荐
- 基于FPGA数字时钟的设计(附源码)
大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分.大侠可以关注"FPGA技术江湖"微信公众号,在"闯荡江湖"."行侠仗义"栏里获取其 ...
- MATLAB与FPGA数字信号处理(数字滤波器设计)、数字IC、无线通信、图像处理、信道编码系列
FPCA.数字IC笔试题系列 不容错过的FPGA/数字IC秋招笔试面试汇总帖(2022届) 1. FPGA.数字IC系列(1)--乐鑫科技2021数字IC提前批笔试 2. FPGA.数字IC系列(2) ...
- 基于matlab的gui设计与实现,毕业设计基于MATLAB GUI的数字图像处理的设计与实现(V2.1)...
<[毕业设计]基于MATLAB GUI的数字图像处理的设计与实现.doc>由会员分享,可在线阅读全文,更多相关<毕业设计基于MATLAB GUI的数字图像处理的设计与实现(V2.1) ...
- 基于fpga的fir滤波器设计,通过matlab代码设计滤波器参数,最终通过fpga实现
基于fpga的fir滤波器设计,通过matlab代码设计滤波器参数,最终通过fpga实现,modelsim仿真,最后在开发板上实现,两路adc采集的掺杂高频信号经过低通滤波器之后,由dac输出,由si ...
- 基于FPGA的电子计算器设计(下)
今天给大侠带来基于FPGA的电子计算器设计,由于篇幅较长,分三篇.今天带来第三篇,下篇,话不多说,上货. 导读 本篇介绍了一个简单计算器的设计,基于 FPGA 硬件描述语言 Verilog HDL,系 ...
- 基于FPGA的LSTM加速器设计(MNIST数据集为例)
摘要 本文以MNIST手写数字识别任务为例,使用FPGA搭建了一个LSTM网络加速器,并选取MNIST数据集中的10张图片,通过vivado软件进行仿真验证.实验结果表明,本文设计的基于FPGA的LS ...
- 基于FPGA的电子计算器设计(上)
今天给大侠带来基于FPGA的电子计算器设计,由于篇幅较长,分三篇.今天带来第一篇,上篇,话不多说,上货. 导读 本篇介绍了一个简单计算器的设计,基于 FPGA 硬件描述语言 Verilog HDL,系 ...
- 【FPGA实例】基于FPGA的DDS信号发生器设计
原文链接来源:www.runoob.com 基于FPGA的DDS信号发生器设计 DDS 原理 ------DDS(直接频率合成) 技术是根据奈奎斯特抽样定理及数字处理技术,把一系列的模拟信号进行不失真 ...
- 基于FPGA的HDMI输出接口设计
基于FPGA的HDMI输出接口设计 HDMI接口简述 HDMI协议简述 HDMI接口设计 HDMI代码 总结 HDMI接口简述 HDMI接口是现在特别常用的音视频接口,另一个常用的视频流接口是VGA接 ...
- 基于FPGA的IIR滤波器设计
基于FPGA的IIR滤波器设计,使用VHDL语言. 本设计是毕设,包括论文 下面是论文目录截图: 各模块VHDL程序 时序控制模块程序 library ieee; use ieee.std_logic ...
最新文章
- Swift的Guard语句
- 目录config.php怎么修改域名,config.php · wlphp/基于宝塔面板api给站点新增删除域名接口 - Gitee.com...
- tableau可视化数据分析60讲(十三)-tableau常用可视化视图(条形图折线图饼图)
- COM与.NET调用DCOM组件
- JVM插码之六:jacoco插码及问题“$jacocodata 属性 Method not found: is$jacocoData”
- 河马 webshell扫描器对linux服务器进行安全扫描
- linux怎样以root用户运行,如何在Linux机器中以root用户身份运行Elastic...
- java中的lombok_如何在Java中使用Lombok删除样板设置器吸气剂
- rfid 标签内存_RFID有源与无源的区别与联系
- 百度贴吧 2017 前贴子无法访问;网易腾讯游戏获批;苹果反垄断案败诉 | 极客头条...
- Hive中数据的导入与导出
- 犯罪与健康的统计关系
- CSND博客☞盘码之路开始
- arcgis 中北京1954 高斯克吕格投影说明
- Tcp滑动窗口协议简介
- beego/logs模块的使用
- 一位女程序员兼俩小子妈咪的人生历程(1)
- 使用frp配置内网穿透
- K8S部署Traefik与Ingress、IngressRoute——筑梦之路
- 如何用Matlab画一个数学动态GIF