UNIVESIDADE ESTADUAL DE FEIA DE SANTANA LOUIVAL OLIVEIA DA SILVA Projeto da Cálculadora Eletrônica Feira de Santana, 10 de unho de 2004
UNIVESIDADE ESTADUAL DE FEIA DE SANTANA LOUIVAL OLIVEIA DA SILVA Projeto da Calculadora digital elatório do Problema da Calculadora Digital apresentado para avaliação da Disciplina de Arquitetura e Organização de Computadores do 2º. semestre, do Curso de Engenharia de Computação, da Universidade Estadual de Feira de Santana sob orientação do Prof. Márcio. Feira de Santana, 10 de unho de 2004
Sumário Introdução...4 O Projeto... 5 Componentes Empregados... 6 Comparações Numéricas... 6 Comparações entre dois números qualquer... 6 Verificando se um número é zero... 6 Teclado... 7 Display...7 A Unidade Aritmética Lógica...7 Detecção de Overflow/Underflow... 7 Soma e Subtração...8 Multiplicação... 8 Divisão...8 Conclusão...9 eferências Bibliográficas... 10 Anexo I...11
Introdução As calculadoras digitais são uma constante no cotidiano do homem moderno, porém mesmo se propondo a atingir objetivos tão modestos e triviais uma calculadora digital emprega uma complexa gama de dispositivos e conexões quando observada a nivél de projeto de circuito digital. O presente trabalho visa explanar sobre o projeto de desenvolvimento de um dispositivo capaz de realizar as quatro operações matemáticas básicas, a partir de componentes eletrônicos simples. Algumas simplificações foram feitas para tornar o projeto menos complexo, como o não tratamento de números negativos, e a manipulações de números inteiros somente. A primeira parte do projeto procura dar uma visão ampla do projeto, passando depois a explicar de forma mais detalhada os componentes de cada módulo da calculadora e as considerações que foram feitas para se implementar cada um destes módulos, e suas conexões.
O Projeto Neste projeto de calculadora digital evidêncio-se três módulos principais, dois destes fazem a interface com o usuário, que são o teclado e o display digital, o terceiro e mais complexo é o responsavél pela execução das funções da calculadora. Como evidênciado no diagrama abaixo que destaca os principais módulos e seus subcomponentes. O ciclo de operação da calculadora para este projeto foi definido como segue abaixo sem nenhuma variação:
Estas instruções são digitadas no teclado do equipamento que é composto por dez teclas que representam cada digito no sistema decimal, acrescido de mais quatro botões que acionam as operações básicas implementadas neste projeto (Soma, Subtração, Multiplicação e Divisão), e por fim um botão Igual que indica ao sistema que a entrada de dados foi finalizada, para que este execute a operação informada e que imprima o resultado no Display de dois digitos presente no aparelho. Componentes Empregados 3-State É um componente elétrônico assume o valor lógico da entrada quando a porta inferior está com sinal 1, caso contrário a sua saída não corresponde a nenhum estado lógico válido, ficando assim no Terceiro estado U23C U79B XO É uma porta lógica que só assume o valor verdade quando um e somente uma das suas entradas é verdadeira, retornando falso em todas as outras possibilidades, ou seja quando os valores de suas entradas são iguais. NO Este tipo de porta lógica faz uma negação a uma porta O normal. U49 74LS199 PE K M CE D7 7 D6 6 D5 5 D4 4 D3 3 D2 2 D1 1 D0 0 egistradores Armazena os valores das entradas somente num transição de clock, mantendo este valor na saída até que outra transição de clock ocorra. Comparações Numéricas Para realizar certas operações fez-se nescessários em algumas operações a comparação entre dois números, para determinar se este é zero ou se tem os mesmos valores, os processos para realizar tais comparações são explicados abaixo: A0 A1 A2 A3 B0 B1 B2 B3 Comparações entre dois números qualquer - As comparação entre dois números binários foram feitas se utilizando de 4 portas U1A U1B XO de duas entradas e uma NO de duas entradas, em cada porta XO se introduzio os bits correspondentes em cada par de número a U2A ser comparado e as saídas dessas XO foram U1C U1D igual ligadas á entrada de uma NO que indicava quando todos os valores se correspondiam, ou sejam quando o valor de todas as XO davam Falso.
Verificando se um número é zero Certificar-se de que um determinado valor binário é zero é uma operação simples, basta ligar todas os bits deste número às entradas de uma porta NO, assim a saída indicará se todas as entradas estão em zero. Teclado As entradas do usuários são feitas através de um teclado numérico de 0 a 9 que é implementado utillizando-se um conjunto de portas O ligadas a uma matriz que determina os valores binários de cada número pressionado, este valor é então armazenado num conjunto de Flip-Flops antes de serem copiados para os egistradores A ou B de acordo com o número que está sendo digitado. S0 S1 U24C V14 5V SOMA SUB S2 S3 S4 MULT DIV ON S5 S6 igual S7 S8 V17 0V S9 V15 0V V16 0V V18 0V U25B U41A U42A U33A U34 U35A U38 U35B U40 U39 U32 U20B U27A S S K _ U27B U31A S U31B S Display O display da calculadora proposta configura certo grau de complexidade devido ao fato que este deve represntar valores inteiros no intervalo de 0 a 91 (inclusive), para simplificação do projeto valores negativos não foram considerados. O valor a ser exibido no display da calculadora sempre corresponde ao valor do registrador de resuldo da calculadora, assim para se exibir os valores temporários das entradas A e B desativa-se a entrada B e soma o valor de A assim se obtém a na saida, repete-se a mesma operação com a entrada B, desativando a A. uando o valor do registrador de resultado da calculadora e modificado então inicia-se uma contagem sequêncial em que a cada operação o valor do contador é comparado ao valor do registrador
de resultado, quando os valores se igualarem a contagem cessa, neste ponto dois outros contadores de década possui separados o valor das dezenas e o valor das unidades, esta separação se dá paralelamente à contagem do contador principal que a cada iteração aciona o contador de decadas que a cada dezena se reinicia acionando o contador de dezenas. Assim ao final do processo basta converter os valores do contador de decadas e do contador de unidades para um displays de 7-segmentos que representarão corretamente as dezenas e as unidades. U1A V4 10V +V V7 1 2 1 2 U1C BCD-99 A0 A1 A2 A3 A4 A5 A6 Ua Ub Uc Ud Ue Uf Ug EN CLK Da Db Dc Dd De Df Dg BCD-99 U49 74LS199 PE K M CE D7 7 D6 6 D5 5 D4 4 D3 3 D2 2 D1 1 D0 0 U1B U10B U69 V3 5V +V U6A U6B U6C U6D U7A U7B U7C U2A U2B U3A U3B U4A U4B U5A U10A U9A U8B U8A U5B U72 74LS247 A3 g A2 f A1 e A0 d c b a LT BI BO U13A U11A U9B U12A U12B U74 74LS247 A3 g A2 f A1 e A0 d c b a LT BI BO A Unidade Aritmética Lógica A unidade aritmética Lógica (UAL) é o circuito responsavél por efetuar as operações matemáticas definidas para a calculadora, neste projeto as funções definidas foram a soma, subtração, multiplicação e divisão. As duas primeiras são mais fáceis de implementar, pois se utilizam de algoritimo relativamente fácil e direto, enquanto as duas últimas nescessitam de um algoritimo mais elaborado, e portanto de maior complexidade.
A0 A1 A2 A3 A4 A5 U1 A6 EA ULA7Bits FUNC S0 S1 S2 S3 S4 S5 S6 COUT Todas as funções acima se baseiam na utilização de um conjunto se somadores completos, como demonstrador no Anexo I. Além do resultado da operação este Somador/Subtrator completo pode detectar a ocorrência do Overflow e Underflow, possuindo também circuitos lógicos para desabilitar cada porta individualmente, estas carácteristicas adicionais são utilizadas na implementação das operações de Multiplicação e da Divisão. B0 B1 B2 B3 B4 B5 B6 EB Detecção de Overflow/Underflow uando um número é tão grande que não pode ser representado no hardware envolvido diz-se que houve um Overflow, de forma análoga diz-se que houve um Underflow quando um número é tão pequeno que não pode ser representado no hadware envolvido. Neste problema somente o segundo evento é pertinente, pois ele ocorre quando subtraimos um número qualquer por outro maior que ele, assim utiliza-se este evento para determinar o fim das subtrações sucessivas que compoem a divisão. O hardware de detecção de overflow é exibido ao lado é adicionado ao Carry Out do somador completo mais significativo, e o valor de sua saída indica a presença de Overflow/Underflow na operaçõa corrente. Soma e Subtração As operações de adição e feita utilizando-se quantro somadores completos, que utilizam como entradas os valores dos registradores A e B. As operações de subtração utilizam o mesmo circuito porém invertendo todas as entradas de B e acionando o Carrie- In do primeiro somador, para gerar o chamado complemento de dois do número B, que é o valor do número negativo correspondente a B, obténdo-se assim a função de subtração A e B, substituindo esta operação pela soma de a por menos B, o que é matemáticamente equivalente. O modelo de implementação deste somador pode ser observado no Anexo I. Multiplicação A multiplicação é a soma sucessiva de um número, sendo assim projetou-se a calculadora para aproveitar o hardware utilizado para soma nesta operação também. Ela se utiliza do registrador A e anula o B fazendo a soma sucessiva de A pelo resultado da soma anterior, até que B se torne igual ao valor do contador de iterações, obtendo-se assim a multiplicação de A por B. Há duas operações que devem ser especialmente tratadas, a primeira é a multiplicação por zero, que deve sempre resultar em zero, como a condição de parada se satisfaz com a igualdade entre B e o valor do contador de passos, deve-se evitar a
ocorrência da soma pois, mesmo com os valores iguais haverá ainda uma operação, para tal há um conjunto de portas lógicas que desativam as entradas A e B do somador quando o valor do contador for zero, assim a multiplicação quando B for zero sempre resultará em zero. Isto apaga qualquer valor previamente contido no registrador de resultado. 5V +V Contador de Iterações Comparação dos números Verifica se é zero Divisão A divisão é feita apartir de um contador de contador de 4 bits e um segundo contador de 2 bits que registra o estado da divisão. Esta operação é implementada a partir do seguinte algoritimo: 1. ESULTADO = A + ZEO; 2. C = ZEO; 3. ENUANTO (ESULTADO A > ZEO) FAÇA: ESULTADO = ESULTADO A; C = C + 1; 4. ESULTADO = C; 5. EXIBI ESULTADO; Estas operações são executadas no sistema através dos blocos de contadores logo abaixo do Somador e do Mux na saida do Somador utilizado para alternar entre o valor do Somador e o valor do contador da divisão.
U55B U54D U57A U61B V19 0V V11 5V +V U55A U55C U62A U55D U23B U23C U48B U66A U48A L2 L3 U43A Conta _ K o _ número K de Subtrações feitas K L4 U47A _ L5 U61A U57B V9 1 2 1 2 U53D U63D U65A U53A U54A U61C V8 5V +V U52B U52A Marca o Estado K Atual _ Define o Inicio/Fim da Divisão U58A S D _ U57D U28C U57C U65B U60A U63C U55E U55F
Conclusão Apesar deste projeto ser demasiadamento simplificado quando comparado ao de uma calculadora convencional, sua implementação se mostrou massante e penosa, especialmente no que diz respeito às implementação das operações de multiplicação e divisão, sua implementação também mostrou como os mais simples circuitos eletrônicos quando devidamente agrupados conseguem executar operações diversas. Este projeto peca por ter poucas otimizações, muitas das lógicas combinacionais são redundantes ou poderiam ser efetuadas de forma mais concisa. Talvez se pudesse reduzir de forma significativa o número de componentes empregados.
eferências Bibliográficas PATTESON, David A. e HENNESSY, ohn L., Organização e projeto de computadores a interface hardware/software, Segunda edição. io de aneiro, LTC, 2000. GASKI, Daniel D., Principles Of Digital Design, Prentice-Hall Inc., 1997 IDOETA, Ivan V., CAPUANO, Francisco F., Elementos de Eletrônica Digital. 6ª Edição. São Paulo: Érica, 1984. TOCCI,.. Sistemas Digitais: Princípios e Aplicações, LTC, 2000, 7 edição
Anexo I Somador e Subtrator completo de 5 bits: V3 5V Overflow U47D U47C B4 U44D U48A U18A A4 U16A U46D U46C U15A U44C S4 U47B U47A B3 U44B U45D U45C A3 U45B U46B U46A U45A U44A S3 U14A U19F B2 U13A U12A U43D A2 U43C U11A U10A U43B U42D S2 S1 U42C U43A U9A U8A U7A A1 U5A U24D U42B B1 U19E U19D U6E U6D U6A B0 U1D U4C U4D A0 Func S0 U2B U3B U3A U2A U1A