Escolar Documentos
Profissional Documentos
Cultura Documentos
Instituto de Informtica
Projeto de Concluso em
Circuitos Digitais
Parte I Somador e Multiplicador
Autor: Bruno Silva Guedes
Id.: 159033
Sumrio
1. Introduo ................................................................................................................................. 3
2. Descrio ................................................................................................................................... 3
2.1. Especificaes ..................................................................................................................... 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 Binrio-BCD ....................................................................................................... 5
2.7. Conversor Dgito-Segmento ............................................................................................... 6
2.8. Verificao de Overflow ..................................................................................................... 6
3. Implementao .......................................................................................................................... 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 Binrio-BCD ..................................................................................................... 10
3.6. Conversor Dgito-Segmento ............................................................................................. 15
3.7. Verificao 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. Concluses ............................................................................................................................... 27
6. Referncias .............................................................................................................................. 27
2|P gin a
1. Introduo
A primeira parte do Projeto de Concluso para a disciplina INF01058: Circuitos
Digitais consiste em projetar um circuito capaz de executar, a partir de dois valores de
entradas, algumas operaes sobre estes valores. O circuito deve ser projetado para rodar no
chip EPF10K20RC240-3, da famlia FLEX10K da Altera.
O circuito, que deve exibir no display de leds disposto na placa didtica que contm o
chip citado resultados de operaes sobre os valores de entrada, foi totalmente projetado no
software MaxPlus, tambm de propriedade da Altera.
As operaes que o circuito realiza so selecionadas atravs de um dispositivo
multiplexador, e elas so: produto das entradas, soma das entradas, visualizao da primeira
parcela e visualizao da segunda parcela.
2. Descrio
2.1. Especificaes
Primeiro necessrio que sejam apresentadas algumas especificaes do projeto:
Soma as duas entradas de 4 bits (exibindo o valor decimal da soma quando o valor
de seleo 00).
Mostra a entrada A no visor, em decimal (quando a seleo 10).
Mostra a entrada B no visor, em decimal (quando a seleo 01).
Exibe o produto das entradas no visor, em decimal (um cdigo de overflow deve
ser exibido quando o valor do produto excede 63).
(1)
(2)
a
0
0
0
0
1
1
1
1
b Cin
0 0
0 1
1 0
1 1
0 0
0 1
1 0
1 1
S Cout
0 0
1 0
1 0
0 1
1 0
0 1
0 1
1 1
(a)
Concatenando vrios Full Adders, cada um A sada um XOR das trs entradas,
recebendo como carry in o carry out do Full Adder enquanto o carry out a soma dos produtos
das entradas, duas a duas.
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 sada 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.
4|P gin a
+
p7
a3b3
p6
a3b2
a2b3
p5
a3b1
a2b2
a1b3
p4
a3
b3
a3b0
a2b1
a1b2
a0b3
p3
a2
b2
a2b0
a1b1
a0b2
a1
b1
a1b0
a0b1
a0
b0
a0b0
p2
p1
p0
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 sada. O circuito multiplicador executa esta soma
em cascata.
2.5. Multiplexador 4 para 1
O Multiplexador de quatro entradas e uma sada um circuito que, recebendo 4
valores, seleciona, atravs de dois bits de controle, qual dessas entradas ser transmitida para
a sada. No nosso caso, usaremos um Mux 4x1 com barramento de seis bits, pois trataremos
com valores de largura igual a 6 bits.
Os dois cdigos de seleo podem assumir 4 configuraes distintas, cada uma
relacionando-se a uma entrada. Neste projeto, as entradas sero uma soma, uma varivel A,
uma varivel B e um produto, relacionadas s configuraes 00, 01, 10 e 11, respectivamente.
A sada ser um vetor de 6 bits que dever ser exibido no visor.
2.6. Conversor Binrio-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 sadas.
Cada uma das sadas possui uma frmula especfica. Elas dependem de combinaes
das entradas, e foram obtidas com o auxlio do software Karma. As frmulas para as sadas 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 esto 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)
5|P gin 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
3
5
6
S0 = e0*e1*!e2*e3+!e1*(e0*e2*e3+e3*e0e2)
S1 = e0*!e1*e2*e3+!e3*(e0*e1*e2+!e2*(e1+e0*!e1))
S2 = e0*e1*!e2*e3+e2*(e3*(e1+!e0*!e1)+!e3*e0e1)
S3 = !e0*!e1*e2*e3+!e3*(e0*e1*e2+!e1*!e2)
S4 = e0*!e1*!e2*e3+!e3*(e0+!e0*!e1*e2)
S5 = !e0*e1*!e2*!e3+e2*e3*(e1+!e0*!e1)
S6 = e1*e3*(!e0e2)+!e3*(!e1*(e0e2)+e0*e1*e2)
(10)
(11)
(12)
(13)
(14)
(15)
(16)
Temos a partir das frmulas (10) a (16), 16 sadas diferentes possveis no visor,
correspondentes s 16 entradas. Estas sadas podem ser visualizadas na Figura 2.4.
Fig. 2.4 Sadas no visor dependentes das entradas do circuito conversor Dgito-Segmento.
6|P gin a
3. Implementao
3.1. Full Adder
A implementao do Full Adder conforme as frmulas (1) e (2) est disposta na
Figura 3.1(a). O smbolo que usaremos para o Full Adder est na Figura 3.1(b).
(b)
(a)
Fig. 3.1 (a) Implementao do Full Adder e (b) seu smbolo.
(b)
(a)
Fig. 3.3 (a) Implementao do Circuito Somador e (b) seu smbolo.
7|P gin a
(a)
(b)
Fig. 3.5 (a) Implementao do Circuito Multiplicador e (b) seu smbolo.
8|P gin a
(b)
(a)
(c)
Fig. 3.7 (a) Multiplexador 4x1 de um bit, (b) seu smbolo e (c) formas de onda para alguns casos. Note que
a sada sempre a forma de onda em vermelho, que corresponde entrada selecionada pelos sinais de
controle.
9|P gin a
Fig. 3.8 Algumas combinaes de entrada e sada para o Multiplexador 4x1 de 6 bits.
(b)
(a)
Fig. 3.9 (a) Multiplexador 4x1 de seis bits e (b) seu smbolo.
(a)
(b)
Fig. 3.10 (a) Sada d2 do conversor Binrio-BCD, implementada da frmula (3) e (b) formas de onda para
alguns casos. Note que a sada s se torna 1 para valores maiores que 40, o que faz sentido, j que apenas a
partir do nmero 4 o terceiro bit de um nmero se torna 1.
10 | P g i n a
(a)
(b)
Fig. 3.11 (a) Sada d1 do conversor Binrio-BCD, implementada da frmula (4) e (b) formas de onda para
alguns casos.
(a)
(b)
Fig. 3.12 (a) Sada d0 do conversor Binrio-BCD, implementada da frmula (5) e (b) formas de onda para
alguns casos.
11 | P g i n a
(a)
(b)
Fig. 3.13 (a) Sada u3 do conversor Binrio-BCD, implementada da frmula (6) e (b) formas de onda
para alguns casos.
12 | P g i n a
(a)
(b)
Fig. 3.14 (a) Sada u2 do conversor Binrio-BCD, implementada da frmula (7) e (b) formas de onda
para alguns casos.
13 | P g i n a
(a)
(b)
Fig. 3.15 (a) Sada u1 do conversor Binrio-BCD, implementada da frmula (8) e (b) formas de onda
para alguns casos.
(a)
(b)
Fig. 3.16 (a) Sada u0 do conversor Binrio-BCD, implementada da frmula (9) e (b) formas de onda.
Neste caso, temos apenas duas situaes. Isto faz sentido tambm, j que a sada u0 s ligada em
nmeros mpares, que por sua vez tem o bit menos significativo sempre no valor 1.
(a)
(b)
(c)
(d)
(e)
(f)
(g)
Fig. 3.17 Smbolos das implementaes das Figuras (a) 3.10, (b) 3.11, (c) 3.12, (d) 3.13, (e) 3.14, (f) 3.15
e (g) 3.16.
14 | P g i n a
(b)
(a)
(c)
Fig. 3.18 (a) Implementao do conversor Binrio-BCD, (b) seu smbolo e (c) formas de onda para alguns
casos.
15 | P g i n a
(a)
(b)
Fig. 3.19 (a) Sada s0 do conversor dgito-segmento, correspondente ao segmento superior, implementada
conforme a frmula (10) e (b) formas de onda para as 16 possibilidades de entradas desta sada.
(a)
(b)
Fig. 3.20 (a) Sada s1 do conversor dgito-segmento, correspondente ao segmento superior esquerdo,
implementada conforme a frmula (11) e (b) formas de onda para as 16 possibilidades de entradas desta
sada.
16 | P g i n a
(a)
(b)
Fig. 3.21 (a) Sada s2 do conversor dgito-segmento, correspondente ao segmento superior direito,
implementada conforme a frmula (12) e (b) formas de onda para as 16 possibilidades de entradas desta
sada.
(a)
(b)
Fig. 3.22 (a) Sada s3 do conversor dgito-segmento, correspondente ao segmento central, implementada
conforme a frmula (13) e (b) formas de onda para as 16 possibilidades de entradas desta sada.
17 | P g i n a
(a)
(b)
Fig. 3.23 (a) Sada s4 do conversor dgito-segmento, correspondente ao segmento inferior esquerdo,
implementada conforme a frmula (14) e (b) formas de onda para as 16 possibilidades de entradas desta
sada.
(a)
(b)
Fig. 3.24 (a) Sada s5 do conversor dgito-segmento, correspondente ao segmento inferior direito,
implementada conforme a frmula (15) e (b) formas de onda para as 16 possibilidades de entradas desta
sada.
18 | P g i n a
(a)
(b)
Fig. 3.25 (a) Sada s6 do conversor dgito-segmento, correspondente ao segmento inferior, implementada
conforme a frmula (16) e (b) formas de onda para as 16 possibilidades de entradas desta sada.
(a)
(b)
(c)
(d)
(e)
(f)
(g)
Fig. 3.26 Smbolos das implementaes das Figuras (a) 3.19, (b) 3.20, (c) 3.21, (d) 3.22, (e) 3.23, (f) 3.24
e (g) 3.25.
19 | P g i n a
(b)
(a)
(c)
Fig. 3.27 (a) Implementao do conversor dgito-segmento, (b) seu smbolo e (c) formas de onda para os
16 casos.
20 | P g i n a
Fig. 3.29 Portas que realizam a verificao do overflow na multiplicao. As entradas s[13..0] so geradas
pelo circuito dgito-segmento, e as sadas X[13..0] iro para a placa (sinais dos leds).
O sinal over uma indicao que h overflow no produto. Ele uma OR entre os
dgitos 6 e 7 da multiplicao gerada pelo circuito da Figura 3.5. Os sinais c0 e c1 so cdigos
de controle do Mux 4x1 da Figura 3.7. A multiplicao s solicitada quando ambos sinais
esto em 1.
3.8. Outros detalhes
H mais alguns detalhes especficos implementao, no discutidos no captulo 2.
Similar ao fato de que os leds da placa acendem apenas quando um sinal igual a 0 est na
sada, as entradas tambm so 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 botes como
na Figura 3.31. Nesta mesma figura, est indicado qual boto corresponde a qual entrada.
Quando o boto 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 condio a da multiplicao. 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 multiplicao. A
implementao para o acendimento destes pontinhos e a gerao do sinal de overflow
comentada na seo 3.7 esto na Figura 3.33.
21 | P g i n a
b0
b1
b2
b3
a0
a1
a2
a3
22 | P g i n a
23 | P g i n a
Fig. 3.36 Formas de onda para alguns casos de entrada no circuito final. Observaes: 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
dgito corresponda a entrada A e o segundo dgito corresponda a entrada B. Note ainda que estes sinais de seleo
sel1 e sel0 esto invertidos. A operao que eles selecionam no Mux tambm est explicitada na Figura. No canto
inferior esquerdo da figura est ressaltado qual led corresponde cada sada.
4. Resultados
4.1. Report
Executando a compilao do projeto no modo real (considerando os atrasos), temos
algumas informaes interessantes do arquivo de relatrio que o MaxPlus gera. Eis algumas:
** RESUMO **
Dispositivo: EPF10K20RC240-3
Pinos de entrada: 10
Pinos de sada: 16
Logic Cells utilizadas: 103
Porcentagem de Logic Cells usadas: 8% (logo o chip deve ter em torno de 1200
clulas lgicas)
Das informaes 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 (no h necessidade de mais de 1000 logic cells para este circuito).
** PIN/LOCATION/CHIP ASSIGNMENTS **
projeto@41
projeto@40
projeto@39
projeto@38
projeto@36
projeto@35
projeto@34
projeto@33
e0
e1
e2
e3
e4
e5
e6
e7
24 | P g i n a
projeto@14
projeto@25
projeto@29
projeto@28
projeto@17
projeto@23
projeto@18
projeto@24
projeto@21
projeto@19
projeto@20
projeto@6
projeto@12
projeto@7
projeto@13
projeto@11
projeto@8
projeto@9
ponto1
ponto2
sel0
sel1
X0
X1
X2
X3
X4
X5
X6
X7
X8
X9
X10
X11
X12
X13
0/6
26/183
103/1152
0/48
0/6
3.58/4
369/4608
(0%)
(14%)
(8%)
(0%)
(0%)
(89%)
(8%)
Resumo do uso de recursos: usados 26 pinos de I/O do total de 183 (apenas 14%),
103 clulas das 1152 disponveis. Temos tambm um fan-in mdio de 3,58.
4.2. Timing Analysis
possvel fazer, para este chip, uma anlise do atraso total que ele causa no circuito
quando atualizamos um sinal de entrada at que este sinal atualize as sadas. Esta tabela
encontra-se na Figura 4.1.
Fig. 4.1 Atrasos de atualizao da sada aps a atualizao de alguma entrada, para o circuito das Figuras
3.34 e 3.35 no chip EPF10K20RC240-3, da famlia FLEX10K da Altera. Para cada clula, temos uma entrada e
uma sada 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).
25 | P g i n a
Alguns resultados interessantes que podemos deduzir a partir da Figura 4.1: note que
atualizar um dos cdigos de seleo na mdia causa um atraso menor nas sadas do que
atualizar alguma das entradas A ou B. Isto faz sentido pois se supe que as entradas no
multiplexador j estejam sempre prontas esperando apenas pelo cdigo de controle. Este
pequeno atraso ainda ocorre apenas porque necessrio verificar o overflow toda a vez que
se atualiza os cdigos de seleo, j que a marca de overflow deve ser exibida sempre que o
produto excede 63.
Ainda pode-se perceber que nas sadas X0 a X6 o atraso em mdia 15% maior que o
atraso nas sadas X7 a X13, quando ocorre a atualizao de alguma entrada dentre A e B. Isto
ocorre pois para as sadas correspondentes a X7 e X13 dependem apenas dos valores d2, d1 e
d0 calculados pelo circuito conversor Binrio-BCD. Uma das entradas do circuito dgitosegmento 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 seleo, a gerao dos sinais de overflow
(os pontos decimais) no possui melhor e pior caso, mas apenas um nico caso. Isso ocorre
porque, conforme a Figura 3.33, os sinais de sada ponto1 e ponto2 dependem apenas de c1,
c0 e over. Como over no alterado ao se mudar um sinal de seleo, eles dependem apenas
dos prprios sinais que so 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 no deveria ser igual (ou seja, e0 = e4, e1 = e5,
etc)? Deveria, se no 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 esto sempre andando paralelamente.
Porm, na multiplicao, eles so tratados de modo diferente. A multiplicao 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 diferenas de atrasos ao se
atualizar A e atualizar B so justificadas por causa da parte da multiplicao (essas diferenas
so bem pequenas, menores que 10% em mdia).
26 | P g i n a
5. Concluses
Apesar da implementao de partes do circuito, como os dois Conversores das
sees 3.5 e 3.6 ser bem demorada, aps ela ser realizada fica bem fcil o uso dele com outros
componentes. O projeto em si ficou bem robusto: fcil visualizar progressivamente as etapas
dele.
A implementao do somador, do multiplicador e do multiplexador foi trivial, devido
simplicidade e implementao intuitiva deles. O que mais exigiu tempo foi o tratamento do
overflow da multiplicao. Primeiramente, eu planejava exibir valores at 99 no visor (o que
exigia sete bits de representao), porm, aps estar quase pronto, vi que teria que ser refeita
todo o circuito conversor Binrio-BCD.
O problema de tratar com o overflow se intensificou quando foi necessrio inverter
valores para que fossem exibidos corretamente na placa. A implementao da verificao da
Figura 3.29 levou tempo e exigiu vrios testes.
Finalmente, os testes realizados na seo 4 provaram que o chip EPF10K20RC240-3,
da famlia 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 sadas disponveis. Assim, ele possibilita uma gama de aplicaes.
6. Referncias
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 verso gratuita
est disponvel no website <www.altera.com>.
As frmulas (3) a (16) foram obtidas com o apoio do software Karma, de propriedade
da Nangate. A verso gratuita est disponvel no website < www.inf.ufrgs.br/lagarto>.
27 | P g i n a