Você está na página 1de 13

UPEL-CENG-Engenharia Eletrônica

Sistemas Digitais I
Segunda Avaliação

Aluno: Haydan Miranda


Matrícula: 19103260
Questões:
1. Implemente um conversor de código binário de 4 bits para o código Excesso-3 de 4
bits, utilizando um decodificador e um codificador, ou um conjunto decodificador +
portas Or.

2. Implemente um contador módulo 16, com contagem crescente/decrescente, com


saída em código Excesso-3, considerando as especificações nas tabelas a seguir. O sinal
TC deve ser gerado considerando os valores 0 e 15 decimais.

3. Utilize a metodologia RTL para o projeto de um circuito multiplicador sequencial para


números de 8 bits sem sinal, segundo o algoritmo da acumulação sucessiva. A entrada
INI (valor ‘1’ por um ciclo do clock) indica quando a operação deve ser iniciada. As
entradas A e B contém os operando de 8 bits a serem multiplicados. A saída R contém
o resultado da operação. A saída P indica (valor ‘1’ por um ciclo de clock) quando o
resultado está disponível. A saída BUSY deve indicar (valor ‘1’) enquanto o resultado
está sendo calculado.
Neste relatório irei resolver as questões da segunda prova de sistemas digitais com previa
explicação.
Questão 1)
Primeiramente fiz a tabela de conversão para melhor visualização do problema.
Código Excesso-3 é representado por 4 bits, sendo o valor do dígito mais 3 (quantidade de
excesso).

Figura 1:Tabela de conversão.


Logo após fiz a representação do decodificador e codificador com suas determinadas entradas
e saídas.

Figura 2: Representação do circuito.


Decodificador: Conjunto de portas homogêneas que podem implementar qualquer função
lógica combinacional.
Codificador: Pode-se definir de forma simples como um circuito que seja capaz de converter
um sinal de determinado tipo.
Tabela verdade do decodificador e codificador (inspirada no código):
Decodificador:

Figura 3: Decodificador

Figura 4: Codificador
Para implementação em código temos que levar em consideração o código que será inserido
no decodificador/codificador, pois não há blocos que funcionem inserindo diretamente
excesso-3 em sua lógica, pois funcionam com binário, então temos que associar a saída do
decodificador com a entrada do codificador para obtermos o resultado esperado e não
alterarmos o funcionamento dos mesmos inserindo outros códigos sem ser o binário.
Simulação do código:

Figura 5:Enable ativando a conversão.


Como de esperado o conversor só começa a operar quando o seu enable(etb) está ativo
(estado alto ‘1’), convertendo o código de binário para excesso-3.

Figura 6:Conversão Binário para Excesso-3.


Como podemos observar a conversão está sendo feita de forma correta onde se entra com o
código binário na entrada (x), é feita a conversão e libera na saída (s) o código excesso-3. Por
fim o enable se desabilita e o conversor não opera mais como mostrado no final da simulação
da figura 3.
Figura 7: Habilitação-Conversão-Desabilitação.
Questão 2)
Contador é um circuito lógico sequencial que altera o valor da sua saída (valor de contagem)
de acordo com um sinal de sincronismo de entrada, o sinal de Clock. Assim, o valor na saída de
um contador é o resultado da contagem do número de pulsos do sinal de Clock recebidos na
entrada do circuito.
Para melhor visualização do problema, foi feita a tabela de transição de estados de acordo
com as especificações do exercício.
Está tabela relaciona as entradas, estados e saídas, podendo ser feita através de diagrama de
transição de estados e tabela de transição de estados, a escolhida por mim foi a tabela pelo
motivo da simplicidade de criação e identificação de suas informações.

Figura 8: Tabela de transição de estados.


No Próximo estado:
Quando u_d=’0’ e hab=’1’ temos contagem habilitada e crescente.
Quando u_d=’1’ e hab=’1’ temos contagem habilitada e decrescente.
Quando hab=’0’ temos contagem desabilitada, portanto permanece no mesmo estado.
Na Saída TC:
Quando u_d=’0’ temos último valor da contagem crescente.
Quando u_d=’1’ temos primeiro valor da contagem decrescente.
Na Saída G:
Código Excesso-3.
Simulação do código:

Figura 9: Início da contagem.


No início da simulação temos hab=’0’ portanto a contagem está desativada.

Figura 10: Ativando a contagem.


Quando hab=’1’ e u_d=’0’ se inicia a contagem crescente e só para a contagem quando u_d
mudar para ‘1’, pois se começa a contagem decrescente como mostrado na figura 11.

Figura 11: u_d ativado.


Figura 12: TC=’1’ Último valor decrescente.
Como podemos observar u_d=’1’ (contagem decrescente) o TC está ativo pegando o primeiro
valor decrescente. Logo começa a contagem crescente que chega no seu ultimo valor
crescente quando TC=’1’ como mostrado na figura 13.

Figura 13: TC=’1’ Último valor crescente.


Questão 3)
Entradas: INI (‘1’ por um ciclo de clock).
A e B (Operando de 8bits).
Saídas: R (Resultado da operação).
P (‘1’ por um ciclo de clock) (Resultado disponível).
BUSY (Valor ‘1’) (Enquanto o resultado está sendo calculado).

Primeiramente se começa pelo diagrama de estados.

Figura 14: Diagrama de estados (Alto nível).


Logo após verificamos os blocos que fazem as operações no nosso circuito e representamos na
forma de bloco operacional:

Figura 15: Operações.


Figura 16: Bloco Operacional.
Agora devemos conectar o Bloco Operacional e de controle.

Figura 17: Blocos conectados.


Por fim o diagrama de estado com os sinais dos blocos anteriores (baixo nível):

Figura 18: Diagrama de estados (Baixo nível).


Simulação do código:

Figura 19: Multiplicação de 6(0110) com 3(0011).


Como podemos observar a multiplicação é feita de forma correta, iniciando o N=1 pelo fato de
o contador sempre contar 1 a mais, mudando o resultado da multiplicação.
Mostra resultado em P=1 como esperado, o R assume o valor do R-AUX como descrito em
código, o contador conta o número de vezes que precisamos somar o A, que neste caso é 3.
(Somas sucessivas de A, B vezes).
Figura 19: Estado soma.
Como de esperado o BUSY=1, onde mostra que está sendo calculado, no momento n=1 pelo
fato de estar antes do ciclo de clock que ativa a contagem.
Calculo de outros valores:
a) 3(0011) x 10(1010) = 30(11110)

Figura 20: Teste.

Figura 21: Teste.


Resultado saiu como esperado.
b) 100(1100100) x 50(110010) = (1001110001000)

Figura 22: Teste.

Figura 23: Teste.


Resultado saiu como esperado.

Considerações:
Os arquivos em VHDL com seus Testband será enviado junto ao relatório via e-aula.

Você também pode gostar