图2?? MFSK调制电路方框图
? 2.2??????? MFSK调制电路VHDL程序
调制电路VHDL关键代码如下:
entity MFSK is
port(clk?????? :in std_logic;??? ????????--系统时钟
???? start???? :in std_logic;??????????? --开始调制信号
???? x?????? :in std_logic;???????????? --基带信号
???? y?????? ut std_logic);?????????? --调制信号
end MFSK;
architecture behav of MFSK is
signal q :integer range 0 to 15;?????????? --计数器
signal f :std_logic_vector(3 downto 0);??? --分频器
signal xx:std_logic_vector(1 downto 0);?? --寄存输入信号x的2位寄存器
signal yy:std_logic_vector(1 downto 0);?? --寄存xx信号的寄存器
begin
process(clk)? --此进程过对clk进行分频,得到4种载波信号f3、f2、 f1、f0。
begin
if clk'event and clk='1' then
?? if start='0' then f<="0000";
?? elsif f="1111" then f<="0000";
?? else f<=f+1;
?? end if;
end if;
end process;
process(clk)????????????? --对输入的基带信号x进行串/并转换,得到2位并行信号的yy
begin
if clk'event and clk='1' then
?? if start='0' then q<=0;
?? elsif q=0 then q<=1;xx(1)<=x;yy<=xx;
?? elsif q=8 then q<=9;xx(0)<=x;
?? else? q<=q+1;
?? end if;
end if;
end process;
process(clk,yy)????????????????????????? --此进程完成对输入基带信号x的MFSK调制
begin
if clk'event and clk='1' then
?? if start='0' then y<='0';???????????????? -- if语句完成2位码并行码到4种载波的选通
?? elsif yy="00" then y<=not f(3);
?? elsif yy="01" then y<=not f(2);
?? elsif yy="10" then y<=not f(1);
?? else? y<=not f(0);
?? end if;
end if;
end process;
end behav;
? 2.3????????? 仿真结果
MAX+PLUSII环境下的仿真结果如图3所示。