sistemas digitais laboratório 3...
TRANSCRIPT
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
2
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
2. Apresente a expressão mínima disjuntiva da função
Y(X1,X2,X3).
A partir da tabela de verdade construímos o mapa de karnaugh e daí retirámos a expressão mínima.
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.
É possível substituir o circuito por um MUX 4:1 como o da
figura.
FIGURA 2- CIRCUITO NAND LOGIC
FIGURA 1-TABELA DE VERDADE
FIGURA 3-MAPA DE KARNAGH MINTERMOS
FIGURA 4-IMPLEMENTAÇÃO DA FUNÇÃO
COM UM MUX
3
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.
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.
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.).
FIGURA 5-DIAGRAMA TEMPORAL NAND-LOGIC
FIGURA 6-TABELA DE TRANSIÇÃO DE ESTADOS
4
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:
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.
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 7-DIAGRAMA TEMPORAL
FIGURA 8-DIAGRAM DE ESTADOS
FIGURA 9-DIAGRAMA TEMPORAL SEQUENCIAL
5
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.
13. Apresente os cálculos relativos às constantes c0 e c1 e a respetiva função aritmética
associada.
Para descobrirmos os valores de K1 e K0 dividimos, de entre membros do grupo, o maior número de
aluno por 2 e o menor número de aluno por 4, respetivamente.
Para
obter o c0 realizamos a operação c0= 𝐾0𝑚𝑜𝑑3 +1=1
Para obter oc1 realizámos a operação (−1) ^𝐾1=1
Assim a operação aritmética associada é Z=A+B.
Divisão
por 2
Resto Divisão
por 4
Resto
84070 42035 0 K1 84012 21003 0 K0
FIGURA 10-LOGIGRAMA UNIDADE ARITMÉTICA
6
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.
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 11-LOGIRAMA UNIDADE ARITMÉTICA ALTERADO
FIGURA 12-DIAGRAMA TEMPORAL UNIDADE ARITMÉTICA ALTERADO
7
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.
8
Códigos: