projeto de conclusão em circuitos digitais -...

27
Universidade Federal do Rio Grande do Sul Instituto de Informática INF01058 Circuitos Digitais Prof. Dr. Renato Perez Ribas Porto Alegre, junho de 2008 Projeto de Conclusão em Circuitos Digitais Parte I – Somador e Multiplicador Autor: Bruno Silva Guedes Id.: 159033

Upload: dangdung

Post on 12-Dec-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Projeto de Conclusão em Circuitos Digitais - UFRGSinf.ufrgs.br/~bsguedes/disc/3/inf01058/ProjetoCD.pdf · Adders e portas AND, gerando os 8 bits de saída. O circuito multiplicador

Universidade Federal do Rio Grande do Sul

Instituto de Informática

INF01058 – Circuitos Digitais

Prof. Dr. Renato Perez Ribas

Porto Alegre, junho de 2008

Projeto de Conclusão em

Circuitos Digitais Parte I – Somador e Multiplicador

Autor: Bruno Silva Guedes

Id.: 159033

Page 2: Projeto de Conclusão em Circuitos Digitais - UFRGSinf.ufrgs.br/~bsguedes/disc/3/inf01058/ProjetoCD.pdf · Adders e portas AND, gerando os 8 bits de saída. O circuito multiplicador

INF 01058 – Circuitos Digitais – Projeto de Conclusão em Circuitos Digitais

2 | P á g i n a

Sumário

1. Introdução ................................................................................................................................. 3

2. Descrição ................................................................................................................................... 3

2.1. Especificações ..................................................................................................................... 3

2.2. Etapas do Circuito ............................................................................................................... 3

2.3. Circuito Somador ................................................................................................................ 4

2.4. Circuito Multiplicador ......................................................................................................... 5

2.5. Multiplexador 4 para 1 ....................................................................................................... 5

2.6. Conversor Binário-BCD ....................................................................................................... 5

2.7. Conversor Dígito-Segmento ............................................................................................... 6

2.8. Verificação de Overflow ..................................................................................................... 6

3. Implementação .......................................................................................................................... 7

3.1. Full Adder ............................................................................................................................ 7

3.2. Circuito Somador ................................................................................................................ 7

3.3. Circuito Multiplicador ......................................................................................................... 8

3.4. Multiplexador 4 para 1 ....................................................................................................... 9

3.5. Conversor Binário-BCD ..................................................................................................... 10

3.6. Conversor Dígito-Segmento ............................................................................................. 15

3.7. Verificação de Overflow ................................................................................................... 20

3.8. Outros detalhes ................................................................................................................ 21

3.9. Circuito Completo ............................................................................................................. 22

4. Resultados ............................................................................................................................... 24

4.1. Report ............................................................................................................................... 24

4.2. Timing Analysis ................................................................................................................. 25

5. Conclusões ............................................................................................................................... 27

6. Referências .............................................................................................................................. 27

Page 3: Projeto de Conclusão em Circuitos Digitais - UFRGSinf.ufrgs.br/~bsguedes/disc/3/inf01058/ProjetoCD.pdf · Adders e portas AND, gerando os 8 bits de saída. O circuito multiplicador

INF 01058 – Circuitos Digitais – Projeto de Conclusão em Circuitos Digitais

3 | P á g i n a

1. Introdução

A primeira parte do Projeto de Conclusão para a disciplina INF01058: Circuitos

Digitais consiste em projetar um circuito capaz de executar, a partir de dois valores de

entradas, algumas operações sobre estes valores. O circuito deve ser projetado para rodar no

chip EPF10K20RC240-3, da família FLEX10K da Altera.

O circuito, que deve exibir no display de leds disposto na placa didática que contém o

chip citado resultados de operações sobre os valores de entrada, foi totalmente projetado no

software MaxPlus, também de propriedade da Altera.

As operações que o circuito realiza são selecionadas através de um dispositivo

multiplexador, e elas são: produto das entradas, soma das entradas, visualização da primeira

parcela e visualização da segunda parcela.

2. Descrição

2.1. Especificações

Primeiro é necessário que sejam apresentadas algumas especificações do projeto:

• As entradas são valores binários de comprimento igual a 4 bits, e dois valores

binários de seleção que selecionam qual operação será realizada.

• A saída do circuito é o visor de leds, que contém 16 valores controláveis (dois

dígitos de 7 segmentos e mais dois pontos decimais).

As operações que o circuito faz são:

• Soma as duas entradas de 4 bits (exibindo o valor decimal da soma quando o valor

de seleção é 00).

• Mostra a entrada A no visor, em decimal (quando a seleção é 10).

• Mostra a entrada B no visor, em decimal (quando a seleção é 01).

• Exibe o produto das entradas no visor, em decimal (um código de overflow deve

ser exibido quando o valor do produto excede 63).

2.2. Etapas do Circuito

O circuito possui um circuito multiplexador de 4 entradas e uma saída. As quatro

entradas são as operações descritas na seção anterior. Os sinais de controle do multiplexador

são dois botões na placa que escolhem qual dessas entradas será transmitida para o visor. O

circuito sempre deixa as entradas do multiplexador atualizadas, esperando apenas pelo código

de seleção que as transmitirá para o visor.

Para os códigos de controle 10 e 01, as entradas são simplesmente conduzidas ao

