nullnull7.1 二进制振幅键控(ASK)调制器与解调器
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
7.2 二进制频移键控(FSK)调制器与解调器设计
7.3 二进制相位键控(PSK)调制器与解调器设计
7.4 UART接口设计 第7章 FPGA在通信工程中实践应用 null教学目标
教学重点
教学过程
第7章 FPGA在通信工程中实践应用null第7章 FPGA在通信工程中实践应用教学目标了解 FPGA在数据通信领域的具体应用实例
掌握用VHDL语言设计二进制振幅键控(ASK)调制器与解调器
掌握用VHDL语言设计二进制频移键控(FSK)调制器与解调器
掌握用VHDL语言设计二进制相位键控(PSK)调制器与解调器
了解用VHDL语言设计UART接口
null教学重点
掌握用VHDL语言设计二进制振幅键控(ASK)调制器与解调器
掌握用VHDL语言设计二进制频移键控(FSK)调制器与解调器
掌握用VHDL语言设计二进制相位键控(PSK)调制器与解调器
第7章 FPGA在通信工程中实践应用7.1二进制振幅键控(ASK)调制器与解调器设计 7.1二进制振幅键控(ASK)调制器与解调器设计 数字信号对载波振幅调制称为振幅键控即 ASK(Amplitude-Shift Keying)。
ASK有两种实现方法:
1.相乘电路实现法
2.键控法 1.相乘电路实现法 1.相乘电路实现法 就是用乘法器基带信号与载波信号相乘就可以得到调制信号输出。
乘法器用来进行频谱搬移,相乘后的信号通过带通滤波器滤除高频谐波和低频干扰。
带通滤波器的输出是振幅键控信号。
2.键控法 2.键控法 键控法是产生ASK信号的另一种方法。二元制ASK又称为通断控制(OOK)。最典型的实现方法是用一个电键来控制载波振荡器的输出而获得。(键控法产生ASK信号原理框图 )ASK解调方法ASK解调方法1. 同步解调法
2. 包络解调法。 1.同步解调1.同步解调接下页null(设在一个码元持续时间T内,经过带通滤波后的接收信号和噪声电压为:
其中
是一个窄带高斯过程。根据窄带随机过程的性质,我们可以得到:
接下页null经过带通滤波器后的接收电压为:
若没有噪声,上式简化为:
ASK调制VHDL程序ASK调制VHDL程序ASK调制方框图ASK调制方框图ASK调制电路符号 ASK调制电路符号 ASK调制VHDL程序ASK调制VHDL程序library ieee;
use ieee.std_logic_arith.all;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity ASK is
port( clk:in std_logic; --系统时钟
start:in std_logic; --开始调制信号
x :in std_logic; --基带信号
y :out std_logic); --调制信号
end ASK;
architecture behav of ASK is接下页nullsignal q:integer range 0 to 3; --分频计数器
signal f :std_logic; --载波信号
begin
process(clk)
begin
if clk'event and clk='1' then
if start='0' then q<=0;
elsif q<=1 then f<='1';q<=q+1;
elsif q=3 then f<='0';q<=0;
else f<='0';q<=q+1;
end if; end if;
end process;
y<=x and f; --对基带码进行调制
end behav;ASK解调电路符号 ASK解调电路符号 ASK解调VHDL程序ASK解调VHDL程序library ieee;
use ieee.std_logic_arith.all;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity ASK2 is
port(clk :in std_logic; --系统时钟
start :in std_logic; --同步信号
x :in std_logic; --调制信号
y :out std_logic); --基带信号
end ASK2;
architecture behav of ASK2 is
signal q:integer range 0 to 11; --计数器
signal xx:std_logic; --寄存x信号电路符号接下页nullsignal m:integer range 0 to 5; --计xx的脉冲数
begin
process(clk) --对系统时钟进行q分频,
begin
if clk'event and clk='1' then xx<=x;
if start='0' then q<=0; --if语句完成q的循环计数
elsif q=11 then q<=0;
else q<=q+1;
end if;
end if;
end process;接下页nullprocess(xx,q) --此进程完成ASK解调
begin
if q=11 then m<=0; --m计数器清零
elsif q=10 then
if m<=3 then y<='0
else y<='1';
end if;
elsif xx'event and xx='1'then m<=m+1; --计xx信号的脉冲个数
end if;
end process;
end behav;