30
UNIVERSIDADE FEDERAL DE SERGIPE (UFS) CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (CCET) DEPARTAMENTO DE COMPUTAÇÃO (DCOMP) DISCIPLINA: LABORATÓRIO DE CIRCUITOS II PROFESSOR: EDWARD MORENO RELATÓRIO PRATICAS 1 E 2 MULTIPLEXADOR E DECODIFICADOR Por Flavio de Oliveira Rodrigues Diogo Teobaldo dos Santos

Relatório multiplexadores e decodificadores

Embed Size (px)

Citation preview

Page 1: Relatório multiplexadores e decodificadores

UNIVERSIDADE FEDERAL DE SERGIPE (UFS)CENTRO DE CIÊNCIAS EXATAS E

TECNOLÓGICAS (CCET)DEPARTAMENTO DE COMPUTAÇÃO (DCOMP)

DISCIPLINA: LABORATÓRIO DE CIRCUITOS II

PROFESSOR: EDWARD MORENO

RELATÓRIO PRATICAS 1 E 2MULTIPLEXADOR E DECODIFICADOR

Por

Flavio de Oliveira RodriguesDiogo Teobaldo dos Santos

Data: 30/11/2014 Prática DATA: 06/11/2014 Entrega

Page 2: Relatório multiplexadores e decodificadores

1. INTRODUÇÃO:

Este relatório descreve as práticas realizadas em laboratório nos dias 23/10 e 30/10 que tiveram por objetivo reforçar e fixar o aprendizado do conteúdo da disciplina Circuitos Digitais II ministrado em sala de aula. Foram utilizados os softwares especificados para a realização das atividades e não foram realizados experimentos em circuitos físicos.

2. DESCRIÇÃO PRINCIPAL DA ATIVIDADE

As práticas consistiram de demonstrar o funcionamento e simular os resultados gerados nos circuitos Multiplexador e Decodificador.

2.1 Multiplexador:

O circuito Multiplexador é usado para juntar (multiplexar) vários sinais de entrada e transformá-lo em um único sinal de saída. Esse sinal de saída contém os sinais de entrada que são alternados através de alguma constante - tempo e frequência, por exemplo. No caso da nossa simulação, uma variável de controle é usada para selecionar um desses sinais quando desejamos apresenta-lo.

Foram utilizados 4 sinais de entrada (x1, x2, x3, x4), uma saída (s) e uma variável do tipo vetor (sel) de 2 bits que é usada para selecionar o sinal a ser exibido na saída.

2.1.1 Metodologia aplicada:

Seguimos os seguintes passos:

Criação de um projeto em uma pasta específica para cada abordagem utilizada; Implementação do código VHDL (um código para cada abordagem); Compilação; Verificação do RTL (diagrama do circuito); Teste no simulador; Verificação dos resultados funcional e temporal.

2.1.2 Abordagens:

Foram utilizadas 4 abordagens na implementação do multiplexador. Para cada uma delas, obviamente, foi gerado um código VHDL.

a) With select:

Código fonte:

library IEEE;use IEEE.std_logic_1164.all;

Page 3: Relatório multiplexadores e decodificadores

entity multiplexador isport(x1, x2, x3, x4: IN std_logic;

sel : IN std_logic_vector(1 downto 0);s : OUT std_logic);

end entity;

architecture mux of multiplexador is begin

WITH (sel) selects <= x1 WHEN "00",x2 WHEN "01",x3 WHEN "10",x4 WHEN "11",'0' When others;

end mux;

b) CASE

Código fonte:

library IEEE;use IEEE.std_logic_1164.all;

entity multiplexador_case isport(x1, x2, x3, x4: IN std_logic;

sel : IN std_logic_vector(1 downto 0);s : OUT std_logic);

end entity;

architecture mux of multiplexador_case is begin

mux:PROCESS(sel, x1, x2, x3, x4)begin

CASE sel IS WHEN "00" => s <= x1; WHEN "01" => s <= x2; WHEN "10" => s <= x3; WHEN "11" => s <= x4; WHEN OTHERS => s <= 'X';END CASE;