multiplexador. Para os códigos 00 e 11, correspondentes à soma e ao produto, existe um

circuito que realiza essas operações sobre as entradas (um circuito para a soma e um circuito

para o produto).

Page 4: Projeto de Conclusão em Circuitos Digitais - UFRGSinf.ufrgs.br/~bsguedes/disc/3/inf01058/ProjetoCD.pdf · Adders e portas AND, gerando os 8 bits de saída. O circuito multiplicador

INF 01058 – Circuitos Digitais – Projeto de Conclusão em Circuitos Digitais

4 | P á g i n a

Este multiplexador, que é a chave do circuito, possui barramento de 6 bits (capaz de

transportar valores de 0 a 63, em decimal). Para a soma, não há problema, pois o valor

máximo dela é 30 (cabe em 5 bits). Portanto, um sexto bit para a soma é criado, de valor 0,

para passar pelo multiplexador.

As entradas A e B possuem dois bits mais significativos em 0, para poder passar pelo

barramento de 6 bits (já que por especificação, a largura das entradas é de apenas 4 bits).

Para a multiplicação, podemos ter valores de 0 a 255. Os valores maiores que 63 são

excluídos (é exibida uma sinalização de overflow). Os valores dos dois bits mais significativos

da multiplicação são descartados, e caso algum deles tenha valor 1, um sinal de overflow é

exibido.

O multiplexador conduz a saída o valor, em binário, que deve ser exibido no visor. O

passo seguinte consiste em converter este número em decimal e exibí-lo. A conversão é feita

por um circuito que transforma o número em binário de 6 bits em um número decimal no

formato BCD (4 bits para cada dígito decimal). Assim, temos uma saída de 8 bits (dois dígitos),

que representam valores de 0 a 63. Na verdade o último bit da dezena é descartado, já que a

dezena máxima que teremos é 6, e pode ser representada por 110 (três bits).

Os dígitos BCD do circuito são agora convertidos para a linguagem do visor de

segmentos. Cada led do visor de segmentos é associado a uma saída e é verificado, dentro de

um circuito menor, se a saída será acesa ou não, dependendo do valor de entrada deste

subcircuito.

Nas próximas seções são feitas análises detalhadas de cada etapa.

2.3. Circuito Somador

O circuito somador é um simples Ripple

Carry Adder. Ele funciona com a concatenação de

vários Full Adders que somam bit a bit os valores de

entrada. A tabela verdade de um Full Adder está na

Figura 2.1. As fórmulas das saídas S e Cout

correspondem as fórmulas (1) e (2), respec-

tivamente.

S = a ⊕ b ⊕ Cin (1)

Cout = a.b + a.Cin + b.Cin (2)

Concatenando vários Full Adders, cada um

recebendo como carry in o carry out do Full Adder

imediatamente anterior (o primeiro Full Adder

recebe zero como Cin) temos o que chamamos de Ripple Carry Adder. No nosso caso, o Ripple

Carry Adder terá quatro Full Adders, já que queremos apenas somar quatro bits. A saída do

Ripple Carry Adder será um vetor de 4 bits de soma, e um carry out, que consideraremos como

o quinto bit da soma. O sexto bit será fixado em zero, já que o multiplexador que será descrito

adiante trabalha com barramento de 6 bits.

a b Cin S Cout 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1

(a)

Fig. 2.1 – (a) Tabela verdade do Full Adder.

A saída é um XOR das três entradas,

enquanto o carry out é a soma dos produtos

das entradas, duas a duas.

Page 5: Projeto de Conclusão em Circuitos Digitais - UFRGSinf.ufrgs.br/~bsguedes/disc/3/inf01058/ProjetoCD.pdf · Adders e portas AND, gerando os 8 bits de saída. O circuito multiplicador

INF 01058 – Circuitos Digitais – Projeto de Conclusão em Circuitos Digitais

5 | P á g i n a

2.4. Circuito Multiplicador

O circuito multiplicador multiplica dois números de quatro bits e retorna um produto

de 8 bits. O princípio da multiplicação é similar a uma multiplicação decimal e está disposto na

Figura 2.2.

a3 a2 a1 a0 x b3 b2 b1 b0

a3b0 a2b0 a1b0 a0b0

a3b1 a2b1 a1b1 a0b1

a3b2 a2b2 a1b2 a0b2

+ a3b3 a2b3 a1b3 a0b3

p7 p6 p5 p4 p3 p2 p1 p0

Fig. 2.2 – Esquema da multiplicação binária.

Note que p0 = a0b0, diretamente. Já para p1, basta somar com um Full Adder os

valores de a1b0 e a0b1. Esta última soma pode gerar carry out. Esse Cout entra na soma de

a2b0, a1b1 e a0b2. Continuando assim, temos uma soma em cascata, implementada com Full

Adders e portas AND, gerando os 8 bits de saída. O circuito multiplicador executa esta soma

em cascata.

2.5. Multiplexador 4 para 1

O Multiplexador de quatro entradas e uma saída é um circuito que, recebendo 4

valores, seleciona, através de dois bits de controle, qual dessas entradas será transmitida para

a saída. No nosso caso, usaremos um Mux 4x1 com barramento de seis bits, pois trataremos

com valores de largura igual a 6 bits.

