Baixe o app para aproveitar ainda mais
Prévia do material em texto
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 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 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). 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 circuitosã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. 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) 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 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. 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 demostrar que o circuito multiplicador funciona. 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. 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. 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. 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. 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. 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. 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). 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. 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. 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. 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). 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 circuitosDí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. 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. 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. 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). 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 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). 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 aX6 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). 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>.
Compartilhar