end PROCESS mux;end mux;

c) IF – ELSE

Código fonte:

library IEEE;use IEEE.std_logic_1164.all;

Page 4: Relatório multiplexadores e decodificadores

entity multiplexador_if isport(x1, x2, x3, x4: IN std_logic;

sel : IN std_logic_vector(1 downto 0);s : OUT std_logic);

end entity;

architecture mux of multiplexador_if is begin

mux:PROCESS(sel, x1, x2, x3, x4)begin

IF (sel = "00") THEN s <= x1;

ELSIF (sel = "01") THEN s <= x2;

ELSIF (sel = "10") THEN s <= x3;

ELSIF (sel = "11") THEN s <= x4;

ELSE -- (s0 or s1 are not 0 or 1) s <= 'X';

END IF;end PROCESS mux;

end mux;

d) Lógico

Código fonte:

library IEEE;use IEEE.std_logic_1164.all;

entity multiplexador_logico isport(x1, x2, x3, x4: IN std_logic;

sel : IN std_logic_vector(1 downto 0);s : OUT std_logic);

end entity;

architecture mux of multiplexador_logico is begin

s <= x1 WHEN sel = "00" ELSE x2 WHEN sel = "01" ELSE x3 WHEN sel = "10" ELSE x4 WHEN sel = "11" ELSE 'X';

end mux;

Page 5: Relatório multiplexadores e decodificadores

2.2 Decodificador

Um Decodificador é um circuito lógico combinatório onde se recebe um conjunto de entrada, que representa um número binário, e ativa em alto apenas a saída que corresponde ao número recebido. Podemos dizer que decodificador é o circuito inverso ao multiplexador.

Foram utilizadas formas de implementação, uma para as abordagens com SELECT e CASE, na qual utilizamos 2 vetores (entrada com 3 posições e saída com 8 posições) e outra para IF-ELSE e Portas Lógicas, onde foram utilizadas 3 entradas (a, b, c) e 8 saídas (d0, d1, d2, d3, d4, d5, d6, d7). Diferente do multiplexador, onde tínhamos uma variável para “setar” um sinal na saída, no decodificador, a saída é determinada pela combinação das próprias entradas (vetor entrada ou a, b, c), em todas as implementações feitas.

2.2.1 Metodologia aplicada:

Seguimos os seguintes passos:

Criação de um projeto em uma pasta específica para cada abordagem utilizada; Implementação do código VHDL (um código para cada abordagem); Compilação; Verificação do RTL (diagrama do circuito); Teste no simulador; Verificação dos resultados funcional e temporal.

2.2.2 Abordagens:

Foram utilizadas 4 abordagens na implementação do multiplexador. Para cada uma delas, obviamente, foi gerado um código VHDL.

Sendo elas:

a) With Select

Código fonte:

library IEEE;library ieee;use ieee.std_logic_1164.all;

entity decodificador isport(entrada:in std_logic_vector (0 to 2);saida:out std_logic_vector (0 to 7));end decodificador;

architecture decode of decodificador isbegin

Page 6: Relatório multiplexadores e decodificadores

with entrada selectsaida <= "00000001" when "000",

"00000010" when "001","00000100" when "010","00001000" when "011","00010000" when "100","00100000" when "101","01000000" when "110","10000000" when "111","ZZZZZZZZ" when others;

end decode;

b) IF Else

Código fonte:

library IEEE;library ieee;use ieee.std_logic_1164.all;

entity decodificador isport(a, b, c:in std_logic;s:out std_logic_vector (7 downto 0));end decodificador;

architecture decode of decodificador isbegin

process(a, b, c)begin

if ((a = '0') and ( b = '0') and (c = '0')) then s <= "00000001";elsif (a = '1' and (b = '0') and (c = '0')) then s <= "00000010";elsif ((a = '0') and (b = '1') and (c = '0')) then s <= "00000100";elsif ((a = '1') and (b = '1') and (c = '0')) then s <= "00001000";elsif ((a = '0') and (b = '0') and (c = '1')) then s <= "00010000";elsif ((a = '1') and (b = '0') and (c = '1')) then s <= "00100000";elsif ((a = '0') and (b = '1') and (c = '1')) then s <= "01000000";else s <= "10000000";end if;