Os dois códigos de seleção podem assumir 4 configurações distintas, cada uma

relacionando-se a uma entrada. Neste projeto, as entradas serão uma soma, uma variável A,

uma variável B e um produto, relacionadas às configurações 00, 01, 10 e 11, respectivamente.

A saída será um vetor de 6 bits que deverá ser exibido no visor.

2.6. Conversor Binário-BCD

Este conversor recebe 6 bits significativos e converte-os em dois valores BCD de 4

bits cada. Neste caso, o valor da unidade varia de 0 a 9 (0000 a 1001) e o valor da dezena varia

de 0 a 6 (000 a 110). Logo, teremos neste conversor 6 entradas e 7 saídas.

Cada uma das saídas possui uma fórmula específica. Elas dependem de combinações

das entradas, e foram obtidas com o auxílio do software Karma. As fórmulas para as saídas d2,

d1 e d0 (bits da dezena) e u3, u2, u1 e u0 (bits da unidade), dependendo das entradas e0, e1,

e2, e3, e4 e e5 estão dispostas a seguir:

d2 = e5*(e4+!e4*e3) (3)

d1 = e4*(!e5*(e3+!e3*e2)+e5*e3*e2)+e5*!e4*!e3 (4)

d0 = e5*(!e3*(!e4+e4*(e2+!e2*e1))+e4*e3*!e2) +

!e5*(e3*(!e4*(e2+!e2*e1)+e4*e2*e1)+e4*!e3*!e2) (5)

Page 6: Projeto de Conclusão em Circuitos Digitais - UFRGSinf.ufrgs.br/~bsguedes/disc/3/inf01058/ProjetoCD.pdf · Adders e portas AND, gerando os 8 bits de saída. O circuito multiplicador

INF 01058 – Circuitos Digitais – Projeto de Conclusão em Circuitos Digitais

6 | P á g i n a

u3 = e4*(!e2*(!e3*(!e5*e1+e5*!e1)+e5*e3*e1)+!e5*e3*e2*!e1)+

!e4*(!e5*e3*!e2*!e1+e5*!e3*e2*e1) (6)

u2 = !e4*(e2*(!e5*(!e3+e3*e1)+e5*(e3+!e3*!e1))+e5*!e3*!e2*e1)+

e4*(!e2*(!e5*(e3+!e3*!e1)+e5*e3*!e1)+e5*!e3*e2*e1) (7)

u1 = !e4*(!e3*(!e5*e1+e5*!e1)+e3*(e5*e1+!e5*e2*!e1))+

e4*(!e5*(!e3*(!e2*!e1+e2*e1)+e3*!e2*e1)+e5*(e2*(!e3*!e1+e3*e1)+e3*!e2*!e1)) (8)

u0 = e0 (9)

2.7. Conversor Dígito-Segmento

Este conversor recebe 4 bits referentes a um dígito hexadecimal

(de 0 a F) e o converte para ser interpretado por um visor de segmentos

(um visor como o da Figura 2.3).

Este conversor tem 7 saídas – uma para cada segmento. Estas

saídas, novamente, dependem das entradas dos circuitos. Considerando a

numeração s0, s1 ... s6 conforme a Figura 2.3, temos as sete saídas,

novamente obtidas com o auxílio do Karma:

S0 = e0*e1*!e2*e3+!e1*(e0*e2*e3+e3*e0⊕e2) (10)

S1 = e0*!e1*e2*e3+!e3*(e0*e1*e2+!e2*(e1+e0*!e1)) (11)

S2 = e0*e1*!e2*e3+e2*(e3*(e1+!e0*!e1)+!e3*e0⊕e1) (12)

S3 = !e0*!e1*e2*e3+!e3*(e0*e1*e2+!e1*!e2) (13)

S4 = e0*!e1*!e2*e3+!e3*(e0+!e0*!e1*e2) (14)

S5 = !e0*e1*!e2*!e3+e2*e3*(e1+!e0*!e1) (15)

S6 = e1*e3*(!e0⊕e2)+!e3*(!e1*(e0⊕e2)+e0*e1*e2) (16)

Temos a partir das fórmulas (10) a (16), 16 saídas diferentes possíveis no visor,

correspondentes às 16 entradas. Estas saídas podem ser visualizadas na Figura 2.4.

Fig. 2.4 – Saídas no visor dependentes das entradas do circuito “conversor Dígito-Segmento”.

2.8. Verificação de Overflow

Por fim, o circuito faz uma verificação para saber se houve overflow na multiplicação.

Quando o usuário pede para exibir o produto, e este valor excede 63, dois traços e os pontos

decimais aparecem no visor. A verificação de overflow precisa ser executada para todas as

saídas. A verificação de overflow é simples: haverá overflow sempre que ao menos um dos

dois bits mais significativos da multiplicação for igual a 1.

0

21

3

4 5

6 Fig. 2.3 – Visor de

sete segmentos

Page 7: Projeto de Conclusão em Circuitos Digitais - UFRGSinf.ufrgs.br/~bsguedes/disc/3/inf01058/ProjetoCD.pdf · Adders e portas AND, gerando os 8 bits de saída. O circuito multiplicador

INF 01058 – Circuitos Digitais – Projeto de Conclusão em Circuitos Digitais

