Furyfax Skrevet 27. oktober 2005 Del Skrevet 27. oktober 2005 (endret) Har ett program som skal vise klokkeslett på LCD-display, dette er programmert i VHDL, med QUARTUS 5. Koden: LIBRARY ieee; USE ieee.std_logic_1164.ALL; use ieee.std_logic_unsigned.ALL; ENTITY lab3 IS PORT ( clk : IN STD_LOGIC; reset_disp : IN STD_LOGIC; reset_klokke : IN STD_LOGIC; q : IN STD_LOGIC_VECTOR(9 downto 0)); END lab3; ARCHITECTURE a OF lab3 IS component timer_24 is Port(clk,reset :IN std_logic; sek9,sek5,min9,min5,time9,time2 :BUFFER std_logic_vector ( 3 downto 0)); end component; component clk_div IS PORT ( clock_25Mhz : IN STD_LOGIC; clock_1MHz : OUT STD_LOGIC; clock_100KHz : OUT STD_LOGIC; clock_10KHz : OUT STD_LOGIC; clock_1KHz : OUT STD_LOGIC; clock_100Hz : OUT STD_LOGIC; clock_10Hz : OUT STD_LOGIC; clock_1Hz : OUT STD_LOGIC); END component; TYPE STATE_TYPE IS (s0,s1,s2,s3,s4,s5,s6,s7,s8,s9, s10,s11,s12,s13,s14,s15,s16, s17,s18,s19,s20,s21); SIGNAL state : STATE_TYPE; signal sek99, sek55, min99, min55, time99, time22 : std_logic_vector (3 downto 0); signal klokke : std_logic; BEGIN u1: clk_div PORT MAP (clock_25MHz => clk, clock_10Hz => klokke); u2: timer_24 port map (clk=> klokke, reset => reset_klokke, sek9 => sek99, sek5 => sek55, min9 => min99 ,min5 => min55, time9 => time99, time2 => time22); PROCESS (clk, reset) BEGIN IF reset_disp = '0' THEN state <= s0; ELSE IF clk'EVENT AND clk = '1' THEN CASE state IS WHEN s0 => s1; WHEN s1 => s2; WHEN s2 => s3; WHEN s3 => s4; WHEN s4 => s5; WHEN s5 => s6; WHEN s6 => s7; WHEN s7 => s8; WHEN s8 => s9; WHEN s9 => s10; WHEN s10 => s11; WHEN s11 => s12; WHEN s12 => s13; WHEN s13 => s14; WHEN s14 => s15; WHEN s15 => s16; WHEN s16 => s17; WHEN s17 => s18; WHEN s18 => s19; WHEN s19 => s20; WHEN s20 => s21; WHEN s21 => s13; END CASE; END IF; END PROCESS; WITH state SELECT q <= "0000111000" WHEN s0, "0000001110" WHEN S1, "0000000110" WHEN S2, "1001001011" WHEN S3, --k "1001001100" WHEN S4, --L "1001001111" WHEN S5, --O "1001001011" WHEN S6, --k "1001001011" WHEN S7, --k "1001111110" WHEN S8, --A "1001100000" WHEN S9, --SPACE/MELLOMROM "1001000101" WHEN S10, --E "1001010010" WHEN S11, --R "1000111010" WHEN s12, --: "0011000000" WHEN S13, --LINJESKIFT "100011" & time22 WHEN s14, --Time1 "100011" & time99 WHEN s15, --Time2 "1000111010" WHEN s16, --: "100011" & min55 WHEN s17, --min1 "100011" & min99 WHEN s18, --min2 "1000111010" WHEN s19, --: "100011" & sek55 WHEN s20, --sek1 "100011" & sek99 WHEN s21, --sek2 END a; Feilmeldingen ligger som vedllagt bilde. Hva er feilen?? Endret 27. oktober 2005 av Furyfax Lenke til kommentar
dayslepr Skrevet 27. oktober 2005 Del Skrevet 27. oktober 2005 ser ut til at dette språket er "type-strict" og at variblene er av typen STATE_TYPE .. og du forsøker å bruke dem som void .. må du caste først? Lenke til kommentar
Furyfax Skrevet 27. oktober 2005 Forfatter Del Skrevet 27. oktober 2005 fant ut av feilen. Hadde glemt å deklare hvilken tpe variable det var. Så måtte skrive "state" foran alle s0,s1,s2++ osv..så løste det seg! Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå