O
Opel_Corsa
Guest
Mám kód pro FSM:
Kód:
Knihovna IEEE;
použití ieee.std_logic_1164.all;
použití ieee.std_logic_arith.all;subjektu FSM je
port (
klíč: v std_logic_vector (3 downto 0); - tlačítko vypínače
sw: v std_logic_vector (8 downto 0); - slide spínače
ledg: z std_logic_vector (7 downto 0); - zelená LED (možná budete chtít použít
- Toto pro zobrazení aktuálního stavu)
lcd_rw: z std_logic - R / W řídicí signál pro LCD
lcd_en: z std_logic - Povolit řídicí signál pro LCD
lcd_rs: z std_logic - Ať už jste či nejste odeslání pokynu nebo znak
lcd_on: z std_logic - slouží k zapnutí LCD
lcd_blon: z std_logic - slouží k zapnutí podsvícení
lcd_data: z std_logic_vector (7 downto 0)); - používá se pro odesílání pokyny nebo znaky
konec FSM;Architektura chování FSM je
Typ state_type je (M, O, S, T, a);
signálu y: state_type;
začít
lcd_blon <= '1 '; - podsvícení je vždy na
lcd_on <= '1 '; - LCD je vždy na
lcd_en <= klíč (0), - připojení hodiny na lcd_en vstupní
ledg (0) <= klíč (0) - poslat celý den, aby zelené světlo, které vám pomohou ladění
lcd_rw <= '0 '; - vždy písemně LCD[Color = red] proces (key) [/ color]
začít
if (klíč (3) = '0 '), pak - reset LCD
lcd_rs <= '0 '; - pošlete návod
lcd_data <= "00111000", - připravovat LCD
lcd_data <= "00111000";
lcd_data <= "00001100";
lcd_data <= "00000001";
lcd_data <= "00000110";
lcd_data <= "10000000";
elsif (klíč (3) = 1 '), pak
lcd_rs <= '1 '; - pošlete znaků
if (klíč (0) 'akce a klíč (0) = 1'), pak
y <= M;
případě, y je
kdy M => if (SW (0) = '0 '), pak
y <= O;
elsif (SW (0) = 1 '), pak
y <=;
end if;
když o => if (SW (0) = '0 '), pak
y <= s;
elsif (SW (0) = 1 '), pak
y <= M;
end if;
když s => if (SW (0) = '0 '), pak
y <= t;
elsif (SW (0) = 1 '), pak
y <= O;
end if;
když t => if (SW (0) = '0 '), pak
y <=;
elsif (SW (0) = 1 '), pak
y <= s;
end if;
při a => if (SW (0) = '0 '), pak
y <= M;
elsif (SW (0) = 1 '), pak
y <= t;
end if;
konec případu;
end if;
end if;
ukončení procesu;s Y vybrat
lcd_data <= "01001101", když M, - display M
"01101111", když o, - displej o
"01110011", když s, - displej s
"01110100", když t, - display t
"01100001", když - displejkonec chování;
Kód:
Knihovna IEEE;
použití ieee.std_logic_1164.all;
použití ieee.std_logic_arith.all;subjektu FSM je
port (
klíč: v std_logic_vector (3 downto 0); - tlačítko vypínače
sw: v std_logic_vector (8 downto 0); - slide spínače
ledg: z std_logic_vector (7 downto 0); - zelená LED (možná budete chtít použít
- Toto pro zobrazení aktuálního stavu)
lcd_rw: z std_logic - R / W řídicí signál pro LCD
lcd_en: z std_logic - Povolit řídicí signál pro LCD
lcd_rs: z std_logic - Ať už jste či nejste odeslání pokynu nebo znak
lcd_on: z std_logic - slouží k zapnutí LCD
lcd_blon: z std_logic - slouží k zapnutí podsvícení
lcd_data: z std_logic_vector (7 downto 0)); - používá se pro odesílání pokyny nebo znaky
konec FSM;Architektura chování FSM je
Typ state_type je (M, O, S, T, a);
signálu y: state_type;
začít
lcd_blon <= '1 '; - podsvícení je vždy na
lcd_on <= '1 '; - LCD je vždy na
lcd_en <= klíč (0), - připojení hodiny na lcd_en vstupní
ledg (0) <= klíč (0) - poslat celý den, aby zelené světlo, které vám pomohou ladění
lcd_rw <= '0 '; - vždy písemně LCD[Color = red] proces (key) [/ color]
začít
if (klíč (3) = '0 '), pak - reset LCD
lcd_rs <= '0 '; - pošlete návod
lcd_data <= "00111000", - připravovat LCD
lcd_data <= "00111000";
lcd_data <= "00001100";
lcd_data <= "00000001";
lcd_data <= "00000110";
lcd_data <= "10000000";
elsif (klíč (3) = 1 '), pak
lcd_rs <= '1 '; - pošlete znaků
if (klíč (0) 'akce a klíč (0) = 1'), pak
y <= M;
případě, y je
kdy M => if (SW (0) = '0 '), pak
y <= O;
elsif (SW (0) = 1 '), pak
y <=;
end if;
když o => if (SW (0) = '0 '), pak
y <= s;
elsif (SW (0) = 1 '), pak
y <= M;
end if;
když s => if (SW (0) = '0 '), pak
y <= t;
elsif (SW (0) = 1 '), pak
y <= O;
end if;
když t => if (SW (0) = '0 '), pak
y <=;
elsif (SW (0) = 1 '), pak
y <= s;
end if;
při a => if (SW (0) = '0 '), pak
y <= M;
elsif (SW (0) = 1 '), pak
y <= t;
end if;
konec případu;
end if;
end if;
ukončení procesu;s Y vybrat
lcd_data <= "01001101", když M, - display M
"01101111", když o, - displej o
"01110011", když s, - displej s
"01110100", když t, - display t
"01100001", když - displejkonec chování;