Stap 8: Belangrijkste Module
Dit is waar het komt allemaal samen. Zoals u zien kunt, zijn er 5 blokken in het schema die correspondeert met de 5 modules van ons ontwerp. De ingangen van een klok, een signaal inschakelen en 3 schakelaars overeen met uitgangen op de zeven segment display en 7 LEDs.
De eerste twee modules die de signalen moeten doorlopen zijn de scheidingslijn van de klok en de LED controlemodules. De klok is bijna identiek aan degene die we in lab, met uitzondering van een gewijzigde frequentie krijgen. Hierdoor is de teller af te tellen vanaf zestig seconden nauwkeurig. De LED control neemt de ingangen van de schakelopties en omgezet in signalen voor de teller neer te gebruiken. De LED Control bepaalt of een reset-signaal wordt verzonden naar de balie naar beneden.
De Down Counter module neemt het herziene kloksignaal samen met inschakelen en reset signalen en gebruikt deze waarden om te doen de meeste van de berekeningen in onze schakeling. De Down-teller neemt van deze signalen en zet ze via een gedrags circuit. De uitgangen van de inbreng van de Down-teller in de zeven segment display en de LED-Decoder.
De output van de Down-teller bepaalt wat is display op het 7 segment display, zoals wel of niet wordt het opnieuw ingesteld op 60 seconden of als het is aftellen. De Down-teller uitgangen ook signalen naar de decoder LED, die hoeveel LEDs zijn beslist op op basis van de signalen,
entity sixty_sec_counter is Port ( SW: in STD_LOGIC_VECTOR (2 downto 0); CLK, EN: in STD_LOGIC; SEG : out STD_LOGIC_VECTOR (7 downto 0); AN : out STD_LOGIC_VECTOR (3 downto 0); LED_EN : out STD_LOGIC_VECTOR (6 downto 0)); end sixty_sec_counter;
architecture Behavioral of sixty_sec_counter is component clk_div2 Port (clk : in std_logic; sclk : out std_logic); end component clk_div2;
component counter Port(en, reset, clk : in std_logic; LED_en: out std_logic; Q : out std_logic_vector(5 downto 0)); end component counter;
component sseg_dec Port (ALU_VAL : in std_logic_vector(7 downto 0); SIGN : in std_logic; VALID : in std_logic; CLK : in std_logic; DISP_EN : out std_logic_vector(3 downto 0); SEGMENTS : out std_logic_vector(7 downto 0)); end component sseg_dec; component LED_ctrl Port ( sw : in STD_LOGIC_VECTOR (2 downto 0); Reset : out STD_LOGIC); end component LED_ctrl; component LED_dec Port ( LED_en : in STD_LOGIC; sw : in STD_LOGIC_VECTOR (2 downto 0); ppl : out STD_LOGIC_VECTOR (6 downto 0)); end component LED_dec; signal c_temp: std_logic_vector (7 downto 0); signal s_clk: std_logic; signal s_reset: std_logic; signal s_en: std_logic; begin
--we toegevoegd twee nullen in de voorkant om verbinding te maken met de 8 bit 7-segment display module. c_temp(6) < = "0"; c_temp(7) < = "0"; weergeven: sseg_dec poort kaart (CLK = > clk, geldig = > '1', SIGN = > '0', segmenten = > SEG, DISP_EN = > AN, ALU_VAL = > c_temp); d: counter Port kaart (nl = > nl, reset = > s_reset, Q = > c_temp (5 downto 0), clk = > s_clk, LED_ nl = > s_en); klok: kaart van de clk_div2 Port (sclk = > s_clk, clk = > CLK); controle: LED_ctrl poort kaart (sw = > SW, Reset = > s_reset); decoder: LED_dec poort kaart (LED_en = > s_en, sw = > SW, ppl = > LED_EN); --we added two zeros in the front in order to connect it with the 8 bit seven segment display module. c_temp(6) <= '0'; c_temp(7) <= '0'; display: sseg_dec Port Map (CLK => clk, VALID => '1', SIGN => '0', SEGMENTS => SEG, DISP_EN = > AN, ALU_VAL => c_temp); d: counter Port Map (en => EN, reset => s_reset , Q => c_temp(5 downto 0), clk => s_clk, LED_ en => s_en ); clock: clk_div2 Port Map (sclk => s_clk, clk => CLK); control: LED_ctrl Port Map (sw => SW, Reset => s_reset); decoder: LED_dec Port Map (LED_en => s_en, sw => SW, ppl => LED_EN); end Behavioral;