SOMADORES DECIMAIS Versão 2012 RESUMO Nesta experiência será estudado um circuito aritmético de soma decimal a partir dos somadores binários de 4 bits (por exemplo, o circuito integrado 74283). A parte experimental consiste do projeto, implementação e documentação de um fluxo de dados simplificado com circuito de controle, que executará operações aritméticas em números BCD. 1. INTRODUÇÃO TEÓRICA 1.1. Numeração Decimal O código mais utilizado para a representação dos dígitos decimais como combinação de sinais binários é a própria representação do dígito decimal em binário. Esse código de 4 bits é chamado BCD (Binary Coded Decimal). Exemplos: (26) 10 = ( 0010 0110 ) BCD (728) 10 = ( 0111 0010 1000 ) BCD A Tabela I abaixo mostra as correspondências entre os códigos decimal, binário e BCD. Tabela I Correspondência entre os códigos decimal, binário e BCD. DECIMAL BINÁRIO BCD 0 0000 0000 1 0001 0001 2 0010 0010 3 0011 0011 4 0100 0100 5 0101 0101 6 0110 0110 7 0111 0111 8 1000 1000 9 1001 1001 10 1010 inválido 11 1011 inválido 12 1100 inválido 13 1101 inválido 14 1110 inválido 15 1111 inválido Somadores Decimais (2012) 1
1.2. Somadores Decimais Estes somadores, ao invés de somarem números codificados em código binário, devem somar números codificados em BCD. Este código é largamente utilizado em calculadoras eletrônicas. Neste código, cada algarismo decimal (dígito) é codificado com 4 bits e deve-se utilizar tantos conjuntos de 4 bits quantos forem os dígitos necessários para a representação. A figura 1.1 mostra o esquema de um somador decimal de n dígitos. A n-1 A i A 0 B n-1 B i B 0 4 4 4 4 4 4............ V a SOMADOR DECIMAL V e 4... 4... 4 S n-1 S i S 0 Figura 1.1 - Esquema de um Somador Decimal de n dígitos. onde: as entradas A e B são n conjuntos de 4 bits, correspondentes aos números em BCD que se quer somar; a saída S é composta por n conjuntos de 4 bits, correspondentes à soma das entradas A e B; V e é uma entrada de 1 bit que permite forçar um vem-um ; V a é uma saída de 1 bit que indica se houve um vai-um na operação. Como pode ser visto na Tabela I, o sistema BCD usa 10 combinações disponíveis com 4 bits, sendo as outras seis inválidas. Quando se somam dois dígitos BCD em um somador binário, o dígito resultante pode ser: a) dígito válido sem vai-um ; b) dígito inválido sem vai-um ; c) dígito válido com vai-um. O caso (a) acontece quando o dígito do resultado é menor ou igual a 9. O caso (b) acontece quando o resultado fica entre 10 e 15, e o caso (c) acontece quando o resultado cai entre 16 e 18. O caso (a) não precisa de correção, mas nos casos (b) e (c) é necessário corrigir o resultado. No caso (b), também, é necessário propagar o vai-um para o dígito seguinte. Considere por exemplo a soma dos números A = 0832 e B = 0983: vai-um 1 A = 0832 0000 1000 0011 0010 B = 0983 0000 1001 1000 0011 Soma parcial 0001 0001 1011 0101 caso c caso b caso a Existem dois métodos para a correção do resultado (soma parcial) que serão apresentados a seguir. Somadores Decimais (2012) 2
1.2.1. Correção Posterior de Seis Neste método, para o caso (b) é necessário somar 6 ao resultado parcial da soma dos dígitos, para corrigir o dígito do resultado e propagar o vai-um ; para o caso (c) só é necessário somar 6, pois o vai-um já foi propagado. Assim, tomando o exemplo anterior da soma 0832 + 0983: 1111 11 Soma parcial 0001 0001 1011 0101 Correção 0110 0110 Soma final 0001 1000 0001 0101 Resultando: S = 1815 Desta forma, há a necessidade de efetuar a correção posterior de seis se a soma parcial resultar em um dígito inválido (caso b) ou na ocorrência de um vai-um (caso c). A figura 1.2 mostra o diagrama em blocos deste tipo de somador, para um dígito. 1.2.2. Correção Prévia de Seis Figura 1.2 - Somador Decimal com Correção Posterior de Seis (1 dígito). Existe outro algoritmo de correção de dígito inválido, que consiste em somar 6 a todos os dígitos de um dos operandos antes da soma das duas parcelas (daí o nome correção prévia de seis ). Assim, só existem dois casos para o resultado da soma: a) o resultado não deu vai-um, situando-se entre 6 e 15; b) o resultado deu vai-um ; o vai-um, portanto, já foi propagado e o dígito, entre 0 e 9, está correto. No caso (a), deve-se subtrair 6 do resultado, pois a soma destes dígitos resultou entre 0 e 9. Fazendo-se a soma 0832 + 0983, com este algoritmo de correção prévia de seis, tem-se: Correção prévia de seis: 11 11 A = 0832 0000 1000 0011 0010 Correção prévia de seis 0110 0110 0110 0110 1 a Soma parcial 0110 1110 1001 1000 Somadores Decimais (2012) 3
Soma das duas parcelas: 1 1111 1 a soma parcial 0110 1110 1001 1000 B = 0983 0000 1001 1000 0011 2 a soma parcial 0111 1000 0001 1011 dígito 3 dígito 2 dígito 1 dígito 0 Houve vai-um nos dígitos 1 e 2; portanto, eles estão corretos; como não houve vai-um nos dígitos 0 e 3, é necessário subtrair-se 6 desses dígitos. Em vez de subtrair 0110, somamos 1010, que é o complemento de dois de 0110, e ignoramos o vai-um. 11 1 2 a soma parcial 0111 1000 0001 1011 Subtrair 6 1010 1010 Soma final 0001 1000 0001 0101 Resultando: S = 1815 Esta solução dispensa o detector de código inválido, e tem algumas vantagens no que concerne à velocidade e à possibilidade de utilizar um somador binário com vai-um antecipado de vários dígitos. A figura 1.3 mostra o diagrama em blocos de um dígito do somador com correção prévia de seis. A i B i +6 V a para o próximo dígito SOMADOR BINÁRIO V e do dígito anterior +10 S i Figura 1.3 - Somador com Correção Prévia de Seis (1 dígito). 1.3. Subtração Decimal A operação de subtração de números em BCD pode ser realizada de forma similar à soma decimal, com um circuito combinatório desenvolvido a partir da sua especificação. Uma alternativa é usar um circuito para calcular o complemento de 10 dos dígitos para calcular o valor negativo do subtraendo. Por exemplo, para calcular 45 23, podemos antes obter o valor de -23 em representação de complemento de 10. Assim, podemos calcular 45 23 com a expressão equivalente 45 + (-23). Somadores Decimais (2012) 4
2. PARTE EXPERIMENTAL A preparação da parte experimental consiste do projeto e implementação de um somador decimal na placa de desenvolvimento Altera DE2. O circuito a ser projetado está esquematizado na figura 2.1. Este circuito deve realizar a soma de dois números de 2 dígitos decimais, codificados em BCD. Uma das parcelas é o conteúdo das chaves da placa de desenvolvimento. A outra é o conteúdo do resultado anterior da soma, que está armazenado no registrador. ENTRADA (SW[7..0]) REGISTRADOR SOMA (KEY[1]) LIMPA (KEY[2]) 8 8 C out SOMADOR DECIMAL FF 8 LED (LEDR0) DISPLAYS (HEX1-HEX0) Projeto do Somador Decimal Figura 2.1 Circuito do Somador Decimal. O circuito do somador decimal proposto deve ser projetado usando as técnicas apresentadas na disciplina. Ou seja, o projeto pode ser desenvolvido usando componentes discretos SSI e MSI em um diagrama de captura esquemática ou usando a linguagem de descrição de hardware VHDL. a) Projetar o circuito esquematizado na figura 2.1 utilizando a técnica de correção posterior de 6. Para cada dígito, utilizar o esquema mostrado na figura 1.2. Definir um dos botões (LIMPA) da placa de desenvolvimento para limpar o registrador acumulador, e o outro (SOMA) para copiar o resultado da soma no registrador e o vai-um no Flip-Flop FF. b) Documente o projeto com uma descrição textual do circuito e formas de onda das simulações realizadas. Montagem e depuração Nesta parte deve-se verificar o correto funcionamento do somador decimal na placa de desenvolvimento, procurando facilitar a depuração e testes do mesmo. c) Programe o circuito projetado na placa de desenvolvimento e aplique um conjunto de testes para validar cada um dos blocos do circuito. Que sinais adicionais de depuração podem ser especificados? d) Aplique casos de teste com entrada de dados incorreta no bloco de soma decimal. O que acontece quando é usada uma entrada inválida no circuito (por exemplo, usar uma entrada não-bcd)? e) Comente os resultados obtidos nos procedimentos de testes, depuração e validação do circuito. Verificação e validação do Somador Decimal Uma vez validado o funcionamento do circuito projetado, deve-se aqui verificar o funcionamento do somador decimal com dados de entrada variados. f) Verificar o funcionamento do somador decimal para várias entradas. Trazer no planejamento os casos de teste a serem usados neste item. g) Observar o comportamento do circuito quando são inseridos códigos inválidos pelas chaves. Explicar os resultados obtidos. Somadores Decimais (2012) 5
Perguntas: 1. Como o grupo pode afirmar que os testes realizados nos itens (c) e (d) garantem o correto funcionamento de cada bloco do circuito? 2. Que testes podem comprovar o correto funcionamento do circuito no item (f) para todos os casos possíveis de somas de números decimais? 3. Quais os casos em que o somador projetado exibe um resultado correto no item (g)? 4. Quais os casos em que o somador projetado exibe um resultado incorreto no item (g)? Modificação do Projeto do Somador Decimal O professor irá propor uma modificação no circuito do somador decimal a ser implementada na placa DE2. h) Implemente a modificação proposta tendo como base o circuito do grupo. i) Documente a implementação desta modificação. j) Teste o circuito solicitado na placa de desenvolvimento DE2, especificando anteriormente os casos de teste relevantes para garantir o correto funcionamento do circuito projetado. k) Apresente no relatório os resultados obtidos nos procedimentos de teste e depuração. 3. BIBLIOGRAFIA ALTERA. DE2 Development and education board user manual. 2008. Version 1.42. ALTERA. Quartus II Introduction Using VHDL Designs. University Program. 2010. Disponível em: ftp://ftp.altera.com/up/pub/altera_material/9.1/tutorials/vhdl/quartus_ii_introduction.pdf D AMORE, R. VHDL - Descrição e síntese de circuitos digitais. 2ª edição, LTC, 2012. FREGNI, Edson e SARAIVA, Antonio M. Engenharia do Projeto Lógico Digital: Conceitos e Prática. Editora Edgard Blücher Ltda, 1995. WAKERLY, John F. Digital Design Principles & Practices. 4 th edition, Prentice Hall, 2006. Fairchild Semiconductor. TTL Data Book. Mountain View, California, 1978. 4. MATERIAL DISPONÍVEL PARA REFERENCIA Circuitos Integrados TTL: Portas lógicas: 7400, 7402, 7404, 7408, 7410, 7432, 7486. 7474, 74157, 74175, 74283. 5. EQUIPAMENTOS NECESSARIOS 1 placa de desenvolvimento FPGA DE2 da Altera com o dispositivo Altera Cyclone II EP2C35F672C6. 1 computador com programa Altera Quartus II e interface USB. Histórico de Revisões J.L.R.B. e P.S.C. / 2001 (revisão) E.T.M. / 2004 (revisão) E.T.M. e R.C.S. / 2005 (revisão) E.T.M. / 2011 (revisão) E.T.M. / 2012 (revisão) Somadores Decimais (2012) 6