Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Estadual de Campinas Faculdade de Tecnologia TT-411 Circuitos Digitais 2 Wellington Renan Gonçalves Relatório 3 Aula 3 Entidade do Projeto Declaração de entidade Código Sequencial Na aula 3 continuamos a programação em VHDL utilizando o Quartus II. Utilizamos como material de aula a apostila 2 (teleduc) com o conteúdo de primeiros contatos com a linguagem VHDL Como prática de laboratório foram propostas as seguintes atividades: 1 – Usando o Quartus II, as dicas apresentadas na aula anterior e os conceitos apresentados na apostila 2, apresente o código de uma entidade que descreva as quatro expressões lógicas a seguir. Nessas expressões, considere o operador de negação cm maior precedência e o operador lógico “ou” com menor precedência. A entidade deve ter quatro portas de entrada, “a”, “b”, “c” e “d”, e quatro portas de saída, “s1”, “s2”, “s3” e “s4”, todas do tipo bit. As expressões a serem apresentadas são as seguintes: S1 = A or B S2 = A or B.C or D S3 = (A or B).(C or D) S4 = (A or B).(C or AD) LIBRARY IEEE; USE IEEE.std_logic_1164.all; USE IEEE.std_logic_unsigned.all; ENTITY aula3 IS PORT (A, B, C, D: IN std_logic; --entradas S1, S2, S3, S4: OUT std_logic); --saídas END aula3; ARCHITECTURE RTL OF aula3 IS BEGIN S1 <= (A OR (NOT B)); S2 <= (A OR (((NOT B) AND C) OR D)); S3 <= ((A OR (NOT B)) AND (C OR D)); S4 <= ((A OR (NOT B)) AND (NOT(C OR (A AND D)))); END RTL; Para S1 = A or B A B S1 0 0 1 0 1 0 1 0 1 1 1 1 Para S2 = A or B.C or D A B C D S2 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 1 0 1 0 0 0 0 1 0 1 1 0 1 1 0 0 0 1 1 1 1 1 0 0 0 1 1 0 0 1 1 1 0 1 0 1 1 0 1 1 1 1 1 0 0 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 Para S3 = (A or B).(C or D) A B C D S3 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 1 1 1 1 0 0 0 1 1 0 1 0 1 1 1 0 0 1 1 1 1 0 Para S4 = (A or B).(C or AD) A B C D S4 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 1 1 0 1 0 0 0 1 1 0 0 1 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0 1 1 1 0 1 1 1 1 1 0 0 1 1 1 1 0 2. Determine em função do código abaixo, sem o auxílio do simulador, qual o valor de cada porta de saída. Note que todos os comando são concorrentes e portanto, a ordem das linhas do código não importa. a <= x(1 TO 3); a = 101 b <= y(3 DOWNTO 1); b = 011 c <= x(5 TO 7); c = 001 d <= y(2 DOWNTO 0); d = 110 y <= x(2 TO 5); y = 0110 3. O código a seguir apresenta erros. Identifique, com a ajuda do simulador, as linhas com erro e proponha uma correção. LIBRARY IEEE; USE IEEE.std_logic_1164.all; USE IEEE.std_logic_unsigned.all; ENTITY errad_1 IS PORT (a, b, c, d : IN BIT; s : OUT BIT_VECTOR (5 DOWNTO 0)); END errad_1; ARCHITECTURE teste OF errad_1 IS BEGIN s(0) <= (a AND b) OR (c AND d); s(1) <= ((a NOR b) NOR c); s(2) <= (a AND b) OR c; s(3) <= NOT ((a AND b) NAND c); s(4) <= ((a XOR b) XOR c); END teste; Conclusão: Na primeira atividade de laboratório proposta foi implementado o código em VHDL de uma entidade que executasse as expressões booleanas propostas. A entidade foi apresentada logo a seguir, para verificar a validade do código para executar as expressões boolenas foi feita a tabela verdade (que representa as saídas esperadas para cada combinação de sinal recebido nas portas lógicas) para cada uma das 4 expressões, e comparada as suas saídas com o “WAVEFORM” (simulação das saídas nas portas lógicas) gerado no Quartus II. O resultado obtido valida a entidade criada para executar as expressões pedidas. Na segunda atividade foi solicitado que se determinasse as saídas de algumas portas lógicas sem o auxílio do simulador. Como as saídas recebiam valores do tipo BIT_VECTOR foi necessário para determinar as saídas cuidado com a ordem de numeração das posições dos vetores TOP ou DOWNTOP e a partir de qual e para qual posição estava recebendo, além do tamanho total do vetor (para não estourar o buffer). Na terceira atividade foi apresentada um código com erros e com auxílio do simulador, foi verificado as linhas com erro e proposta uma sugestão para o código. O código corrigido foi apresentado logo abaixo da atividade 3, o simulador encontrou os erros nas expressões booleanas, elas não apresentavam parênteses que é fundamental para o programa reconhecer as prioridades entre operações, sendo assim, as correções foram realizados nesta parte do código. Após a correção o código funcionou com sucesso.
Compartilhar