Étape 8: Module principal
C’est où il vient tous ensemble. Comme vous pouvez le voir, il y a 5 pâtés de maisons dans le schéma qui correspondent aux 5 modules de notre conception. Les entrées d’une horloge, un signal enable et 3 interrupteurs correspondent aux sorties sur l’afficheur 7 segments et 7 LEDs.
Les deux premiers modules que les signaux doivent traverser sont le diviseur d’horloge et les modules de contrôle LED. L’horloge est presque identique à celle qui que nous est donné dans le laboratoire, à l’exception d’une fréquence modifiée. Cela permet le compteur à rebours de soixante secondes exactement. Le contrôle LED prend les entrées des interrupteurs et les convertit en signaux pour le compteur vers le bas à utiliser. La LED de contrôle détermine si oui ou non un signal de reset est envoyé au compteur vers le bas.
Le module bas compteur reprend le signal d’horloge révisée ainsi que de l’activer et réinitialiser les signaux et utilise ces valeurs pour faire la plupart des calculs de notre circuit. Le comptoir bas prend ces signaux et les met à travers un circuit comportemental. Les sorties de l’entrée vers le bas compteur dans les sept segment affichage et le décodeur LED.
La sortie du compteur vers le bas détermine ce qui est afficher sur l’afficheur 7 segments, tels que s’il est remis à zéro à 60 secondes ou si elle compte à rebours. Le compteur vers le bas aussi émet des signaux vers le décodeur de LED, qui décide combien de LEDs reposent sur les signaux,
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
--Nous avons ajouté deux zéros dans l’avant afin de connecter avec le segment 8 bit sept module d’affichage. c_temp(6) < = « 0 » ; c_temp(7) < = « 0 » ; afficher : sseg_dec Port Map (CLK = > clk, valide = > signe « 1 », = > « 0 », SEGMENTS = > SEG, DISP_EN = > un, ALU_VAL = > c_temp) ; d: contrer Port Map (fr = > fr, reset = > s_reset, Q = > clk (5 downto 0), c_temp = > s_clk, en LED_ = > s_en) ; horloge : clk_div2 Port Map (sclk = > s_clk, clk = > CLK) ; contrôle : LED_ctrl Port Map (sw = > SW, Reset = > s_reset) ; décodeur : LED_dec Port Map (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;