VHDL код

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;

 
тук е коригирана код ....

Код:

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;

- Има 10 цикъла между държавните k_fv

- И k_fo (incerement couter от 0 до 9) и 15 цикъла между k_fo и k_fr и

- 1cycle между k_fr и k_fv.

P2: процес (feu_fsm_q, cpt_q)

започвам

ако cpt_q = размер-1 и след това

cpt_d <= 0;

в противен случай

cpt_d <= cpt_q 1;

крайна сметка, ако;случай е feu_fsm_q

когато k_fv =>

IF (cpt_q = 9), тогава

feu_fsm_d <= k_fo;

cpt_d <= 0;

крайна сметка, ако;

когато k_fo =>

IF (cpt_q = 14) след това

feu_fsm_d <= k_fr;

крайна сметка, ако;

когато k_fr =>

feu_fsm_d <= k_fv;

cpt_d <= 0;

края случай;

край процес P2;- О държавната машина / P декодер

P3: процес (feu_fsm_q)

започне - процес P3

случай е feu_fsm_q

когато k_fv =>

o_fv <= '1 ';

o_fo <= '0 ';

o_fr <= '0 ';

когато k_fo =>

o_fo <= '1 ';

o_fr <= '0 ';

o_fv <= '0 ';

когато k_fr =>

o_fr <= '1 ';

o_fv <= '0 ';

o_fo <= '0 ';

края случай;

P3 край процес;

края ARCH;
 

Welcome to EDABoard.com

Sponsor

Back
Top