Výběrové chyby

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í;
 
Věřím, že děláte RTL design, kódování určené pro syntézu a tuto chybu přišel z vašeho syntézy nástroj, který nástroj používáte?
is being driven by a process
as well as a concurrent statement with select
and hence the issue.

Vaše lcd_data
je řízen procesu,
stejně jako současné prohlášení s zvolit,
a proto problém.Proč si disk z 2 místa?

Jde o
Ajeetha, CVC
www.noveldv.com

 
Kód: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";

 
Ano, máte oba pravdu.i silně ovlivněný můj kód, a teď to funguje.díky!

 

Welcome to EDABoard.com

Sponsor

Back
Top