es sobre a implementao de programas nas Linguagens de Descrio de Hardware (HDLs). Vocs podem enviar a soluo dos problemas em um nico arquivo DOC ou PDF. Uma boa atividade a todos. Prof. Cludio Faria. Questo 1 1 ponto Escreva o cdigo HDL na linguagem de sua escolha (VHDL ou AHDL) que ir produzir as seguintes funes de sada: X = AB Y=A+B Z = A + BC Obs: para A + B leia-se A OU B. Para AB leia-se A E B
Soluo em AHDL
SUBDESIGN questao_1_ahdl ( a, b, c :INPUT; s, y, z :OUTPUT; ) VARIABLE var BEGIN s= y= var = z= END; a & b; a # b; b & c; a # var; :NODE; SIGNAL var BEGIN
Soluo em VHDL
ENTITY questao_1_vhdl IS PORT ( a, b, c :IN BIT; s, y, z :OUT BIT); END questao_1_vhdl; ARCHITECTURE portas OF questao_1_vhdl IS :BIT;
s <= a AND b; y <= a OR b; var <= b AND c; z <= a OR var; END portas;
Questo 2 - 1 ponto Implemente um circuito multiplexador de 4 (quatro) entradas e 1 (uma) sada usando uma das Linguagens de Descrio de Hardware apresentadas na unidade 4.
Soluo em AHDL
Soluo em VHDL
SUBDESIGN multiplexador_ahdl ENTITY multiplexador_vhdl IS ( PORT ( ch0[3..0], ch1[3..0], ch2[3..0], ch3[3..0] :INPUT; ch0, ch1, ch2, ch3 :IN BIT_VECTOR (3 DOWNTO 0 ); s[1..0] :INPUT; s :IN INTEGER RANGE 0 TO 3; dout[3..0] :OUTPUT; dout :OUT BIT_VECTOR (3 DOWNTO 0)); ) END multiplexador_vhdl; BEGIN CASE s[] IS WHEN 0 => dout[] = ch0[]; WHEN 1 => dout[] = ch1[]; WHEN 2 => dout[] = ch2[]; WHEN 3 => dout[] = ch3[]; END CASE; END; ARCHITECTURE seleciona OF multiplexador_vhdl IS BEGIN WITH s SELECT dout <= ch0 WHEN 0, ch1 WHEN 1, ch2 WHEN 2, ch3 WHEN 3; END seleciona;
Questo 3 - 3 ponto Um detector de moedas em uma mquina automtica aceita moedas de R$ 0.10, R$ 0.25 e R$ 0.50. A passagem de uma moeda pelo sensor ativa um sinal especfico do sensor, de forma que, a moeda de R$ 0.10 ativa o sinal A, a moeda de R$ 0.25 ativa o sinal B e a moeda de R$ 0.50 ativa o sinal C, tal como mostrado na figura abaixo.
Sabendo que fisicamente impossvel mltiplas moedas passarem ao mesmo tempo sobre o sensor. Escreva o cdigo HDL de um circuito digital para este sensor, de forma a produzir um nmero binrio representando o valor da moeda EM CENTAVOS.
Soluo em AHDL
SUBDESIGN detector_moedas_adhl ( moeda[2..0] :INPUT; centavos[5..0] :OUTPUT; )
Soluo em VHDL
ENTITY detector_moedas_vhdl IS PORT ( moeda : IN BIT_VECTOR(2 DOWNTO 0); centavos : OUT BIT_VECTOR(5 DOWNTO 0)); END detector_moedas_vhdl;
BEGIN ARCHITECTURE seleciona OF detector_moedas_vhdl IS CASE moeda[] IS WHEN b"001" => centavos[] = b"001010"; BEGIN WHEN b"010" => centavos[] = b"011001"; centavos <= "001010" WHEN moeda = "001" ELSE WHEN b"100" => centavos[] = b"110010"; "011001" WHEN moeda = "010" ELSE END CASE; "110010" WHEN moeda = "100"; END; END seleciona;