A
akrlot
Guest
Hi;
Искам да код една държавна машина с counter.there е на 10 цикъла между държавните k_fv
и k_fo (incerement couter от 0 до 9) и 15 цикъла между k_fo и k_fr и
1cycle между k_fr и k_fv.THX предварително.
Това е моят код, но ако той doesn't симулирани даде искаше result.thx
IEEE библиотека;
употреба ieee.std_logic_1164.all;
лице е feu_ctl
генерични (размер: Integer: = 15);
порт (CLK: в std_logic;
rst_n: в std_logic;
o_fv: Няма std_logic;
o_fo: Няма std_logic;
o_fr: Няма std_logic);
края feu_ctl;
ARCH архитектура на feu_ctl е
feu_state тип е (k_fv, k_fo, k_fr);
feu_fsm_d сигнал, feu_fsm_q: feu_state;
cpt_q сигнал, cpt_d: Integer;
започвам
P1: процес (CLK, rst_n)
започвам
IF (rst_n = '0 '), тогава feu_fsm_q <= k_fr;
cpt_q <= 0;
ELSIF CLK = '1 'и clk'event тогава feu_fsm_q <= feu_fsm_d;
cpt_q <= cpt_d;
крайна сметка, ако;
край процес P1;
P2: процес (feu_fsm_q, cpt_q)
започвам
ако cpt_q = размер-1 и след това cpt_d <= 0;
иначе cpt_d <= cpt_q 1;
крайна сметка, ако;
случай е feu_fsm_q
когато k_fv => o_fv <= '1 '; o_fo <= '0'; o_fr <= '0 '; feu_fsm_d <= k_fo;
когато k_fo => ако cpt_q = 10, тогава
o_fo <= '1 '; o_fr <= '0'; o_fv <= '0 '; feu_fsm_d <= k_fr; cpt_d <= 0;
крайна сметка, ако;
когато k_fr => ако cpt_q = 1 и след това
o_fr <= '1 '; o_fv <= '0'; o_fo <= '0 '; feu_fsm_d <= k_fv; cpt_d <= 0;
крайна сметка, ако;
края случай;
край процес P2;
края ARCH;
Искам да код една държавна машина с counter.there е на 10 цикъла между държавните k_fv
и k_fo (incerement couter от 0 до 9) и 15 цикъла между k_fo и k_fr и
1cycle между k_fr и k_fv.THX предварително.
Това е моят код, но ако той doesn't симулирани даде искаше result.thx
IEEE библиотека;
употреба ieee.std_logic_1164.all;
лице е feu_ctl
генерични (размер: Integer: = 15);
порт (CLK: в std_logic;
rst_n: в std_logic;
o_fv: Няма std_logic;
o_fo: Няма std_logic;
o_fr: Няма std_logic);
края feu_ctl;
ARCH архитектура на feu_ctl е
feu_state тип е (k_fv, k_fo, k_fr);
feu_fsm_d сигнал, feu_fsm_q: feu_state;
cpt_q сигнал, cpt_d: Integer;
започвам
P1: процес (CLK, rst_n)
започвам
IF (rst_n = '0 '), тогава feu_fsm_q <= k_fr;
cpt_q <= 0;
ELSIF CLK = '1 'и clk'event тогава feu_fsm_q <= feu_fsm_d;
cpt_q <= cpt_d;
крайна сметка, ако;
край процес P1;
P2: процес (feu_fsm_q, cpt_q)
започвам
ако cpt_q = размер-1 и след това cpt_d <= 0;
иначе cpt_d <= cpt_q 1;
крайна сметка, ако;
случай е feu_fsm_q
когато k_fv => o_fv <= '1 '; o_fo <= '0'; o_fr <= '0 '; feu_fsm_d <= k_fo;
когато k_fo => ако cpt_q = 10, тогава
o_fo <= '1 '; o_fr <= '0'; o_fv <= '0 '; feu_fsm_d <= k_fr; cpt_d <= 0;
крайна сметка, ако;
когато k_fr => ако cpt_q = 1 и след това
o_fr <= '1 '; o_fv <= '0'; o_fo <= '0 '; feu_fsm_d <= k_fv; cpt_d <= 0;
крайна сметка, ако;
края случай;
край процес P2;
края ARCH;