本人不定时总结个人在学习和工作中经验和心得,以及一些基本的数理知识,欢迎各位加关注和留言交流。

和“无崖子”一起练“内功”

通信系统中幅度调制的解调方法有多种,这里介绍利用数字方式实现包络检波的解调过程,通信系统把数据发送之前需要调制,接收到的信号必须解调才能恢复数据,这里以幅度调制为例其原理框图如下:

信号幅度调制过程在前面文章中简要介绍过,这里不做过多介绍,调幅信号包络解调过程如下,第一需要对信号整流,模拟信号整流需要二极管,数字整流比较简单,只需要取出信号的绝对值即可,FPGA中实现方法见下面VHDL程序。

信号整流后再经过低通滤波器,这里低通滤波采用FIR滤波器IP核,使用方法见之前所写文档,低通滤波后即可得到基带的包络信号,即信号得到解调,信号波形如下图:

信号解调后需要经过抽样判决,才能恢复出二进制数据,抽样判决程序见VHDL程序。

大家看后有没有觉得少点东西?

抽样判决程序里的门限信号为固定值,在通信系统中信号是起伏波动的,这里缺少了门限信号产生模块,门限信号可求信号均值产生,这里不再编写程序。

数字整流VHDL程序:

Library IEEE;
USE IEEE.;
USE IEEE.;
USE IEEE.;
Entity demod_AM is
port(
Clk:in std_logic;–时钟
sig_in:in std_logic_vector(25 downto 0);–时钟
demod_AM:out std_logic_vector(11 downto 0)–产生数据1路
);
end demod_AM;
architecture behave of demod_AM is
signal demod_AM_reg:std_logic_vector(25 downto 0);
begin
demod_AM<=demod_AM_reg(25 downto 14);
process(Clk,sig_in)
begin
if rising_edge(Clk) then
if sig_in(25)='1'then
demod_AM_reg<=-sig_in;
else
demod_AM_reg<=sig_in;
end if;
end if;
end process;
end behave;

抽样判决VHDL程序:

Library IEEE;
USE IEEE.;
USE IEEE.;
USE IEEE.;
Entity BASM is
port(
Clk:in std_logic;–时钟
En:in std_logic;
cnt:out std_logic_vector(7 downto 0)–产生数据1路
);
end BASM;
architecture behave of BASM is
signal cnt_reg:std_logic_vector(7 downto 0);
begin
cnt<=cnt_reg;
process(Clk,En)
begin
if rising_edge(Clk) then
if En='1' then
cnt_reg<=cnt_reg+"1";
else
cnt_reg<=(others=>'0');
end if;
end if;
end process;
end behave;

相关推荐