end process;end decode;

c) Case

Código fonte:

Page 7: Relatório multiplexadores e decodificadores

library IEEE;library ieee;use ieee.std_logic_1164.all;

entity decodificador isport(entrada:in std_logic_vector (0 to 2);saida:out std_logic_vector (0 to 7));end decodificador;

architecture decode of decodificador isbegin

process(entrada)begin

case entrada iswhen "000" => saida <= "00000001";when "001" => saida <= "00000010";when "010" => saida <= "00000100";when "011" => saida <= "00001000";when "100" => saida <= "00010000";when "101" => saida <= "00100000";when "110" => saida <= "01000000";when "111" => saida <= "10000000";when others => saida <= "ZZZZZZZZ";

end case;end process;

end decode;

d) Portas Lógicas

Código fonte:

library IEEE;library ieee;use ieee.std_logic_1164.all;

entity decodificador isport(a,b,c:in std_logic;d0,d1,d2,d3,d4,d5,d6,d7:out std_logic);end decodificador;

architecture decode of decodificador isbegin

d0<= (not a) and (not b) and (not c);d1<= a and (not b) and (not c);d2<= (not a) and b and (not c);

Page 8: Relatório multiplexadores e decodificadores

d3<= a and b and (not c);d4<= (not a) and (not b) and c;d5<= a and (not b) and c;d6<= (not a) and b and c;d7<= a and b and c;

end decode;

3. RESULTADOS DE SIMULAÇÃO

Foram utilizados os softwares Quartus 11, onde foi realizada a codificação e coleta de resultados de compilação, assim como o delay e estrutura do circuito e o Altera P Simulator onde foram realizadas as simulações em si - simulações temporal e funcional.

O modelo de FBGA utilizado foi o Cyclone II.

3.1 Resultados para o multiplexador:

Foram feitas simulações para todas as abordagens utilizadas na implementação.Abaixo, segue as figuras com os resultados para todas as simulações realizadas e ao

final uma breve comparação.

a) WITH SELECT

Figura 1: Resultado da compilação

Page 9: Relatório multiplexadores e decodificadores

Figura 2: Representação gráfica do circuito

Figura 3: Delay (atraso)

Figura 4: Resultado da simulação temporal

Page 10: Relatório multiplexadores e decodificadores

Figura 5: Resultado da simulação funcional

OBS: Na simulação temporal são produzidos pelo simulador uns pulsos de sinal. Eles se dão devido a mudança de estado de 2 ou mais entradas ao mesmo tempo. Isso pode ser tratado fazendo que mudanças de estado e sinais não ocorram ao mesmo tempo.

b) CASE

Figura 6: Resumo da compilação

Page 11: Relatório multiplexadores e decodificadores

Figura 7: Representação gráfica do circuito

Figura 8: Delay (atraso)

Figura 9: Resultado da simulação funcional

Page 12: Relatório multiplexadores e decodificadores

Figura 10: Resultado da simulação temporal

c) IF – ELSE

Figura 11: Resultado da compilação

Figura 12: Delay (atraso)

Page 13: Relatório multiplexadores e decodificadores

Figura 13: Representação gráfica do circuito

Figura 14: Resultado da simulação temporal

Page 14: Relatório multiplexadores e decodificadores

Figura 15: Resultado da simulação funcional

d) Lógico

Figura 16: Resultado da compilação

Page 15: Relatório multiplexadores e decodificadores

Figura 17: Representação gráfica do circuito

Figura 18: Delay (atraso)

Figura 19: Resultado da simulação funcional

Page 16: Relatório multiplexadores e decodificadores

Figura 20: Resultado da simulação temporal

3.1.1 Comparação dos resultados para todas as abordagens.

