Buscar

Sistemas Digitais I - Poli - Exercício 4 - 2016 (VHDL)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 3 páginas

Prévia do material em texto

USP -ESCOLA POLITÉCNICA 
PCS - DEPARTAMENTO DE ENGENHARIA DE COMPUTAÇÃO 
E SISTEMAS DIGITAIS 
 
 
PCS3115 Sistemas Digitais I – 1o Semestre de 2016 
 
Exercício 4 
(a ser entregue no dia 17 de junho, sexta-feira, às 17:00, na Secretaria do PCS) 
 
Objetivos: 
Este exercício possui dois objetivos principais: 
 familiarizar o aluno com a ferramenta de descrição e simulação de sistemas digitais em 
VHDL, o Altera Quartus II Web Edition; 
 Exercitar os conceitos de blocos combinatórios básicos discutidos em aula 
 Exercitar a síntese de circuitos combinatórios usando VHDL 
 
Atividade 1 (2 pontos): Familiarização com a ferramenta de HDL 
(1) Instale a ferramenta Altera Quartus II (versão 9.1 SP2), disponível em 
https://wl.altera.com/download/software/quartus-ii-we/9.1sp2. Será necessário realizar um 
cadastro para fazer o download do arquivo (1,8 GB na versão MS-Windows). 
(2) Diversos tutorias e materiais complementares estão disponíveis no Repositório do Ae, na 
pasta "Material Complementar – VHDL”. Se preferir (e já quiser ir se adiantando em outra 
disciplina da Poli...), você também pode usar os tutoriais na página do Laboratório Digital: 
http://www.pcs.usp.br/~labdig/apoio.html 
(3) Crie o projeto adder1mod4 no Quartus para o circuito mostrado ,a Figura 1, que calcula S = 
(E+1) mod 4 para uma entrada E de 2 bits, indicando também quando a entrada tem o valor 
máximo. 
(4) Execute a simulação do projeto adder1mod4 e gere formas de onda para todos os 4 valores 
possíveis de entrada. 
 
O que entregar: Em uma página, escrito manualmente, apresente a Tabela Verdade para todas as 
combinações de entradas e explique quais os valores de entrada testados, justificando sua escolha. 
Discuta se as formas de onda obtidas para os sinais de saídas coincidem com os valores esperados. 
Apresente uma impressão do diagrama lógico do circuito e da simulação realizada no Quartus. 
 
 
Figura 1 – Circuito para cálculo de S = (E+1) mod 4 
 
Exemplo de forma de onda (para um somador de 1 bit): 
 
 
 
 
Atividade 2: Blocos combinatórios -- Decodificador 
 
Considere a seguinte descrição em VHDL, que corresponde a um decodificador binário 3x8. 
 
library IEEE; 
use IEEE.std_logic_1164.all; 
 
entity decoder is 
 port (d : in STD_LOGIC_VECTOR (2 downto 0); 
 s : out STD_LOGIC_VECTOR (7 downto 0)); 
end decoder; 
 
architecture decoder_behavior of decoder is 
begin 
 with d select 
 s <= "00000001" when "000", 
 "00000010" when "001", 
 "00000100" when "010", 
 "00001000" when "011", 
 "00010000" when "100", 
 "00100000" when "101", 
 "01000000" when "110", 
 "10000000" when "111", 
 "00000000" when others; 
end decoder_behavior; 
 
(5) (1 ponto) Crie um projeto no Quartus para o código acima. Execute e apresente a simulação 
do módulo para todas as combinações possíveis de valores de entrada. 
 
(6) (1 ponto) Modifique o código VHDL apresentado para incluir uma entrada de enable ativo 
em alto, criando a entidade denominada decoderEn. Execute e apresente a simulação do 
módulo para todas as combinações possíveis de entradas quando enable =1, e para pelo 
menos 2 valores de entrada quando enable = 0. 
 
(7) (2.5 pontos) Crie um novo módulo VHDL, denominado meuNUSP, que construído usando a 
abordagem estrutural com o decoder como um dos componentes para calcular F = soma de 
mintermos correspondentes aos 4 últimos dígitos do seu número USP, substituindo 8 e 9 por 
0. Exemplos: *1234  F = ∑(1,2,3,4); *2288  F = ∑(2,0), *8899  F = ∑(0). 
 
 
 
A entidade meuNUSP deve respeitar a descrição a seguir: 
 
library IEEE; 
use IEEE.std_logic_1164.all; 
 
entity meuNUSP is 
 port (d : in STD_LOGIC_VECTOR (2 downto 0); 
 s : out STD_LOGIC); 
end meuNUSP; 
 
Para facilitar, use o componente OR4 cujo código VHDL é fornecido a seguir, ou algum 
outro componente OR que você queira construir (nota: não use a biblioteca unisim 
mencionada no livro-texto, porque ela é dependende de fabricante...) 
 
library IEEE; 
use IEEE.std_logic_1164.all; 
 
entity or4 is 
 port (I0,I1,I2,I3 : in STD_LOGIC; 
 O : out STD_LOGIC); 
end or4; 
 
architecture or4_arch of or4 is 
begin 
 O <= I0 or I1 or I2 or I3; 
end or4_arch; 
 
(8) (3.5 pontos) Na área de criptografia, é comum o uso de aritmética de corpos finitos binários. 
Para exercitar esse conceito, vamos fazer uma operação simples com 7 bits: a multiplicação 
de um número N por 2, usando como polinônimo irredutível x
7
+x+1. Isso equivale a: (1) 
deslocar N para a esquerda de 1 posição, jogando-se fora o bit mais significativo b e 
adicionando-se 0s à direita, e então (2) caso b seja 1, realiza-se um XOR dos 7 bits restantes 
com 0011. (Veja https://en.wikipedia.org/wiki/Finite_field_arithmetic para detalhes). 
 
 b 
0000001  (deslocamento) 0000010  (sem XOR com 0000011) 0000010 
Exemplos: 1000000  (deslocamento) 0000000  (fazer XOR com 0000011) 0000011 
1000011  (deslocamento) 0000110  (fazer XOR com 0000011) 0000101 
 
Crie em VHDL um componente denominado mulGF, que realiza essa operação. Você pode 
usar a abordagem estrutural ou comportamental, mas é proibido neste exercício (1) usar uma 
descrição sequencial (com uso de process), mesmo se você já tiver experiência anterior 
com HDLs, ou (2) fazer um código do tipo “força-bruta”, listando (quase) todas as 127 
possibilidades e (3) usar a biblioteca unisim mencionada no livro-texto (de novo, porque ela 
é dependende de fabricante...). 
 
Simule o circuito para os seguintes valores de N: 0, 63, 64, 127, e (o valor binário 
correspondente aos dois últimos dígitos do seu número USP). 
 
A entidade mulGF deve respeitar a descrição abaixo: 
 
entity mulGF is 
 port (x : in STD_LOGIC_VECTOR (6 downto 0); 
 y : out STD_LOGIC_VECTOR (6 downto 0)); 
end mulGF; 
 
O que entregar: O seu projeto completo contendo o decoderE, o meuNUSP, e o mulGF. Para isso, no 
Quartus vá em “Project  Archive Project” e salve o projeto com o nome “[seu_numero_usp].qar”. 
Entregue também as quatro formas de onda geradas a partir da sua simulação, uma para cada um 
dos itens de 5 a 8.

Outros materiais

Outros materiais