7 | P á g i n a

3. Implementação

3.1. Full Adder

A implementação do Full Adder conforme as fórmulas (1) e (2) está disposta na

Figura 3.1(a). O símbolo que usaremos para o Full Adder está na Figura 3.1(b).

(a)

(b)

Fig. 3.1– (a) Implementação do Full Adder e (b) seu símbolo.

Todas as possibilidades de operação com o Full Adder podem ser conferidas na

Figura 3.2.

Fig. 3.2 – Formas de onda para o Full Adder.

3.2. Circuito Somador

O circuito somador discutido na seção 2.3 é um Ripple Carry Adder, implementado

como na Figura 3.3(a) e será representado pelo símbolo da Figura 3.3 (b).

(a)

(b)

Fig. 3.3– (a) Implementação do Circuito Somador e (b) seu símbolo.

Page 8: Projeto de Conclusão em Circuitos Digitais - UFRGSinf.ufrgs.br/~bsguedes/disc/3/inf01058/ProjetoCD.pdf · Adders e portas AND, gerando os 8 bits de saída. O circuito multiplicador

INF 01058 – Circuitos Digitais – Projeto de Conclusão em Circuitos Digitais

8 | P á g i n a

Como temos 512 possibilidades de soma (16*16*2), não podemos representar todas

as possibilidades de soma. Assim, um gráfico de formas de ondas mostrando algumas

combinações está exibido na Figura 3.4.

Fig. 3.4 – Algumas combinações de entrada e saída para o Circuito Somador.

3.3. Circuito Multiplicador

Uma forma de implementação para o circuito que realiza a multiplicação, conforme

discutido na seção 2.5, é exibida na Figura 3.5(a). Seu símbolo, naturalmente, está na Figura

3.5(b).

(a)

(b)

Fig. 3.5 – (a) Implementação do Circuito Multiplicador e (b) seu símbolo.

Novamente temos muitas possibilidades de produto. Algumas delas estão mostradas

na Figura 3.6 como um modo de mostrar que o circuito multiplicador funciona.

Page 9: Projeto de Conclusão em Circuitos Digitais - UFRGSinf.ufrgs.br/~bsguedes/disc/3/inf01058/ProjetoCD.pdf · Adders e portas AND, gerando os 8 bits de saída. O circuito multiplicador

INF 01058 – Circuitos Digitais – Projeto de Conclusão em Circuitos Digitais

9 | P á g i n a

Fig. 3.6 – Algumas combinações de entrada e saída para o Circuito Multiplicador.

3.4. Multiplexador 4 para 1

O multiplexador 4 para 1 de 6 bits consiste em um agrupamento de seis Mux 4x1

mais simples, que consideram um bit de cada vez. O multiplexador 4x1 de um bit está

implementado na Figura 3.7(a), seu símbolo na Figura 3.7(b) e as formas de onda, mostrando

que para cada entrada é transmitida para a saída dependendo do sinal de controle está

expressa nas formas de onda da Figura 3.7(c).

(a)

(b)

(c)

Fig. 3.7 – (a) Multiplexador 4x1 de um bit, (b) seu símbolo e (c) formas de onda para alguns casos. Note que

a saída é sempre a forma de onda em vermelho, que corresponde à entrada selecionada pelos sinais de

controle.

O multiplexador 4 para 1 de 6 bits está implementado na Figura 3.9(a), e seu símbolo

na Figura 3.9(b). Algumas formas de onda do multiplexador de barramento de largura 6 bits

estão representadas na Figura 3.8.

Page 10: Projeto de Conclusão em Circuitos Digitais - UFRGSinf.ufrgs.br/~bsguedes/disc/3/inf01058/ProjetoCD.pdf · Adders e portas AND, gerando os 8 bits de saída. O circuito multiplicador

INF 01058 – Circuitos Digitais – Projeto de Conclusão em Circuitos Digitais

10 | P á g i n a

Fig. 3.8 – Algumas combinações de entrada e saída para o Multiplexador 4x1 de 6 bits.

(a)

(b)

Fig. 3.9 – (a) Multiplexador 4x1 de seis bits e (b) seu símbolo.

3.5. Conversor Binário-BCD

O conversor binário BCD gera 7 saídas através de 6 entradas, conforme descrito na

seção 2.6. A implementação de cada saída obedece às fórmulas (3) a (9). As implementações

destas saídas, com suas formas de onda, podem ser vistas nas Figuras 3.10 à 3.16. Os símbolos

para todas os circuitos estão na Figura 3.17.

(a)

(b)

Fig. 3.10 – (a) Saída d2 do conversor Binário-BCD, implementada da fórmula (3) e (b) formas de onda para

alguns casos. Note que a saída só se torna 1 para valores maiores que 40, o que faz sentido, já que apenas a

partir do número 4 o terceiro bit de um número se torna 1.

Page 11: Projeto de Conclusão em Circuitos Digitais - UFRGSinf.ufrgs.br/~bsguedes/disc/3/inf01058/ProjetoCD.pdf · Adders e portas AND, gerando os 8 bits de saída. O circuito multiplicador

INF 01058 – Circuitos Digitais – Projeto de Conclusão em Circuitos Digitais

11 | P á g i n a

(a)

(b)

