SISTEMAS DIGITAIS Laboratório 3 RELATÓRIO Identificação dos Alunos: Nome:Gonçalo Santos Número:84070 Nome:Bernardo Bastos Número: 84012 Turno de Laboratório: SD4517L05 Grupo: 73 Sala do Laboratório: LSD1 Hora: 12:30-14:00 Nome do Docente: Aleksandar Ilic
1.INTRODUÇÃO O objetivo deste trabalho laboratorial foi entrarmos em contacto com ferramentas de simulação e prototipagem de circuitos digitais. Para tal utilizámos uma ferramenta ISE da Xilinx para simular um circuito constituído por elementos básicos de memória (flip-flops) agregados e circuitos aritméticos. 2.RESPOSTA ÀS QUESTÕES DO ENUNCIADO 1. Apresente a tabela de verdade deste circuito Através da observação do circuito NAND LOGIC elaborámos a seguinte tabela de verdade FIGURA 2- CIRCUITO NAND LOGIC 2. Apresente a expressão mínima disjuntiva da função Y(X1,X2,X3). FIGURA 1-TABELA DE VERDADE A partir da tabela de verdade construímos o mapa de karnaugh e daí retirámos a expressão mínima. FIGURA 3-MAPA DE KARNAGH MINTERMOS 3. Qual a operação realizada por este circuito? É possível substituir este circuito por um único componente? Operação realizada: Através de dois bits de seleção (X1,X2) a função Y toma um de quatro valores diferentes. figura. É possível substituir o circuito por um MUX 4:1 como o da FIGURA 4-IMPLEMENTAÇÃO DA FUNÇÃO COM UM MUX 2
4. Observe e registe os valores das entradas e saída (s) e compare-os com os valores esperados na tabela da verdade. Os valores registados da entrada e saída (S) são iguais aos valores esperados na tabela de verdade. Como podemos verificar, os valores da tabela de verdade acima representada correspondem com os valores obtidos no diagrama. FIGURA 5-DIAGRAMA TEMPORAL NAND-LOGIC 5. Analise teoricamente o circuito e construa a tabela de verdade do mesmo, indicando, para cada combinação da entrada E e do estado atual (i.e., bits Q1 eq0 à saída dos FFs antes do flanco de relógio), o estado seguinte (i.e., o valor à saída dos flip-flops após o flanco de relógio) e o valor da saída S. Justifique. O circuito representado na figura 4 do enunciado do laboratório é formado pela função Nand Logic, anteriormente especificada, por dois Flip Flops e por uma porta XOR. Os valores das entradas dos Flips Flops (D0 e D1) são definidos pela função NAND LOGIC. Posteriormente, as saídas dos Flip Flops (Q0 e Q1) vão juntar-se numa porta XOR e assim obtém-se o valor da função S. FIGURA 6-TABELA DE TRANSIÇÃO DE ESTADOS 6. Indique qual a função (i.e., para que serve) da entrada E e qual o estado dos flip-flops (FFs) quando E=1 ou E=0. Justifique. Através da análise da tabela de verdade obtida, verificamos que quando a entrada E tem valor 0, o valor da saída dos Flip Flops é igual ao estado anterior de Q0 (por exemplo, quando E=0 e o valor anterior das entradas Q0 e Q1 é 0, 1, respetivamente, verificamos que, após o período de relógio, o valor das entradas Q0 e Q1 é 1, 1, ou seja, igual a Q0 anterior.). Quando o valor de E é 1, verificamos que o valor da entrada Q1 após o tempo de relógio é igual ao valor do estado anterior de Q0 negado (por exemplo, quando E=1 e Q0 e Q1 anteriores são iguais a 00, o valor de Q0 e Q1 posteriores é 0, 1, respetivamente.). 3
7. Complete o seguinte diagrama temporal, de acordo com a análise que realizou nas perguntas anteriores (considere que os tempos de propagação dos FFs e das portas lógicas são desprezáveis face ao período de relógio). Justifique. Observámos o circuito NAND LOGIC e a tabela de verdade e preenchemos o seguinte circuito temporal: FIGURA 7-DIAGRAMA TEMPORAL 8. De acordo com o diagrama temporal e com a tabela de verdade previamente preenchidos, complete o diagrama de estados indicando o estado dos flip-flops (Q1,Q0) - dentro de cada círculo - e o valor da entrada/saída (E/S) que identificam a transição para o estado seguinte dos flip-flops (i.e., após o flanco de relógio) - nas setas. FIGURA 8-DIAGRAM DE ESTADOS 9. Simule o circuito e indique qual o funcionamento do mesmo nos flancos de relógio quando o sinal E se encontra nos estados lógicos 0 e 1. Observe os valores das entradas e saída (s) e compare-os com os valores esperados na tabela da verdade. Após a simulação do circuito sequencial (test_sequential.tbw) verificámos que este estava de acordo com a tabela de verdade obtida. FIGURA 9-DIAGRAMA TEMPORAL SEQUENCIAL 4
10. Resolva todos erros reportados e apresente no relatório uma breve descrição da causa de cada um deles. Erro ponto e vírgula - na linha 107 faltava um ponto e virgula para terminar a ordem da frase. Erro componente num comentário - na linha 93. o componente XOR estava escrito em comentário. Erro somador 4 bits - na linha 81 o operando B do somador apenas possuía 3 bits. Erro falta do is - na linha 30 faltava um is para definir a unidade aritmética como componente. 11. Analise o conteúdo do ficheiro unidade_aritmetica.vhd e preencha os comentários de acordo com o que é pedido nas respetivas secções identificadas por "----". A resposta a esta pergunta encontra-se no final do relatório. 12. Apresente o logigrama da unidade aritmética indicando todas as entradas e saídas dos componentes, todos os sinais internos e largura de cada bus. Qual é a operação aritmética realizada? Através da criação do logigrama da unidade aritmética e da sua análise determinou-se que a operação que este realizava era A/2+5-B. FIGURA 10-LOGIGRAMA UNIDADE ARITMÉTICA 13. Apresente os cálculos relativos às constantes c0 e c1 e a respetiva função aritmética associada. Para descobrirmos os valores de K 1 e K 0 dividimos, de entre membros do grupo, o maior número de aluno por 2 e o menor número de aluno por 4, respetivamente. Divisão por 2 Resto Divisão por 4 Resto 84070 42035 0 K 1 84012 21003 0 K 0 obter o c0 realizamos a operação c0= K0mod3 +1=1 Para Para obter oc1 realizámos a operação ( 1) ^K1=1 Assim a operação aritmética associada é Z=A+B. 5
14. Desenhe o logigrama do circuito modificado. De forma a implementar a função Z=A+B foi necessário alterar o circuito original. Assim, removemos o shift right (divisão por 2) do operando A e alterámos uma das entradas da porta XOR para 000 de forma que o valor B se mantivesse. Alterámos o barramento do sinal B para fazendo uma concatenação com o sinal 00000 passando assim o sinal B a ter 8bits. Por último alterámos o Cin do Low Adder para 0 fazendo com que a função final seja Z. FIGURA 11-LOGIRAMA UNIDADE ARITMÉTICA ALTERADO 15. Efetue as modificações necessárias ao circuito descrito no ficheiro unidade_aritmetica.vhd de forma a implementar a nova função aritmética e atualize a secção dos comentários. Depois de construído o logigrama modificado efetuámos as modificações necessárias no ficheiro VHDL da unidade aritmética e conseguinte atualização dos comentários. Este ficheiro (unidade_aritmetica_alteradovhd) encontra-se em anexo no final do relatório. FIGURA 12-DIAGRAMA TEMPORAL UNIDADE ARITMÉTICA ALTERADO 6
3.IMPLEMENTAÇÃO DO CIRCUITO Implementámos o circuito na placa de prototipagem e mostrámos ao docente de laboratório que verificou se o circuito estava a funcionar corretamente. Para tal, utilizámos o software Adept da Digilent. Na janela FPGA introduzimos o ficheiro.bit previamente adquirido através da plataforma Xilinx e verificámos que o funcionamento do circuito correspondia à simulação do ficheiro lab3_circuito. Ao recebermos a placa de prototipagem começámos por conectá-la ao computador, implementar o programa e definir o valor do operando A com o valor 4 em binário ( 100 ), visto que este é constante ao longo do tempo. O operando B toma os valores 0, 3, 6 e 5 em decimal e são estes valores que são observados nos LEDs da placa, em binário. O display apresenta o resultado da operação A+B em hexadecimal com 8 bits obtendo-se assim os valores 04, 01, A 09. 4.CONCLUSÃO Este trabalho laboratorial deu-nos a conhecer a plataforma de trabalho do ISE da Xilinx e as placas de prototipagem Basys2. Para descrever o circuito utilizámos a linguagem de descrição de hardware VHDL, linguagem esta que é utilizada para facilitar o design de circuitos digitais. O objetivo final era a criação de um circuito sequencial que realizasse uma operação aritmética sobre 2 números, A e B. O operando A era constante enquanto o operando B variava de acordo com o CLK. No final obtivemos a expressão da operação realizada pelo circuito, A+B. Posteriormente implementámos o circuito na placa de prototipagem e verificámos que os valores obtidos no display correspondiam aos valores da função S que representava a operação A+B. Comparámos estes valores com os valores obtidos no diagrama temporal e verificámos que os valores eram iguais. Este trabalho requisitou uma grande dedicação da nossa parte pois o Xilinx é uma ferramenta complexa exige grande concentração para evitar a ocorrência de erros. 7
Códigos: 8