ASK调制VHDL程序及仿真程序
1. ASK调制VHDL程序
--文件名:PL_ASK
--功能:基于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 PL_ASK is
port(clk :in std_logic; --系统时钟
start :in std_logic; --开始调制信号
x :in std_logic; --基带信号
y :out std_logic); --调制信号
end PL_ASK;
architecture behav of PL_ASK is
signal 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; --改变q后面数字的大小,就可以改变载波信号的占空比
elsif q=3 then f<='0';q<=0; --改变q后面数字的大小,就可以改变载波信号的频率
else f<='0';q<=q+1;
end if;
end if;
end process;
y<=x and f; --对基带码进行调制
end behav;
2. ASK调制VHDL程序仿真图及注释
ASK调制VHDL程序仿真图及注释如图8.9.7所示。
(a)ASK调制仿真全图
注:a.基带码长等于载波f的6个周期。
b. 输出的调制信号y滞后于输入基带信号x一个clk时间。
(b)ASK调制仿真局部放大图
图8.9.7 ASK调制VHDL程序仿真图及注释
8.9.6 ASK解调VHDL程序及仿真
1.ASK解调VHDL程序
--文件名:PL_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 PL_ASK2 is
port(clk :in std_logic; --系统时钟
start :in std_logic; --同步信号
x :in std_logic; --调制信号
y :out std_logic); --基带信号
end PL_ASK2;
architecture behav of PL_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分频,
begin
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 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 if;
end process;
end behav;
2.ASK程序解调仿真图及注释
ASK程序解调仿真图及注释如图8.9. 10所示。
(a)ASK解调仿真全图
注:a.在q=11时,m清零。
b.在q=10时,根据m的大小,进行对输出基带信号y的电平的判决。
c.在q为其它时,m计xx(x信号的寄存器)的脉冲数。
d. 输出的基带信号y滞后输入的调制信号x 10个clk。
(b)ASK解调仿真局部放大图
图8.9.10 ASK程序解调仿真图及注释959
ASK调制VHDL程序及仿真程序下载如图片无法显示或论文不完整,请联系qq752018766