基于FPGA的AM信号解调verilog实现

目录

1.AM调制原理

2.数字实现中的采样和量化

3.Verilog实现

4.测试结果


       AM(Amplitude Modulation,幅度调制)是一种经典的模拟调制技术,通过载波信号的幅度变化来携带信息。在基于FPGA(Field-Programmable Gate Array)的实现中,AM信号的调制解调过程可以通过数字信号处理技术完成,这不仅提高了系统的灵活性和可靠性,还允许在硬件上实现更复杂的调制解调算法。AM调制解调过程涉及信号的幅度变化及恢复。通过调制,基带信号的信息被编码进载波的幅度中;而解调则是这一过程的逆向操作,通过提取载波幅度的变化来恢复原始信号。在数字领域,这一过程通过采样、量化、数字信号处理技术实现,提高了系统的稳定性和灵活性。尽管AM技术较为古老,但因其简单和对设备要求较低,仍被广泛应用于特定的通信场景中。

1.AM调制原理

       AM调制的基本思想是将基带信号(通常是音频信号)的幅度变化映射到高频载波信号的幅度上。调制信号m(t)通常限制在[-1, 1]范围内,载波信号为c(t)=Ac​cos(2πfc​t),其中Ac​是载波幅度,fc​是载波频率。AM信号s(t)可以表示为:

这里,ka​是调制指数,表示基带信号幅度变化对载波幅度影响的程度。

2.数字实现中的采样和量化

       在FPGA实现中,首先需要对模拟信号进行采样和量化,变为数字信号。假设采样频率为fs​,则采样后的信号可以表示为m[n]和c[n],其中n是离散时间索引。对于载波信号,可以预先生成一个正弦波表,或者实时计算。

       数字AM调制的过程可以表示为:

     

       其中,c[n]是采样后的载波信号,m[n]是基带信号的采样值。在FPGA中,这可以通过乘法器和累加器硬件单元实现,将基带信号的幅度调整值与载波幅度相加,然后与载波信号相乘得到AM调制信号。

       AM信号的解调通常采用包络检波法。在数字域中,这可以通过低通滤波器(LPF)和包络检测器实现。假设采样后的AM信号为r[n],其解调流程大致为:

3.Verilog实现

MATLAB部分:

clc;
clear;
close all;

%单位10k
fs = 6400;%被调信号采样频率64M
fc1= 100; %载波频率,1M
fc2= 100; %这个频率通过开发板上的按键进行调整频率,1M
N  = 10000;%FFT的长度
n  = 0:N-2;
t  = n/fs;
Am = 1;
A0 = 0.8;
x0 = Am*sin(2*pi*20*t);%被调信号
c1 = cos(2*pi*fc1*t);
c2 = cos(2*pi*fc2*t);
x1 = x0+A0;
x1 = awgn(x1,15,'measured');

%这个部分模拟ADC采样



figure;
subplot(311);
plot(t,x0);
title('被调信号');
axis([0 1 -2 2]);


%调制
y=c1.*x1;   
subplot(312);
plot(t,y);
axis([0 1 -2.5 2.5]);
title('已调信号')


%解调
sw=y.*c2; 
[b,a]=butter(7,0.025);
outx=filter(b,a,sw);
out=outx-A0/2;
subplot(313)
plot(t,out);
title('解调信号');
axis([0 1 1.2*min(out) 1.2*max(out)]);

FPGA部分:

`timescale 1 ns / 1 ns
module tops(
            i_clk,
				i_rst,
				i_ADC,
				i_sel,
				i_adjust1,
				i_adjust2,
			   o_ADCLK2,
            o_DACLK2,
            o_DAC
           );

input             i_clk;
input             i_rst;
input signed[9:0] i_ADC;
input             i_sel;
input             i_adjust1;					
input             i_adjust2;	
output            o_ADCLK2;
output 				o_DACLK2;					
output signed[9:0]o_DAC;				  
			  
 
			  
wire CLK2;
pllclk2	pllclk2_u(
	.areset (i_rst),
	.inclk0 (i_clk),
	.c0     (o_ADCLK2),
	.c1     (CLK2),
	.locked ()
	);
	
assign o_DACLK2 = ~CLK2;
					 
wire signed[7:0]tmps;					 
AMdemods AMdemods_u(
                .i_clk     (CLK2),
					 .i_rst     (i_rst),
					 .i_din     (i_ADC[9:2]),
					 .i_sel     (i_sel),
					 .i_adjust1 (i_adjust1),
					 .i_adjust2 (i_adjust2),
					 .o_am      (),
					 .o_dout    (tmps)
               );					 
					 
assign o_DAC = {tmps[7],tmps[7],tmps};					 
					 

endmodule 
up4119

4.测试结果

首先,使用MATLAB对AM收音机的基本功能进行验证

       上述第一个图是实际的信号,第二个图是接收到的AM调制信号,第三个AM调制信号解调之后的信号。

       综上所述,基于FPGA的AM信号调制解调通过数字信号处理技术实现了从模拟信号到数字信号的高效转换和处理。通过灵活配置硬件资源,FPGA能够提供高性能、低延迟的AM通信解决方案,适用于多种通信系统的设计与实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fpga和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值