LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.all;
USE IEEE.std_logic_unsigned.all;
USE IEEE.std_logic_arith.all;
ENTITY PSKFSK IS
PORT(CLOCK:IN STD_LOGIC; --正弦波发生器时钟
MODE:IN STD_LOGIC; --0:FSK;1:PSK
CLK240: buffer STD_LOGIC; --用于产生一个 2.4kHz 的正弦波信号
CLK120: buffer STD_LOGIC; --用于产生一个 1.2kHz 的正弦波信号
VALUE: out std_logic_vector (7 DOWNTO 0); --正弦波的采样点峰值
M_CODE:BUFFER STD_LOGIC); --输出 m 序列
END PSKFSK;
ARCHITECTURE PSKFSK_ARCH OF PSKFSK IS
SIGNAL COUNT100:INTEGER RANGE 0 TO 99; --记录 100 个状态
SIGNAL COUNT50: INTEGER RANGE 0 TO 49; --记录 50 个状态
SIGNAL COUNT: INTEGER RANGE 1 TO 10; --记录 10 个状态,实现 12M
分频到 240kHz 得到 CLK240 时钟信号
SIGNAL SINCLK,CODERATE: STD_LOGIC; --正弦波信号的频率以及
随机序列的编码速率
SIGNAL TEMP,JUMP_HIGH,JUMP_LOW: STD_LOGIC; --0,1 跳变标志
SIGNAL M: std_logic_vector (2 DOWNTO 0); --m 序列
-------------------------------------------------------------------
-------------------------------------------------------------------
BEGIN
PROCESS(CLOCK) --分频为 240KHz 的 CLK240 信号
BEGIN
IF (CLOCK'EVENT AND CLOCK = '1') THEN
IF (COUNT = 10) THEN
COUNT<=1; --计数满时计数回复初值
CLK240<=NOT CLK240; --输出时钟翻转一次
ELSIF (COUNT=5) THEN
COUNT<=COUNT+1;
CLK240 <= NOT CLK240;--输出时钟翻转一次
ELSE COUNT<=COUNT+1;
END IF;
END IF;
END PROCESS;
PROCESS(CLK240) --分频为 120KHz 的 CLK120 信号
BEGIN
IF (CLK240'EVENT AND CLK240 = '1') THEN