VHDL Conversione da enumerated a std_logic_vector
Ciao a tutti!
Ho un problema che mi assilla e non riesco a risolvere. Ho descritto una macchina a stati in questo modo:
Avrei bisogno di portare in uscita il present state codificato su std_logic_vector. Esiste una funzione di conversione che lo faccia? Altrimenti è possibile estrarre in qualche modo dalla macchina a stati il signal in ingresso ai vari flip flop che la compongono?
Grazie, buon weekend a tutti
Ho un problema che mi assilla e non riesco a risolvere. Ho descritto una macchina a stati in questo modo:
- Codice: Seleziona tutto
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.numeric_std.all;
ENTITY sequence_2proc_fsm IS
PORT( w : IN std_logic;
clk, rstn : IN std_logic;
state :OUT std_logic_vector(8 downto 0);
z : OUT std_logic);
END sequence_2proc_fsm;
ARCHITECTURE behavioural OF sequence_2proc_fsm IS
TYPE state_type IS (A,B,C,D,E,F,G,H,I);
SIGNAL ps, ns : state_type; -- ps: present state, ns= next state
BEGIN
state_process: PROCESS(w, ps)
BEGIN
CASE ps IS
WHEN A => IF w = '0' THEN ns <= B;
ELSE ns <= F;
END IF;
WHEN B => IF w = '0' THEN ns <= C;
ELSE ns <= F;
END IF;
WHEN C => IF w = '0' THEN ns <= D;
ELSE ns <= F;
END IF;
WHEN D => IF w = '0' THEN ns <= E;
ELSE ns <= F;
END IF;
WHEN E => IF w = '0' THEN ns <= E;
ELSE ns <= F;
END IF;
WHEN F => IF w = '0' THEN ns <= B;
ELSE ns <= G;
END IF;
WHEN G => IF w = '0' THEN ns <= B;
ELSE ns <= H;
END IF;
WHEN H => IF w = '0' THEN ns <= B;
ELSE ns <= I;
END IF;
WHEN I => IF w = '0' THEN ns <= B;
ELSE ns <= I;
END IF;
WHEN OTHERS => ns <= A;
END CASE;
END PROCESS;
state_update: PROCESS(clk)
BEGIN
IF clk'EVENT AND clk = '1' THEN
IF rstn = '0' THEN
ps <= A;
ELSE
ps <= ns;
END IF;
END IF;
END PROCESS;
z <= '1' WHEN ps = E OR ps = I ELSE '0';
state <= ps; -- conversione??? state è di tipo std_logic_vector
END behavioural;
Avrei bisogno di portare in uscita il present state codificato su std_logic_vector. Esiste una funzione di conversione che lo faccia? Altrimenti è possibile estrarre in qualche modo dalla macchina a stati il signal in ingresso ai vari flip flop che la compongono?
Grazie, buon weekend a tutti