FPGA LED projektet (8 / 9 steg)
Steg 8: Huvudsakliga modul
Det är där allt kommer tillsammans. Som ni ser, finns det 5 block i schematiskt som motsvarar 5 modulerna i vår design. Av en klocka, en aktivera signal och 3 växlar motsvara utgångar på sju segment display och 7 lysdioder.
De två första modulerna signalerna måste gå igenom är klockan avdelare och styrmoduler LED. Klockan är nästan identisk med den vi får i labbet, med undantag för en ändrad frekvens. Detta gör att räknaren räkna ned från sextio sekunder exakt. Kontrollen LED tar ingångar av växlar och omvandlar dem till signaler för ner disken att använda. LED-reglaget bestämmer huruvida reset är en signal till ner disken.
Modulen ner Counter tar reviderade klocksignalen tillsammans med aktivera och återställa signaler och använder dessa värden för att göra det mesta av beräkningarna i vår krets. Räknaren ner tar dessa signaler och sätter dem genom en beteendevetenskaplig krets. Resultaten av ner Counter indata till sju segment display och LED dekodern.
Produktionen av räknaren ner avgör vad som visas på sju segment display, till exempel huruvida det återställs till 60 sekunder eller om det räknar ner. Räknaren ner utgångar också signaler till LED dekoder, som avgör hur många lysdioder på baseras på signaler,
enhet sixty_sec_counter är
Port (SW: i STD_LOGIC_VECTOR (2 CEN. 0);
CLK, sv: I STD_LOGIC;
SEG: Ut STD_LOGIC_VECTOR (7 CEN. 0);
AN: Ut STD_LOGIC_VECTOR (3 b 0);
LED_EN: Ut STD_LOGIC_VECTOR (6 CEN. 0));
slutet sixty_sec_counter;
arkitektur beteende av sixty_sec_counter är
komponent clk_div2 Port (clk: i std_logic;
SCLK: ut std_logic);
slutet komponent clk_div2;
komponenten counter Port (sv, reset, clk: i std_logic;
LED_en: ut std_logic;
Q: ut std_logic_vector (5 b 0));
slutet komponent counter;
komponent sseg_dec Port (ALU_VAL: i std_logic_vector (7 CEN. 0);
SIGN: i std_logic;
GÄLLER: i std_logic;
CLK: i std_logic;
DISP_EN: ut std_logic_vector (3 b 0);
SEGMENT: ut std_logic_vector (7 CEN. 0));
slutet komponent sseg_dec;
komponent LED_ctrl Port (sw: i STD_LOGIC_VECTOR (2 CEN. 0);
Reset: Ut STD_LOGIC);
slutet komponent LED_ctrl;
komponent LED_dec Port (LED_en: i STD_LOGIC;
SW: i STD_LOGIC_VECTOR (2 CEN. 0);
ppl: ut STD_LOGIC_VECTOR (6 CEN. 0));
slutet komponent LED_dec;
signal c_temp: std_logic_vector (7 CEN. 0);
signal s_clk: std_logic;
signal s_reset: std_logic;
signal s_en: std_logic;
börja
--vi lagt till två nollor i fronten för att ansluta den med 8 bitars sju segmentet Visa modul.
c_temp(6) < = "0";
c_temp(7) < = "0";
Visar: sseg_dec Port karta (CLK = > clk, giltig = > '1', SIGN = > '0', segment = > SEG, DISP_EN = > en, ALU_VAL = > c_temp);
d: motverka Port karta (sv = > sv, återställa = > s_reset, Q = > c_temp (5 b 0), clk = > s_clk, LED_ sv = > s_en);
Klocka: clk_div2 Port karta (sclk = > s_clk, clk = > CLK);
kontroll: LED_ctrl Port karta (sw = > SW, Reset = > s_reset);
dekoder: LED_dec Port karta (LED_en = > s_en, sw = > SW, ppl = > LED_EN);
slutet beteende;