8.9二进制振幅键控(ASK) 调制器与解调器设计
ASK调制方法 数字信号对载波振幅调制称为振幅键控即 ASK(Amplitude-Shift Keying)。 ASK有两种实现方法: 1.乘法器实现法 2.键控法
1.乘法器实现法 乘法器实现法的输入是随机信息序列,经过基带信号形成器,产生波形序列,乘法器用来进行频谱搬移,相乘后的信号通过带通滤波器滤除高频谐波和低频干扰。 带通滤波器的输出是振幅键控信号。 乘法器常采用环形调制器。
2.键控法 键控法是产生ASK信号的另一种方法。二元制ASK又称为通断控制(OOK)。最典型的实现方法是用一个电键来控制载波振荡器的输出而获得。 (键控法产生ASK信号原理框图 )
数字电路实现键控产生ASK信号的实例 为适应自动发送高速数据的要求,键控法中的电键可以利用各种形式的受基带信号控制的电子开关来实现,代替电键产生ASK信号,上图所示就是以数字电路实现键控产生ASK信号的实例。该电路是用基带信号控制与非门的开闭,实现ASK调制,产生 信号。
ASK解调方法有两种 1. 同步解调法 2. 包络解调法。
1.同步解调 同步解调也称相干解调, 信号经过带通滤波器抑制来自信道的带外干扰,乘法器进行频谱反向搬移,以恢复基带信号。低通滤波器用来抑制相乘器产生的高次谐波干扰。 (1)发“1”码时情况 发“1”码时,输入的ASK信号为 ,它能顺利地通过带通滤波器。 为零均值的高斯白噪声,经过带通滤波器后变为窄带高斯噪声,用 表示。经过低通滤波器后,输出信号为x(t), 也就是取样判决器的输入信号。
(2)发“0”码时情况 发“0”码时,ASK信号输入为0,噪声仍然存在,经过低通滤波器后,输出信号为x(t), x(t)也是取样判决器的输入信号。 综合上面的分析,可得
下面讨论判决问题。 若没有噪声,上式简化为 此时判决电平取0~A的中间值A/2,大于A/2判为“1”码,小于A/2判为“0”码。在无噪声时,判决一定是正确的。
2.包络解调 包络解调是一种非相干解调 (ASK包络解调方框图)
发“1”码时的情况 包络检波器的输入为,为信号加窄带高斯噪声,输出为信号加窄带高斯噪声的包络,它服从莱斯分布,如左图所示。 其概率密度为
发“0”码时的情况 包络检波器输入为 ,输出 则为的包络,即噪声的包络,它服从瑞利分布,如上页图所示。其概率密度为 包络检波器输入为 ,输出 则为的包络,即噪声的包络,它服从瑞利分布,如上页图所示。其概率密度为 与同步解调相似,为使误码率最小,判决电平应 和 的交点的横坐标值,如 图中 ,称为最佳门限,经分析,得到 当信噪比 (即大信噪比)时,
ASK调制VHDL程序及仿真
ASK调制方框图 注:图中没有包含模拟电路部分,输出信号为数字信号。
ASK调制电路符号
ASK调制VHDL程序 --文件名:ASK.vhd --功能:基于VHDL硬件描述语言,对基带信号进行ASK振幅调制 --最后修改日期:2004.3.16 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 signal q:integer range 0 to 3; --分频计数器 signal f :std_logic; --载波信号
begin process(clk) if clk'event and clk='1' then if start='0' then q<=0; elsif q<=1 then f<='1';q<=q+1; --改变q后面数字的大小,就可以改变载波信号的占空比 elsif q=3 then f<='0';q<=0; --改变q后面数字的大小,就可以改变载波信号的频率 else f<='0';q<=q+1; end if; end process; y<=x and f; --对基带码进行调制 end behav;
ASK调制VHDL程序仿真图及注释
注:a.基带码长等于载波f的6个周期。 b. 输出的调制信号y滞后于输入基带信号x一个clk时间。
ASK解调VHDL程序及仿真
ASK解调VHDL程序 --文件名:ASK2 --功能:基于VHDL硬件描述语言,对ASK调制信号进行解调 --最后修改日期:2004.2.12 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信号 signal m:integer range 0 to 5; --计xx的脉冲数 begin process(clk) --对系统时钟进行q分频, if clk'event and clk='1' then xx<=x; --clk上升沿时,把x信号赋给中间信号xx if start='0' then q<=0; --if语句完成q的循环计数 elsif q=11 then q<=0; else q<=q+1; end if; end process;
process(xx,q) --此进程完成ASK解调 begin if q=11 then m<=0; --m计数器清零 elsif q=10 then if m<=3 then y<='0';--if语句通过对m大小,来判决y输出的电平 else y<='1'; end if; elsif xx'event and xx='1'then m<=m+1; --计xx信号的脉冲个数 end process; end behav;
ASK程序解调仿真图及注释 (ASK解调仿真全图 )
(ASK解调仿真局部放大图 ) 注:a.在q=11时,m清零。 b.在q=10时,根据m的大小,对输出基带信号y的电平的进行判决。 c.在q为其它时,m计xx(x信号的寄存器)的脉冲数。 d. 输出的基带信号y滞后输入的调制信号x 10个clk。 (ASK解调仿真局部放大图 )