Exercício 4.9.2 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
ENTITY certo1 IS![]() PORT (a, b : IN BIT; c : IN BOOLEAN; x, y, z, k : OUT BIT); END certo1; ARCHITECTURE teste OF certo1 IS BEGIN abc: PROCESS (a, b, c) BEGIN -- IF a THEN x <= '1'; -- resultado da expressao nao e' boolean -- END IF; IF a = '1' THEN x <= '1'; -- correto resultado da expressao boolean END IF; IF c THEN z <= '1'; -- correto c tipo boolean END IF; -- IF a AND b = '1' THEN y <= '0'; -- expresao dubia -- END IF; IF (a AND b) = '1' THEN y <= '0'; END IF; IF c AND b = '1' THEN k <= '1'; -- equivale c=TRUE AND b='1' END IF; END PROCESS abc; END teste; |
|
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
ENTITY bcd_mps IS
![]() PORT (bcd : IN BIT_VECTOR(3 DOWNTO 0); -- entrada BCD sel : IN BIT_VECTOR(1 DOWNTO 0); -- selecao mostrador sgm : OUT BIT_VECTOR(6 DOWNTO 0); -- 7 segmentos mst : OUT BIT_VECTOR(3 DOWNTO 0)); -- segmento comum mostrador END bcd_mps; ARCHITECTURE comb OF bcd_mps IS BEGIN sel_mostrador: PROCESS(sel) -- selecao de um dos 4 mostradores BEGIN -- 0 aciona mostrador CASE sel IS WHEN "00" => mst <= "0111"; WHEN "01" => mst <= "1011"; WHEN "10" => mst <= "1101"; WHEN OTHERS => mst <= "1110"; END CASE; END PROCESS; bcd_p_7: PROCESS (bcd) -- converte codigo BCD para 7 segmentos BEGIN -- 1 liga segmento CASE bcd IS -- abcdefg WHEN "0000" => sgm <= "1111110"; -- ----- WHEN "0001" => sgm <= "1100000"; -- | f | WHEN "0010" => sgm <= "1011010"; -- e | | a WHEN "0011" => sgm <= "1110011"; -- ------ WHEN "0100" => sgm <= "1100101"; -- | g | WHEN "0101" => sgm <= "0110111"; -- d | | b WHEN "0110" => sgm <= "0111111"; -- ------ WHEN "0111" => sgm <= "1100010"; -- c WHEN "1000" => sgm <= "1111111"; WHEN "1001" => sgm <= "1110111"; WHEN OTHERS => sgm <= "0000000"; END CASE; END PROCESS; END comb; |