vhdl语言写的2cpsk和2dpsk建模的一个程序中,相位相反的代码看不懂是如何产生的,求大神帮忙
library ieee;
use ieee.std_logic_arith.all;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity pskj is
port(clk:in std_logic;-- 系统时钟
start:in std_logic; --开始信号
x:in std_logic;--基带信号
y:out std_logic); --调制信号
end pskj;
architecture behav of pskj is
signal q:std_logic_vector(1 downto 0);--二进制计数器,为了产生0相和π相载波信号
signal f1,f2:std_logic;--f1为0相信号,f2为π相信号
begin
process(clk) ---此进程主要是为了产生相位相隔π的两重载波信号f1和f2
begin
if clk'event and clk='1' then
if start='0' then q<="00";
elsif q<="01" then f1<='1';f2<='0';q<=q+1;
elsif q="11" then f1<='0';f2<='1';q<="00";
else f1<='0';f2<='1';q<=q+1;
end if;
end if;
end process;
process(clk,x)
begin
if clk'event and clk='1' then
if q(0)='1' then
if x='1' then y<=f1;
else y<=f2;
end if;
end if;
end if;
end process;
end behav;