Multiplicador Binário com Sinal Edson T. Midorikawa/2010 RESUMO Nesta experiência será implementado circuito para multiplicação binária com sinal. Deve ser aplicada a metodologia para projeto estruturado de sistemas digitais apresentada em experiências anteriores. A parte experimental será desenvolvida com o auxílio da ferramenta de software Quartus II da Altera e depois implementada com o dispositivo lógico Altera EPM7128SLC84-7. 1. PARTE TEÓRICA 1.1. Revisão sobre Multiplicação Binária Na experiência anterior, vimos como a operação de multiplicação binária pode ser implementada para números sem sinal. Baseado na descrição da operação de multiplicação, pudemos desenvolver um circuito digital que implementa sua funcionalidade. A figura 1.1 mostra um diagrama de blocos do circuito do multiplicador binário e a figura 1.2, uma possível implementação da unidade de controle. Figura 1.1 - Diagrama de blocos do multiplicador binário. O circuito relativo à implementação da unidade de controle e mostrado na figura 1.2 foi desenvolvido a partir do diagrama ASM do multiplicador binário (figura 1.3). O circuito da unidade de controle ilustrado segue o modelo registrador de estado e decodificador. Para mais informações sobre este e outros modelos possíveis de implementação, consulte as referências (Ranzini, 2004) e (Mano e Kime, 2004). Multiplicador Binário com Sinal (2010) 1
Figura 1.2 - Uma implementação da unidade de controle do multiplicador binário. A unidade de controle do multiplicador binário tem 3 estados (PARADO, MUL0 e MUL1), e gera sinais de controle para o fluxo de dados para acionar seus componentes (registradores deslocadores A e Q, flipflop C e contador P) Figura 1.3 - Diagrama ASM da unidade de controle do multiplicador binário. Multiplicador Binário com Sinal (2010) 2
1.2. Multiplicação Binária com Sinal Quando consideramos números com sinal, o algoritmo usado na experiência anterior não pode ser aplicado. Considere a multiplicação de 11 (1011 2 ) com 13 (1101 2 ), onde obtemos o resultado 143 (10001111 2 ). Se considerarmos estes valores binários como números em complemento de dois, teríamos a multiplicação de -5 (1011 2 ) com -3 (1101 2 ) resultando em -113 (10001111 2 ), que é um valor diferente de 15 (00001111 2 ). Para mais detalhes consulte (Stallings, 2002). Uma forma de levar em consideração o sinal dos operandos na operação de multiplicação binária é usar o algoritmo de Booth. A figura 1.4 mostra fluxograma para o algoritmo de Booth. INÍCIO A 0, Q -1 0 M multiplicando Q multiplicador Contador n = 10 Q 0,Q -1 = 01 A A M = 00 = 11 A A + M Deslocamento aritmético para a direita de A,Q,Q -1 Contador Contador -1 NÃO Contador = 0? SIM FIM Figura 1.4 Fluxograma do algoritmo de Booth. Convém apontar alguns aspectos a serem considerados no projeto do fluxo de dados do multiplicador binário com sinal: presença do bloco somador/subtrator; presença do flip-flop F à direita do multiplicador para armazenar Q -1 ; o deslocamento do acumulador deve ser aritmético (o que isto significa e o que muda no circuito em relação ao multiplicador sem sinal?); a decisão de soma ou subtração depende do bit menos significativo do multiplicador (Q 0 ) e do flip-flop F (Q -1 ). Estes sinais de estado são enviados à unidade de controle; a unidade de controle é bem parecida com a do multiplicador binário de números sem sinal. Multiplicador Binário com Sinal (2010) 3
A figura 1.5 mostra o diagrama de blocos básico do multiplicador binário com sinal. O flip-flop F mantém o dado que é identificado como Q -1 no fluxograma da figura 1.4. IN n registra_m Multiplicando M Contador P Detetor de Zero soma/subtrai Somador / Subtrador ZERO desloca desloca registra_q registra_a Acumulador A Multiplicador Q Q 0 Flip- Flop F Q -1 Unidade de Controle... OUT Sinais de controle Figura 1.5 Diagrama de blocos básico do multiplicador binário com sinal. Algumas dicas sobre o projeto do Multiplicador Binário com Sinal: 1) o bloco somador/subtrador pode ser facilmente projetado com um somador binário e portas OU EXCLUSIVO (XOR). O sinal que indica a operação (0=soma, 1=subtração) é conectado em uma das entrada das portas e também na entrada de vem-um do somador binário; 2) O sinal acima para soma ou subtração pode vir direto do bit menos significativo do registrador Q (sinal Q 0 ): quando Q 0 =0, deve ocorrer uma soma, e quando Q 0 =1, uma subtração. 3) Na unidade de controle do multiplicador binário sem sinal, era realizada a soma somente se o sinal Q 0 fosse igual a 1. Caso contrário, havia somente o deslocamento dos registradores. Na unidade de controle do multiplicador binário com sinal, se Q 0 F (ou seja, Q 0 F=1) ocorre a soma ou subtração, dependendo do valor de Q 0, e depois o deslocamento dos registradores. Caso Q 0 =F (ou seja, Q 0 F=0), deve ocorrer somente o deslocamento. Deste modo, acredito que a unidade de controle não deve ser mudada quanto a este aspecto. 4) Para mais informações sobre a metodologia de projeto a ser considerada consulte referência (Ranzini et al, 2002). Multiplicador Binário com Sinal (2010) 4
1.3. Exemplos do Algoritmo de Booth Ilustramos aqui vários exemplos de multiplicação binária para números em complemento de dois com representação binária de 4 bits. Sejam os números: 6 = 0110 e -6 = 1010. Nos exemplos abaixo, a legenda das tabelas indicam: acum. = acumulador A mult. = multiplicador Q F = flip-flop a direita do multiplicador (Q -1 ) a) 6 x 6 PASSO ACUM. MULT. F. Condição (Q 0,F) -> Ação 0 1 2 3 0000 0110 0 00 -> não faz nada 0000 0011 0 shift aritmético 0000 0011 0-1010 0110 0011 0 10 -> subtrai 0011 0001 1 shift aritmético 0011 0001 1 11-> não faz nada 0001 1000 1 shift aritmético 0001 1000 1 +1010 1011 1000 1 01 -> soma 1101 1100 0 shift aritmético fim 1101 1100 resultado = -36 b) 6 x -6 PASSO ACUM. MULT. F. Condição (Q 0,F) -> Ação 0 1 2 3 0000 1010 0 00 -> não faz nada 0000 0101 0 shift aritmético 0000 0101 0-0110 1010 0101 0 10 -> subtrai 1101 0010 1 shift aritmético 1101 0010 1 +0110 0011 0010 1 01 -> soma 0001 1001 0 shift aritmético 0001 1001 0-0110 1011 1001 0 10-> subtrai 1011 1100 1 shift aritmético fim 1011 1100 resultado = -36 Multiplicador Binário com Sinal (2010) 5
c) 6 x 6 PASSO ACUM. MULT. F. Condição (Q 0,F) -> Ação 0 1 2 3 0000 0110 0 00 -> não faz nada 0000 0011 0 shift aritmético 0000 0011 0-0110 1010 0011 0 10 -> subtrai 1101 0001 1 shift aritmético 1101 0001 1 11-> não faz nada 1110 1000 1 shift aritmético 1110 1000 1 +0110 0100 1000 1 01 -> soma 0010 0100 0 shift aritmético fim 0010 0100 resultado = 36 d) -6 x -6 PASSO ACUM. MULT. F. Condição (Q 0,F) -> Ação 0 1 2 3 0000 1010 0 00 -> não faz nada 0000 0101 0 shift aritmético 0000 0101 0-1010 0110 0101 0 10 -> subtrai 0011 0010 1 shift aritmético 0011 0010 1 +1010 1101 0010 1 01 -> soma 1110 1001 0 shift aritmético 1110 1001 0-1010 0100 1001 1 10-> subtrai 0010 0100 1 shift aritmético fim 0010 0100 resultado = 36 Multiplicador Binário com Sinal (2010) 6
2. PARTE EXPERIMENTAL Nesta experiência será desenvolvido um circuito baseado no multiplicador binário desenvolvido na experiência anterior. O projeto pode ser feito usando os componentes discretos básicos MSI e SSI ou com a linguagem VHDL. 2.1. Especificação do Multiplicador Binário com Sinal O circuito Multiplicador Binário com Sinal (MBcS) é responsável pela realização de uma multiplicação de dois números binários com sinal de 4 bits, introduzidos separadamente no circuito através de uma única via de dados (CH0 a CH3). A operação é iniciada com o acionamento do sinal INICIAR (botão B1), e o resultado da operação com 8 bits (OUT) deve ser conectado a dois displays de saída. Os operandos da multiplicação são especificados para o MBcS pelos sinais ENTRA_MULTIPLICANDO (CH6) e ENTRA_MULTIPLICADOR (CH7). O sinal PRONTO indica o final da multiplicação. Os sinais de entrada e saída do Multiplicador Binário são os seguintes: IN - via de dados de entrada, com quatro bits; INICIAR - sinal de controle utilizado iniciar a multiplicação; ENTRA_MULTIPLICANDO - especifica o multiplicando da operação; ENTRA_MULTIPLICADOR - especifica o multiplicador da operação; OUT - via de dados de saída, com oito bits; PRONTO indica final da operação. A figura 2.1 abaixo mostra o MBcS com os sinais descritos anteriormente: INICIAR ENTRA_MULTIPLICANDO ENTRA_MULTIPLICADOR IN[3:0] MBcS OUT[7:0] PRONTO Figura 2.1 Sinais de entrada e de saída do Multiplicador Binário com Sinal a ser desenvolvido. A operação do circuito deve seguir os seguintes passos: 1. Acertar um valor binário na vida de dados de entrada (IN); 2. Ativar o sinal ENTRA_MULTIPLICANDO; 3. Colocar outro valor na via de dados de entrada; 4. Ativar o sinal ENTRA_MULTIPLICADOR; 5. Acionar o botão INICIAR para a execução da multiplicação binária; 6. Verificar resultado na via de dados de saída (OUT, PRONTO). Caso se deseje repetir um valor anteriormente ajustado no circuito MBcS, os passos 1 e 2 ou os passos 3 e 4 podem ser ignorados, visto que um registrador interno deve manter os valores do multiplicador e do multiplicando da operação anterior. Multiplicador Binário com Sinal (2010) 7
DICAS: 1. Para auxiliar a depuração do circuito do MBcS, determine alguns sinais internos do circuito projetado para serem monitorados durante os testes e depuração do circuito. Estes sinais devem ser ligados nos leds disponíveis no painel de montagens. 2. Apresentar o diagrama ASM do circuito do MBcS, explicando os sinais de estado e de controle usados. 3. A depuração da máquina de estados da unidade de controle pode ser feita com uma indicação (sinal externo) do estado atual do circuito. 4. O fluxo de dados do projeto deve armazenar tanto o multiplicando como o multiplicador para poderem ser reaproveitados entre multiplicações consecutivas. Que alterações devem ser feitas no fluxo de dados apresentado na figura 1.5? 5. Trazer o arquivo do projeto para o Laboratório Digital (bdf ou vhd). 2.2. Montagem e Depuração a) O projeto do MBcS deve ser programado na pastilha da placa MAX7-PCS e os sinais de entrada e saída devem ser conectados no painel de montagens experimentais (botões, chaves, leds e displays). b) Execute testes iniciais do circuito usando os casos de teste dos exemplos da seção 1.3. 2.3. Avaliação a) Elabore uma tabela contendo todos os códigos binários de 4 bits em complemento de dois e o seu respectivo valor equivalente. Por exemplo, o código 0001 é a representação do valor +1 e 1111 é a representação do valor -1. b) Escolha mais casos de teste para avaliar o correto funcionamento do MBcS. c) Execute os casos de teste escolhidos e avalie os resultados. Perguntas 1. Explique a diferença entre deslocamento e deslocamento aritmético. Exemplifique. 2. Como é implementado o deslocamento aritmético no fluxo de dados? 3. Decreva detalhadamente o funcionamento e a implementação da unidade de controle do MBcS. 4. Que fatores influenciaram na escolha do grupo no projeto do MBcS (componentes discretos ou VHDL)? Que vantagens e desvantagens vocês poderiam ressaltar para cada alternativa? Multiplicador Binário com Sinal (2010) 8
3. BIBLIOGRAFIA 1. MANO, M. M.; KIME, C. R. Logic and computer design fundamentals. 3 rd edition, New Jersey: Prentice-Hall, 2004. 2. MIDORIKAWA, E.T. Lógica programável II. Apostila de Laboratório Digital. Escola Politécnica da USP, 2004. 3. PARHAMI, B. Computer arithmetic: algorithms and hardware designs. Oxford: Oxford University Press, 2000. 4. PATTERSON, D. A. & HENNESSY, J. L. Computer organization and design: the hardware/ software interface. 2nd edition, San Francisco: Morgan Kaufmann, 1998. 5. RANZINI, E.; HORTA, E. L. Lógica programável. Apostila de Laboratório Digital. Escola Politécnica da USP, 2000. 6. RANZINI, E.; HORTA, E. L.; MIDORIKAWA, E. T. Projeto de circuitos com MAX+PLUS II. Apostila de Laboratório Digital. Escola Politécnica da USP, 2002. 7. RANZINI, E. Exemplo 1 de projeto de circuito síncrono: multiplicador binário. Resumo da disciplina PCS2304 - Projeto Lógico Digital. Escola Politécnica da USP, 2004. 8. STALLINGS, W. Arquitetura e organização de computadores. 5ª edição, Prentice-Hall, 2002. 4. EQUIPAMENTOS NECESSÁRIOS 1 fonte de alimentação fixa, 5V 5%, 4A. 1 osciloscópio digital. 1 multímetro digital. 1 gerador de pulsos. 1 painel de montagens experimentais. 1 placa MAX7-PCS, com cabo para interface paralela. 1 computador PC com programa Altera Quartus II. Histórico de Revisões E.T.M./2004 primeira versão da experiência. E.T.M./2010 revisão geral e atualização do texto. Multiplicador Binário com Sinal (2010) 9