Fig. 3.11 – (a) Saída d1 do conversor Binário-BCD, implementada da fórmula (4) e (b) formas de onda para

alguns casos.

(a)

(b)

Fig. 3.12 – (a) Saída d0 do conversor Binário-BCD, implementada da fórmula (5) e (b) formas de onda para

alguns casos.

Page 12: Projeto de Conclusão em Circuitos Digitais - UFRGSinf.ufrgs.br/~bsguedes/disc/3/inf01058/ProjetoCD.pdf · Adders e portas AND, gerando os 8 bits de saída. O circuito multiplicador

INF 01058 – Circuitos Digitais – Projeto de Conclusão em Circuitos Digitais

12 | P á g i n a

(a)

(b)

Fig. 3.13 – (a) Saída u3 do conversor Binário-BCD, implementada da fórmula (6) e (b) formas de onda

para alguns casos.

Page 13: Projeto de Conclusão em Circuitos Digitais - UFRGSinf.ufrgs.br/~bsguedes/disc/3/inf01058/ProjetoCD.pdf · Adders e portas AND, gerando os 8 bits de saída. O circuito multiplicador

INF 01058 – Circuitos Digitais – Projeto de Conclusão em Circuitos Digitais

13 | P á g i n a

(a)

(b)

Fig. 3.14 – (a) Saída u2 do conversor Binário-BCD, implementada da fórmula (7) e (b) formas de onda

para alguns casos.

Page 14: Projeto de Conclusão em Circuitos Digitais - UFRGSinf.ufrgs.br/~bsguedes/disc/3/inf01058/ProjetoCD.pdf · Adders e portas AND, gerando os 8 bits de saída. O circuito multiplicador

INF 01058 – Circuitos Digitais – Projeto de Conclusão em Circuitos Digitais

14 | P á g i n a

(a)

(b)

Fig. 3.15 – (a) Saída u1 do conversor Binário-BCD, implementada da fórmula (8) e (b) formas de onda

para alguns casos.

(a)

(b)

Fig. 3.16 – (a) Saída u0 do conversor Binário-BCD, implementada da fórmula (9) e (b) formas de onda.

Neste caso, temos apenas duas situações. Isto faz sentido também, já que a saída u0 só é ligada em

números ímpares, que por sua vez tem o bit menos significativo sempre no valor 1.

(a) (b) (c) (d) (e) (f) (g)

Fig. 3.17 – Símbolos das implementações das Figuras (a) 3.10, (b) 3.11, (c) 3.12, (d) 3.13, (e) 3.14, (f) 3.15

e (g) 3.16.

Page 15: Projeto de Conclusão em Circuitos Digitais - UFRGSinf.ufrgs.br/~bsguedes/disc/3/inf01058/ProjetoCD.pdf · Adders e portas AND, gerando os 8 bits de saída. O circuito multiplicador

INF 01058 – Circuitos Digitais – Projeto de Conclusão em Circuitos Digitais

15 | P á g i n a

O conversor, finalmente, é a união destas sete implementações. Ele é implementado

conforme a figura 3.18(a), seu símbolo está na Figura 3.18(b) e algumas formas de onda na

Figura 3.18(c).

(a)

(b)

(c)

Fig. 3.18 – (a) Implementação do conversor Binário-BCD, (b) seu símbolo e (c) formas de onda para alguns

casos.

3.6. Conversor Dígito-Segmento

O conversor dígito-segmentos gera 7 saídas através de 4 entradas, conforme descrito

na seção 2.7. A implementação de cada saída obedece às fórmulas (10) a (16). As

implementações destas saídas, com suas formas de onda, podem ser vistas nas Figuras 3.19 à

3.25. Os símbolos para todas os circuitos estão na Figura 3.26.

Nas formas de onda, quando um sinal está em 0 (desligado), significa que o led

correspondente àquela saída irá acender (a placa funciona acendendo os leds quando o sinal

está em 0).

Page 16: Projeto de Conclusão em Circuitos Digitais - UFRGSinf.ufrgs.br/~bsguedes/disc/3/inf01058/ProjetoCD.pdf · Adders e portas AND, gerando os 8 bits de saída. O circuito multiplicador

INF 01058 – Circuitos Digitais – Projeto de Conclusão em Circuitos Digitais

16 | P á g i n a

(a)

(b)

Fig. 3.19 – (a) Saída s0 do conversor dígito-segmento, correspondente ao segmento superior, implementada

conforme a fórmula (10) e (b) formas de onda para as 16 possibilidades de entradas desta saída.

(a)

(b)

Fig. 3.20 – (a) Saída s1 do conversor dígito-segmento, correspondente ao segmento superior esquerdo,

implementada conforme a fórmula (11) e (b) formas de onda para as 16 possibilidades de entradas desta

saída.

Page 17: Projeto de Conclusão em Circuitos Digitais - UFRGSinf.ufrgs.br/~bsguedes/disc/3/inf01058/ProjetoCD.pdf · Adders e portas AND, gerando os 8 bits de saída. O circuito multiplicador

INF 01058 – Circuitos Digitais – Projeto de Conclusão em Circuitos Digitais

17 | P á g i n a

(a)

(b)

Fig. 3.21 – (a) Saída s2 do conversor dígito-segmento, correspondente ao segmento superior direito,