Como podemos verificar nas figuras acima, os resultados das simulações no Altera AP Simulator foram iguais para todas as abordagens implementadas. Isso mostra que os códigos fontes estão corretos, pois produziram os mesmos resultados.

Apesar das diferentes formas usadas para se implementar o circuito multiplexador, não houve diferenças nos dados coletados na compilação e nem no delay. Podemos notar apenas diferenças na representação do circuito. Utilizando as implementações com IF e lógico, vemos que o circuito fica mais complexo e consequentemente ocupa mais espaço fisicamente.

3.2 Decodificador

Foram feitas simulações para todas as abordagens utilizadas na implementação.

Abaixo, segue as figuras com os resultados para todas as simulações realizadas e ao final uma breve comparação.

a) With Select

Page 17: Relatório multiplexadores e decodificadores

Figura 21: Resumo de compilação no Quartus II

Figura 22: Delay (atraso)

Page 18: Relatório multiplexadores e decodificadores

Figura 23: RTL do circuito

Page 19: Relatório multiplexadores e decodificadores

Figura 24: Simulação funcional

Figura 24: Simulação temporal

b) CASE

Page 20: Relatório multiplexadores e decodificadores

Figura 26: Resumo de compilação

Figura 27: Delay(atraso)

Page 21: Relatório multiplexadores e decodificadores

Figura 28: RTL do circuito

Page 22: Relatório multiplexadores e decodificadores

Figura 29: Simulação funcional

Figura 30: Simulação temporal

c) IF – ELSE

Page 23: Relatório multiplexadores e decodificadores

Figura 31: Resumo de compilação no Quartus II

Figura 32: Delay (atraso)

Page 24: Relatório multiplexadores e decodificadores

Figura 33: RTL do circuito

Figura 34: Simulação funcional

Page 25: Relatório multiplexadores e decodificadores

Figura 35: Simulação temporal

d) Portas Lógicas

Figura 36: Resumo de compilação no Quartus II

Page 26: Relatório multiplexadores e decodificadores

Figura 37: Delay(atraso)

Figura 38: RTL do circuito

Page 27: Relatório multiplexadores e decodificadores

Figura 39: Simulação funcional

Figura 40: Simulação temporal

3.2.1 Comparação dos resultados para todas as abordagens.

Da mesma forma que no multiplexador, os resultados das simulações no Altera AP Simulator são iguais para todas as abordagens e formas de implementação. Já nos resultados obtidos no Quartus, podemos notar diferenças no Delay e na representação gráfica do circuito. Isso se deu pela diferença na forma de implementação para as abordagens com SECECT, IF-ELSE e CASE, PORTAS LÓGICAS.

Na implementação com Portas Lógicas e IF – ELSE, o circuito ficou mais complexo e consequentemente, mais difícil de se implementar numa placa por exemplo.

Page 28: Relatório multiplexadores e decodificadores

4. CONCLUSÃO:

Dentre dificuldades e facilidades encontradas durante a realização do trabalho podemos citar:

Durante as simulações no software AP Simulator, foi possível notar que não havia necessidade de se efetuar os dois tipos de simulações (funcional e temporal), já que os resultados eram iguais para todas as abordagens e havia apenas necessidade de conferência da solução (se estava correta ou não). Essa conferência também poderia ser feita pelo RTL Viewer no Quartus, tendo como base alguma das implementações que já se havia conferido.

Por simplicidade da representação do circuito, recomendamos o uso das abordagens com SELECT ou CASE.

Quanto à implementação dos códigos VHDL, há uma equivalência quanto ao grau de dificuldade. A implementação usando CASE exige o uso do recurso “PROCESS” da linguagem, para que seja compilado com sucesso.

Dificuldades iniciais para seguir os passos desde a codificação até a simulação.

Apesar das dificuldades, após pega a prática, o trabalho transcorreu bem e pode ser terminado sem muita dificuldade e dentro do prazo. Os resultados foram produzidos como esperado. A prática no geral foi útil e importante para fixar o conteúdo e ter uma noção do funcionamento prático dos circuitos estudados.