Buscar

Relatório 5 - 03-10-14 - Comandos Sequenciais

Prévia do material em texto

Universidade Estadual de Campinas 
Faculdade de Tecnologia 
TT-411 Circuitos Digitais 2 
 
Wellington Renan Gonçalves 
 
Relatório 5 
 
Aula 5 
Comando Process (sequencial) 
Introdução à Apostila 4 
 
Atividades de laboratório 
1. Explique e dê exemplos, do uso do comando Process. 
Processos são objetos que executam programas sequenciais e podem ser usados para 
modelar os diferentes componentes de um sistema. 
 
Um processo é composto de: 
- Uma parte declarativa, que pode incluir declarações de variáveis. 
- Uma parte programa, que pode ser composta por vários tipos de instruções sequenciais. 
. IF-THEN-ELSE 
. LOOP 
CASE 
 
Ex: 
 
LIBRARY IEEE; 
USE IEEE.STD_LOGIC_1164.ALL; 
USE IEEE.STD_LOGIC_UNSIGNED.ALL; 
 
ENTITY detecta IS 
PORT(33 
led : out bit; 
sensor1,sensor2 : in bit 
); 
END detecta; 
 
ARCHITECTURE arq_detecta OF detecta IS 
begin 
process(sensor1,sensor2) 
begin 
if(sensor1=’1’ and sensor2=’1’)then 
led<=’1’; 
else 
led<=’0’; 
end if; 
end process; 
end arq_detecta; 
 
O código acima é capaz de detectar quando dois sensores estão ativos. 
 
2 – Usando o Quartus 2 crie um MUX de 4 entradas com IF ELSE 
 
ENTITY mux_4a IS 
 PORT (i0, i1, i2, i3 : IN BIT; -- entradas 
 s0, s1 : IN BIT; -- selecao 
 ot : OUT BIT); -- saida 
END mux_4a; 
ARCHITECTURE teste OF mux_4a IS 
 SIGNAL sel : BIT_VECTOR(1 DOWNTO 0); 
BEGIN 
 sel <= s1 & s0; 
 abc: PROCESS (i0, i1, i2, i3, sel) --sinal "sel" inserido na lista 
 BEGIN 
 IF sel = "00" THEN ot <= i0; 
 ELSIF sel = "01" THEN ot <= i1; 
 ELSIF sel = "10" THEN ot <= i2; 
 ELSE ot <= i3; 
 END IF; 
 END PROCESS abc; 
END teste; 
 
 
3 – Repita o exercício anterior usndo CASE WHEN 
 
ENTITY mux_5a IS 
 PORT (i0, i1, i2, i3 : IN BIT; 
 s1, s0 : IN BIT; 
 ot : OUT BIT); 
END mux_5a; 
ARCHITECTURE teste OF mux_5a IS 
 SIGNAL sel : BIT_VECTOR(1 DOWNTO 0); 
BEGIN 
 sel <= s1 & s0; 
 abc: PROCESS (i0, i1, i2, i3, sel) --sinal "sel" inserido na lista 
 BEGIN 
 CASE sel IS 
 WHEN "00" => ot <= i0; 
 WHEN "01" => ot <= i1; 
 WHEN "10" => ot <= i2; 
 WHEN OTHERS => ot <= i3; 
 END CASE; 
 END PROCESS abc; 
END teste; 
 
 
 
4 – Explique e dê exemplos, usando Quartus 2, do comando WAIT 
O comando WAIT suspende a execução de um processo. Esta suspensão pode ser 
condicionada de três formas, ou a combinação das três. As três formas são: 
- WAIT ON – equivalente a uma lista de sensibilidade de um processo 
- WAIT UNTIL – o processo fica suspenso enquano a condição booleana contida 
no comando não for satisfeita 
- WAIT FOR – o processo é suspenso por um certo período de tempo, após este 
período retorna no comando seguinte. 
 
 
ENTITY wait_a IS 
 PORT (xa, xb : BUFFER INTEGER RANGE 0 TO 15; 
 ya, yb : BUFFER BIT); 
END wait_a; 
 
ARCHITECTURE teste OF wait_a IS 
BEGIN 
 abc: PROCESS 
 BEGIN 
 xa <= xa +1; 
 ya <= '1'; 
 WAIT FOR 30 ns; 
 ya <= '0'; 
 WAIT FOR 20 ns; 
 END PROCESS abc; 
 cde: PROCESS 
 BEGIN 
 WAIT FOR 30 ns; 
 xb <= xb +1; 
 yb <= '1'; 
 WAIT FOR 20 ns; 
 yb <= '0'; 
 END PROCESS cde; 
END teste; 
 
 
 
 
 
Conclusão: 
 
Na aula foi apresentado o comando PROCESS e foi feita uma introdução a apostila 4. 
Na primeira atividade de laboratório foi pedido que explicasse o funcionamento do comando 
PROCESS e também mostrasse um exemplo de aplicação (entidade e o que a entidade realiza). 
Na segunda atividade de laboratório foi pedido que criasse um MUX com 4 entradas utilizando IF 
ELSE, foi criado o MUX e apresentada a sua entidade logo abaixo. 
Na terceira atividade de laboratório foi pedido que criasse o mesmo MUX da atividade 2 
utilizando CASE WHEN, foi criado o MUX e a apresenta a sua entidade logo abaixo. 
Na quarta atividade de laboratório foi pedido que explicasse o funcionamento do comando WAIT 
e ainda um exemplo de uso desse comando. Foi apresentado a entidade logo abaixo, e a 
visualização da simulação da entidade. 
 
Obs: a simulação está com um print do livro porque o Quartus II parou de funcionar e não teve 
como fazer uma simulação.

Continue navegando