implementada conforme a fórmula (12) e (b) formas de onda para as 16 possibilidades de entradas desta

saída.

(a)

(b)

Fig. 3.22 – (a) Saída s3 do conversor dígito-segmento, correspondente ao segmento central, implementada

conforme a fórmula (13) e (b) formas de onda para as 16 possibilidades de entradas desta saída.

Page 18: Projeto de Conclusão em Circuitos Digitais - UFRGSinf.ufrgs.br/~bsguedes/disc/3/inf01058/ProjetoCD.pdf · Adders e portas AND, gerando os 8 bits de saída. O circuito multiplicador

INF 01058 – Circuitos Digitais – Projeto de Conclusão em Circuitos Digitais

18 | P á g i n a

(a)

(b)

Fig. 3.23 – (a) Saída s4 do conversor dígito-segmento, correspondente ao segmento inferior esquerdo,

implementada conforme a fórmula (14) e (b) formas de onda para as 16 possibilidades de entradas desta

saída.

(a)

(b)

Fig. 3.24 – (a) Saída s5 do conversor dígito-segmento, correspondente ao segmento inferior direito,

implementada conforme a fórmula (15) e (b) formas de onda para as 16 possibilidades de entradas desta

saída.

Page 19: Projeto de Conclusão em Circuitos Digitais - UFRGSinf.ufrgs.br/~bsguedes/disc/3/inf01058/ProjetoCD.pdf · Adders e portas AND, gerando os 8 bits de saída. O circuito multiplicador

INF 01058 – Circuitos Digitais – Projeto de Conclusão em Circuitos Digitais

19 | P á g i n a

(a)

(b)

Fig. 3.25 – (a) Saída s6 do conversor dígito-segmento, correspondente ao segmento inferior, implementada

conforme a fórmula (16) e (b) formas de onda para as 16 possibilidades de entradas desta saída.

(a) (b) (c) (d) (e) (f) (g)

Fig. 3.26 – Símbolos das implementações das Figuras (a) 3.19, (b) 3.20, (c) 3.21, (d) 3.22, (e) 3.23, (f) 3.24

e (g) 3.25.

O conversor dígito-segmento, finalmente, é a união destas sete implementações. Ele

é implementado conforme a figura 3.27(a), seu símbolo está na Figura 3.27(b) e algumas

formas de onda na Figura 3.27(c).

Page 20: Projeto de Conclusão em Circuitos Digitais - UFRGSinf.ufrgs.br/~bsguedes/disc/3/inf01058/ProjetoCD.pdf · Adders e portas AND, gerando os 8 bits de saída. O circuito multiplicador

INF 01058 – Circuitos Digitais – Projeto de Conclusão em Circuitos Digitais

20 | P á g i n a

(a)

(b)

(c)

Fig. 3.27 – (a) Implementação do conversor dígito-segmento, (b) seu símbolo e (c) formas de onda para os

16 casos.

3.7. Verificação de Overflow

Esta última parte recebe 14 valores de saída dos dois circuitos

Dígito-Segmento usados (um para o dígito da dezena, outro para o da

unidade), e faz a verificação se há um overflow na multiplicação.

Quando há overflow, a indicação da Figura 3.28 é exibida no visor de

segmentos. Para ela aparecer, é preciso realizar testes nas saídas. Estes

testes estão dispostos na Figura 3.29. As formas de onda provando que

eles funcionam serão mostradas adiante, juntamente com o resto do

circuito.

Fig. 3.28 – Sinal de

overflow na multipli-

cação.

Page 21: Projeto de Conclusão em Circuitos Digitais - UFRGSinf.ufrgs.br/~bsguedes/disc/3/inf01058/ProjetoCD.pdf · Adders e portas AND, gerando os 8 bits de saída. O circuito multiplicador

INF 01058 – Circuitos Digitais – Projeto de Conclusão em Circuitos Digitais

21 | P á g i n a

Fig. 3.29 – Portas que realizam a verificação do overflow na multiplicação. As entradas s[13..0] são geradas

pelo circuito dígito-segmento, e as saídas X[13..0] irão para a placa (sinais dos leds).

O sinal over é uma indicação que há overflow no produto. Ele é uma OR entre os

dígitos 6 e 7 da multiplicação gerada pelo circuito da Figura 3.5. Os sinais c0 e c1 são códigos

de controle do Mux 4x1 da Figura 3.7. A multiplicação só é solicitada quando ambos sinais

estão em 1.

3.8. Outros detalhes

Há mais alguns detalhes específicos à implementação, não discutidos no capítulo 2.

Similar ao fato de que os leds da placa acendem apenas quando um sinal igual a 0 está na

saída, as entradas também são “invertidas”. Para isso, é preciso inverter os sinais de entrada

como na Figura 3.30. As entradas A e B na placa correspondem a um switch de 8 botões como

na Figura 3.31. Nesta mesma figura, está indicado qual botão corresponde a qual entrada.

Quando o botão é pressionado, é considerado sinal 1 para aquela entrada.

Outro detalhe está no fato de o Multiplexador aceitar apenas entradas de largura

igual a 6. A única entrada que satisfaz esta condição é a da multiplicação. Para isso, é preciso

setar alguns bits em 0 para a soma e para as entradas A e B conforme a Figura 3.32.

