📄 statuscontrol.vhd
字号:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY STATUSCONTROL IS
PORT( CLK:IN STD_LOGIC;
STATU:IN STD_LOGIC_VECTOR(2 DOWNTO 0);
NCOOUT:IN STD_LOGIC_VECTOR(9 DOWNTO 0);
PSK_IN:IN STD_LOGIC_VECTOR(15 DOWNTO 0);
FM_IN:IN STD_LOGIC_VECTOR(23 DOWNTO 0);
FSK_IN:IN STD_LOGIC_VECTOR(23 DOWNTO 0);
FRE,FREZ:IN STD_LOGIC_VECTOR(31 DOWNTO 0);
EN_FB,EN_SJB,EN_SIN,EN_AM,EN_FM,EN_ASK,EN_FSK,EN_PSK:OUT STD_LOGIC;
FRE5:OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
FRE7:OUT STD_LOGIC_VECTOR(23 DOWNTO 0);
PHAIN:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);
FRE_FM,FRE_AM:OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
SININ,ASKIN,AMIN:OUT STD_LOGIC_VECTOR(9 DOWNTO 0)
);
END ENTITY;
ARCHITECTURE MEALYMACHINE OF STATUSCONTROL IS
TYPE STATUS IS(SINE,AM,FM,ASK,FSK,PSK);
SIGNAL STATE:STATUS;
BEGIN
PROCESS(CLK)
BEGIN
IF CLK'EVENT AND CLK='1' THEN
CASE STATU IS
WHEN "000"=>
FRE5<=FRE;
FRE7<="000000000000000000000000";
PHAIN<="0000000000000000";
FRE_FM<="00000000000000000000000000000000";
FRE_AM<="00000000000000000000000000000000";
SININ<=NCOOUT;
AMIN<="0000000000";
ASKIN<="0000000000";
EN_SIN<='1';
EN_AM<='0';
EN_FM<='0';
EN_ASK<='0';
EN_PSK<='0';
EN_FSK<='0';
EN_FB<='0';
EN_SJB<='0';
WHEN "001"=>
FRE5<=FRE;
FRE7<="000000000000000000000000";
PHAIN<="0000000000000000";
FRE_FM<="00000000000000000000000000000000";
FRE_AM<=FREZ;
SININ<="0000000000";
AMIN<=NCOOUT;
ASKIN<="0000000000";
EN_SIN<='1';
EN_AM<='1';
EN_FM<='0';
EN_ASK<='0';
EN_PSK<='0';
EN_FSK<='0';
EN_FB<='0';
EN_SJB<='0';
WHEN "010"=>
FRE5<=FRE;
FRE7<=FM_IN;
PHAIN<="0000000000000000";
FRE_FM<=FREZ;
FRE_AM<="00000000000000000000000000000000";
SININ<=NCOOUT;
AMIN<="0000000000";
ASKIN<="0000000000";
EN_SIN<='1';
EN_AM<='0';
EN_FM<='1';
EN_ASK<='0';
EN_PSK<='0';
EN_FSK<='0';
EN_FB<='0';
EN_SJB<='0';
WHEN "011"=>
FRE5<=FRE;
FRE7<="000000000000000000000000";
PHAIN<="0000000000000000";
FRE_FM<="00000000000000000000000000000000";
FRE_AM<="00000000000000000000000000000000";
SININ<="0000000000";
AMIN<="0000000000";
ASKIN<=NCOOUT;
EN_SIN<='1';
EN_AM<='0';
EN_FM<='0';
EN_ASK<='1';
EN_PSK<='0';
EN_FSK<='0';
EN_FB<='0';
EN_SJB<='0';
WHEN "100"=>
FRE5<=FRE;
FRE7<="000000000000000000000000";
PHAIN<=PSK_IN;
FRE_FM<="00000000000000000000000000000000";
FRE_AM<="00000000000000000000000000000000";
SININ<=NCOOUT;
AMIN<="0000000000";
ASKIN<="0000000000";
EN_SIN<='1';
EN_AM<='0';
EN_FM<='0';
EN_ASK<='0';
EN_PSK<='1';
EN_FSK<='0';
EN_FB<='0';
EN_SJB<='0';
WHEN "101"=>
FRE5<=FRE;
FRE7<=FSK_IN;
PHAIN<="0000000000000000";
FRE_FM<="00000000000000000000000000000000";
FRE_AM<="00000000000000000000000000000000";
SININ<=NCOOUT;
AMIN<="0000000000";
ASKIN<="0000000000";
EN_SIN<='1';
EN_AM<='0';
EN_FM<='0';
EN_ASK<='0';
EN_PSK<='0';
EN_FSK<='1';
EN_FB<='0';
EN_SJB<='0';
WHEN "110"=>
FRE5<="00000000000000000000000000000000";
FRE7<="000000000000000000000000";
PHAIN<="0000000000000000";
FRE_FM<="00000000000000000000000000000000";
FRE_AM<="00000000000000000000000000000000";
SININ<="0000000000";
AMIN<="0000000000";
ASKIN<="0000000000";
EN_SIN<='0';
EN_AM<='0';
EN_FM<='0';
EN_ASK<='0';
EN_PSK<='0';
EN_FSK<='0';
EN_FB<='1';
EN_SJB<='0';
WHEN "111"=>
FRE5<="00000000000000000000000000000000";
FRE7<="000000000000000000000000";
PHAIN<="0000000000000000";
FRE_FM<="00000000000000000000000000000000";
FRE_AM<="00000000000000000000000000000000";
SININ<="0000000000";
AMIN<="0000000000";
ASKIN<="0000000000";
EN_SIN<='0';
EN_AM<='0';
EN_FM<='0';
EN_ASK<='0';
EN_PSK<='0';
EN_FSK<='0';
EN_FB<='0';
EN_SJB<='1';
END CASE;
END IF;
END PROCESS;
END MEALYMACHINE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -