Exercício 3.10.5 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
ENTITY priord_1
IS ![]() PORT (p0, p1, p2, p3 : IN BIT; int, x1,x0 : OUT BIT); END priord_1; ARCHITECTURE teste OF priord_1 IS SIGNAL p : BIT_VECTOR (0 TO 3); SIGNAL x : BIT_VECTOR (2 DOWNTO 0); BEGIN p <= p0 & p1 & p2 & p3; int <= x(2); x1 <= x(1); x0 <= x(0); WITH p SELECT -- localmente estatica x <= "100" WHEN "1111"|"1110"|"1101"|"1100"|"1011"|"1010"|"1001"|"1000", -- p=1--- "101" WHEN "0111"|"0110"|"0101"|"0100", -- p=01-- "110" WHEN "0011"|"0010", -- p=001- "111" WHEN "0001", -- p=0001 "011" WHEN "0000"; -- p=0000 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 |
ENTITY bcd_mpx 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_mpx; ARCHITECTURE comb OF bcd_mpx IS BEGIN sel_mostrador: BLOCK -- selecao de um dos 4 mostradores BEGIN -- 0 aciona mostrador mst <= "0111" WHEN sel= "00" ELSE "1011" WHEN sel= "01" ELSE "1101" WHEN sel= "10" ELSE "1110"; END BLOCK sel_mostrador; bcd_p_7: BLOCK -- converte codigo BCD para 7 segmentos BEGIN -- 1 liga segmento -- abcdefg sgm <= "1111110" WHEN bcd= "0000" ELSE -- ----- "1100000" WHEN bcd= "0001" ELSE -- | f | "1011010" WHEN bcd= "0010" ELSE -- e | | a "1110011" WHEN bcd= "0011" ELSE -- ------ "1100101" WHEN bcd= "0100" ELSE -- | g | "0110111" WHEN bcd= "0101" ELSE -- d | | b "0111111" WHEN bcd= "0110" ELSE -- ------ "1100010" WHEN bcd= "0111" ELSE -- c "1111111" WHEN bcd= "1000" ELSE "1110111" WHEN bcd= "1001" ELSE "0000000"; END BLOCK bcd_p_7; END comb; |