Os pontinhos da Figura 3.28 acendem quando há overflow na multiplicação. A

implementação para o acendimento destes pontinhos e a geração do sinal de overflow

comentada na seção 3.7 estão na Figura 3.33.

Page 22: Projeto de Conclusão em Circuitos Digitais - UFRGSinf.ufrgs.br/~bsguedes/disc/3/inf01058/ProjetoCD.pdf · Adders e portas AND, gerando os 8 bits de saída. O circuito multiplicador

INF 01058 – Circuitos Digitais – Projeto de Conclusão em Circuitos Digitais

22 | P á g i n a

Fig. 3.30 – Inversão das entradas (A, B e sinais de seleção).

b0

b1

b2

b3

a0

a1

a2

a3

Fig. 3.31 – Switch para as entradas A e B.

Fig. 3.33 – Geração de sinais indicativos de overflow.

3.9. Circuito Completo

O circuito completo está exibido nas Figuras 3.34 e 3.35. Formas de onda para

algumas entradas estão na Figura 3.36. Neste circuito já estão incluídas as pinagens que cada

entrada e saída possui na placa. O bloco entry, da Figura 3.34, realiza a operação da figura 3.30

(apenas inverte as entradas).

Fig. 3.32 – Bits setados em 0 para serem

aceitos pelo Multiplexador.

Page 23: Projeto de Conclusão em Circuitos Digitais - UFRGSinf.ufrgs.br/~bsguedes/disc/3/inf01058/ProjetoCD.pdf · Adders e portas AND, gerando os 8 bits de saída. O circuito multiplicador

INF 01058 – Circuitos Digitais – Projeto de Conclusão em Circuitos Digitais

23 | P á g i n a

Fig. 3.34 – Circuito final (parte 1).

Fig. 3.35 – Circuito final (parte 2).

Page 24: Projeto de Conclusão em Circuitos Digitais - UFRGSinf.ufrgs.br/~bsguedes/disc/3/inf01058/ProjetoCD.pdf · Adders e portas AND, gerando os 8 bits de saída. O circuito multiplicador

INF 01058 – Circuitos Digitais – Projeto de Conclusão em Circuitos Digitais

24 | P á g i n a

Fig. 3.36 –Formas de onda para alguns casos de entrada no circuito final. Observações: a entrada é invertida, sob a

linha das entradas e[7..0] está a entrada real. Coloquei em formato hexadecimal no simulador, para que o primeiro

dígito corresponda a entrada A e o segundo dígito corresponda a entrada B. Note ainda que estes sinais de seleção

sel1 e sel0 estão invertidos. A operação que eles selecionam no Mux também está explicitada na Figura. No canto

inferior esquerdo da figura está ressaltado qual led corresponde cada saída.

4. Resultados

4.1. Report

Executando a compilação do projeto no modo real (considerando os atrasos), temos

algumas informações interessantes do arquivo de relatório que o MaxPlus gera. Eis algumas:

** RESUMO ** Dispositivo: EPF10K20RC240-3 Pinos de entrada: 10 Pinos de saída: 16 Logic Cells utilizadas: 103 Porcentagem de Logic Cells usadas: 8% (logo o chip deve ter em torno de 1200 células lógicas)

Das informações acima se deduz que este circuito utiliza muito pouco da capacidade

total do Chip, seria mais adequado procurar um chip menor que fosse mais “ocupado” pelo

circuito (não há necessidade de mais de 1000 logic cells para este circuito).

** PIN/LOCATION/CHIP ASSIGNMENTS ** (setados pelo usuário) projeto@41 e0 projeto@40 e1 projeto@39 e2 projeto@38 e3 projeto@36 e4 projeto@35 e5 projeto@34 e6 projeto@33 e7

Page 25: Projeto de Conclusão em Circuitos Digitais - UFRGSinf.ufrgs.br/~bsguedes/disc/3/inf01058/ProjetoCD.pdf · Adders e portas AND, gerando os 8 bits de saída. O circuito multiplicador

INF 01058 – Circuitos Digitais – Projeto de Conclusão em Circuitos Digitais

25 | P á g i n a

projeto@14 ponto1 projeto@25 ponto2 projeto@29 sel0 projeto@28 sel1 projeto@17 X0 projeto@23 X1 projeto@18 X2 projeto@24 X3 projeto@21 X4 projeto@19 X5 projeto@20 X6 projeto@6 X7 projeto@12 X8 projeto@7 X9 projeto@13 X10 projeto@11 X11 projeto@8 X12 projeto@9 X13

Resumo dos pinos de entrada e saída que o circuito utiliza.

** RESOURCE USAGE ** Total dedicated input pins used: 0/6 (0%) Total I/O pins used: 26/183 (14%) Total logic cells used: 103/1152 (8%) Total embedded cells used: 0/48 (0%) Total EABs used: 0/6 (0%) Average fan-in: 3.58/4 (89%) Total fan-in: 369/4608 (8%)

Resumo do uso de recursos: usados 26 pinos de I/O do total de 183 (apenas 14%),

103 células das 1152 disponíveis. Temos também um fan-in médio de 3,58.

4.2. Timing Analysis

É possível fazer, para este chip, uma análise do atraso total que ele causa no circuito

quando atualizamos um sinal de entrada até que este sinal atualize as saídas. Esta tabela

encontra-se na Figura 4.1.

Fig. 4.1 – Atrasos de atualização da saída após a atualização de alguma entrada, para o circuito das Figuras

3.34 e 3.35 no chip EPF10K20RC240-3, da família FLEX10K da Altera. Para cada célula, temos uma entrada e

uma saída relacionadas. O valor da esquerda representa o atraso do melhor caso e o valor da direita o pior

caso (estes melhor e pior casos dependem do estado naquele momento do resto do circuito).

Page 26: Projeto de Conclusão em Circuitos Digitais - UFRGSinf.ufrgs.br/~bsguedes/disc/3/inf01058/ProjetoCD.pdf · Adders e portas AND, gerando os 8 bits de saída. O circuito multiplicador

INF 01058 – Circuitos Digitais – Projeto de Conclusão em Circuitos Digitais

26 | P á g i n a

Alguns resultados interessantes que podemos deduzir a partir da Figura 4.1: note que

atualizar um dos códigos de seleção na média causa um atraso menor nas saídas do que

atualizar alguma das entradas A ou B. Isto faz sentido pois se supõe que as entradas no

multiplexador já estejam sempre prontas esperando apenas pelo código de controle. Este

pequeno atraso ainda ocorre apenas porque é necessário verificar o overflow toda a vez que

se atualiza os códigos de seleção, já que a marca de overflow deve ser exibida sempre que o

produto excede 63.

Ainda pode-se perceber que nas saídas X0 a X6 o atraso é em média 15% maior que o

atraso nas saídas X7 a X13, quando ocorre a atualização de alguma entrada dentre A e B. Isto

ocorre pois para as saídas correspondentes a X7 e X13 dependem apenas dos valores d2, d1 e

d0 calculados pelo circuito conversor Binário-BCD. Uma das entradas do circuito dígito-

segmento que recebe d2, d1 e d0 é fixada em 0, logo há um atraso menor ali já que o valor de

uma entrada nunca é alterado.

Quando atualizamos algum dos sinais de seleção, a geração dos sinais de overflow

(os pontos decimais) não possui melhor e pior caso, mas apenas um único caso. Isso ocorre

porque, conforme a Figura 3.33, os sinais de saída ponto1 e ponto2 dependem apenas de c1,

c0 e over. Como over não é alterado ao se mudar um sinal de seleção, eles dependem apenas

dos próprios sinais que são alterados, logo, este tempo é fixo.

Por fim, algo que pode parecer estranho, mas quando analisado com mais cuidado

faz sentido: o atraso para as entradas A e B não deveria ser igual (ou seja, e0 = e4, e1 = e5,

etc)? Deveria, se não houvesse uma parte do circuito que trata A e B de modo diferente. Note

que na soma e no multiplexador, os sinais de A e B estão sempre andando paralelamente.

Porém, na multiplicação, eles são tratados de modo diferente. A multiplicação do circuito da

Figura 3.5 executa somas paralelas com os Full Adders que dependem de A e B e dependem de

certos carries out gerados por Full Adders anteriores. Logo, as diferenças de atrasos ao se

atualizar A e atualizar B são justificadas por causa da parte da multiplicação (essas diferenças

são bem pequenas, menores que 10% em média).

Page 27: Projeto de Conclusão em Circuitos Digitais - UFRGSinf.ufrgs.br/~bsguedes/disc/3/inf01058/ProjetoCD.pdf · Adders e portas AND, gerando os 8 bits de saída. O circuito multiplicador

INF 01058 – Circuitos Digitais – Projeto de Conclusão em Circuitos Digitais

27 | P á g i n a

5. Conclusões

Apesar da implementação de partes do circuito, como os dois Conversores das

seções 3.5 e 3.6 ser bem demorada, após ela ser realizada fica bem fácil o uso dele com outros

componentes. O projeto em si ficou bem robusto: é fácil visualizar progressivamente as etapas

dele.

A implementação do somador, do multiplicador e do multiplexador foi trivial, devido

à simplicidade e implementação intuitiva deles. O que mais exigiu tempo foi o tratamento do

overflow da multiplicação. Primeiramente, eu planejava exibir valores até 99 no visor (o que

exigia sete bits de representação), porém, após estar quase pronto, vi que teria que ser refeita

todo o circuito conversor Binário-BCD.

O problema de tratar com o overflow se intensificou quando foi necessário inverter

valores para que fossem exibidos corretamente na placa. A implementação da verificação da

Figura 3.29 levou tempo e exigiu vários testes.

Finalmente, os testes realizados na seção 4 provaram que o chip EPF10K20RC240-3,

da família FLEX10K da Altera é bastante poderoso. Este circuito, que nos pareceu

relativamente grande, utiliza apenas 8% da capacidade total do chip e apenas 14% das

entradas e saídas disponíveis. Assim, ele possibilita uma gama de aplicações.

6. Referências

Todos os circuitos aqui representados foram montados com a ajuda do software

Max+Plus II version 10.2 07/10/2002, de propriedade de Altera Corporation. A versão gratuita

está disponível no website <www.altera.com>.

As fórmulas (3) a (16) foram obtidas com o apoio do software Karma, de propriedade

da Nangate. A versão gratuita está disponível no website < www.inf.ufrgs.br/lagarto>.