Você está na página 1de 12

PCS2304

MULTIPLICADOR BINRIO

Rev.1

Exemplo 1 de Projeto de Circuito Sncrono: Multiplicador Binrio


Resumo elaborado por Edith Ranzini, a apartir do livro KIME, C R; MANO, M.M. Logic and Computer Design Fundamentals. New Jersey Prentice Hall 2000

1.Algoritmo Tradicional
O algoritmo tradicional de multiplicao binria de dois nmeros binrios sem sinal feita com sucessivos deslocamentos do multiplicando esquerda (que constituem as parcelas do clculo dos produtos parciais) e uma soma. Vamos executar este algoritmo com os nmero binrios 1101 e 1011, como ilustrado abaixo.
13 11 1101 1011 1101 1101 0000 1101 10001111 multiplicando multiplicador produtos parciais
.

143

produto

A execuo do algoritmo leva em considerao um bit do multiplicador de cada vez, com o bit menos significativo em primeiro lugar. Se o bit do multiplicador for 1, o multiplicando copiado para ser somado posteriormente. Em caso contrrio, o bit do multiplicador for 0, um valor nulo copiado em seu lugar. Os nmeros copiados em linhas sucessivas so deslocados esquerda de uma posio em relao linha anterior. Finalmente, os nmeros so somados gerando o produto final. Um circuito digital que implementa este algoritmo deve executar esta soma em etapas. Assim, quando um novo nmero for copiado, duas parcelas devem ser somadas gerando uma soma parcial. Ilustramos abaixo esta modificao no mesmo exemplo acima.
13 11 1101 multiplicando 1011 multiplicador 1101 1101 . soma dos 100111 produtos 0000 . parciais 100111 2 a 2 1101 10001111 produto
.

143

Este algoritmo tradicional, inspirado no processo manual que utilizamos para multiplicar, apresenta, como grande desvantagem, a necessidade de se utilizar um somador de 2n bits, quando os operandos possuirem n bits.

03/06/2004

1/12

PCS2304

MULTIPLICADOR BINRIO

Rev.1

2. Algoritmo Melhorado
O somador de 2n bits pode ser substitudo por um de n bits com um algoritmo levemente diferente. O algoritmo melhorado, que apresentamos aqui, necessita de um somador de n bits e de operaes de deslocamento para a direita do produto parcial. O algoritmo segue os seguintes passos: 1. Inicialmente o produto parcial ajustado para 0 (zero); 2. Um bit do multiplicador processado de cada vez, comeando pelo bit menos significativo; 2.1. Se o bit sendo processado for 1 (um), o multiplicando somado ao produto parcial e depois realizado um deslocamento pela direita do produto parcial; 2.2. Se o bit sendo processado for 0 (zero), o produto parcial apenas deslocado para a direita; 3. O bit de vai-um ("carry") do somador armazenado em um flip-flop que deve estar conectado ao registrador deslocador contendo o produto parcial; 4. A soma deve ser realizada apenas nos n bits mais significativos de produto parcial. Um exemplo de aplicao deste algoritmo com n=4, ilustrado abaixo:
13 11 1101 1011 0000 1101 1101 0110 1101 1 0011 1001 0100 1101 1 0001 1000 multiplicando multiplicador valor inicial do produto parcial soma multiplicando, bit do multiplicador 1 1 1 11 111 111 1111 desloca para a direita soma multiplicando, bit do multiplicador 1 desloca para a direita s desloca para a direita, bit do multiplicador 0 soma multiplicando, bit do multiplicador 1 desloca para a direita produto

143

10001111

O diagrama de blocos de um circuito que executa tal algoritmo ser apresentado na figura 3.

03/06/2004

2/12

PCS2304

MULTIPLICADOR BINRIO

Rev.1

3. O projeto 3.1. Especificao do Multiplicador Binrio


O Multiplicador Binrio (MB) responsvel pela realizao de uma multiplicao de dois nmeros binrios sem sinal de 4 bits, introduzidos separadamente no circuito atravs de uma nica via de dados (chaves CH0 a CH3). A operao iniciada com o acionamento do sinal INICIAR (boto B1), e o resultado da operao com 8 bits (OUT) deve ser conectado a dois displays de sada. Os operandos da multiplicao so especificados para o MB pelos sinais ENTRA_MULTIPLICANDO (CH6) e ENTRA_MULTIPLICADOR (CH7). Os sinais de entrada e sada do Multiplicador Binrio so os seguintes: IN - via de dados de entrada, com quatro bits; OUT - via de dados de sada, com oito bits; INICIAR - sinal de controle utilizado iniciar a multiplicao; ENTRA_MULTIPLICANDO - sinal de controle utilizado para especificar o multiplicando da operao; ENTRA_MULTIPLICADOR - sinal de controle utilizado para especificar o multiplicador da operao.

A figura 1 abaixo mostra o MB com os sinais descritos anteriormente:

IN ( 3:0 ) INICIAR ENTRA_MULTIPLICANDO ENTRA_MULTIPLICADOR CLOCK *

MB

OUT ( 7:0 )

Figura 1 Sinais de entrada e de sada do Multiplicador Binrio.


A operao do circuito deve seguir os seguintes passos: 1. Acertar um valor binrio 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 boto INICIAR para a execuo da multiplicao binria; 6. Verificar resultado na via de dados de sada (OUT).

* Num projeto "profissional", o sinal CLOCK gerado internamente ao Sistema Digital, atravs, por exemplo, de um cristal.
03/06/2004 3/12

PCS2304

MULTIPLICADOR BINRIO

Rev.1

3.2. Projeto do MB com Circuitos Digitais


O SD especificado no item 3.1 pode ser projetado de diversas maneiras. Uma delas baseada no particionamento em Fluxo de Dados (FD) e Unidade de Controle (UC). Como o FD deve conter os elementos de transformao e/ou armazenamento dos dados do SD, os sinais IN e OUT devem ser conectados a ele. J os sinais de ajuste de valores dos operandos e de incio de operao devem ser ligados UC, pois estes sinais esto relacionados com o controle da operao do circuito. Alguns sinais de controle e de estado devem ser conectados entre o FD e a UC. A figura 2 abaixo ilustra a estrutura interna do SD do MB.
ENTRA_MULTIPLICANDO INICIAR ENTRA_MULTIPLICADOR IN (3:1)

SD UC
CLOCK

FD

condies sinais de ativao dos registradores OUT (7:0)

Figura 2 Estruturao do SD do Projeto do MB.


Que sinais so gerados na UC? Inicialmente, projeta-se o fluxo de dados (fig. 3) com os blocos necessrios para a execuo do algoritmo e com caminhos interligando-os, de forma a viabilizar a execuo do mesmo. Pelo algoritmo descrito, bvio que necessitamos de um somador, de registradores de deslocamento, do flip-flop do Carry e do registrador B. Para saber se a execuo do algoritmo foi encerrada, optou-se por um contador decrescente, que inicialmete carregado com (n-1) e, a cada passo, decrementado, at atingir o valor zero. Tambm analisando o algoritmo descrito, importante conhecer, para execut-lo, o valor do bit menos significativo do multiplicador (Q0). Portanto, a UC receber do FD a informao sobre Q0 e sobre a sada do detetor de zero e dever gerar os sinais de ativao das operaes que sero executadas. Por exemplo, dependendo do valor de Q0, o Deslocador A ou dever ser carregado com a sada do Somador (Q0 = 1)ou apenas dever receber comando para deslocar direita (Q0 = 0).
03/06/2004 4/12

PCS2304

MULTIPLICADOR BINRIO

Rev.1

3.2.1 Projeto do Fluxo de Dados


O fluxo de dados deve conter todos os elementos necessrios para a execuo do algoritmo. O diagrama lgico que representa o FD do MB gerado a partir de um Diagrama de Blocos, como o da figura 3.
IN n-1

Registrador B

Contador P

Cout

Somador Binrio

Detetor de Zero

ZERO FlipFlop C Deslocador A Deslocador Q

Q0

Unidade de Controle

OUT Sinais de controle

Figura 3 - Diagrama de Blocos do Multiplicador Binrio.*


As etapas seguintes consistem da escolha dos componentes que realizam as funes dos blocos. Para a implementao fsica do FD, podemos adotar os componentes da famlia 74XX, lembrando que todos os blocos seqenciais devem efetuar as operaes sincronamente e, de modo geral, devem possuir ENABLE: Contador P Flip-flop C Registrador B Registrador deslocador A Registrador deslocador Q Somador binrio Detetor de zero (74???) (7474 + lgica) 74173 74194 74194 7483/283 7402 (NOR)

* Neste diagrama omitiram-se os sinais de comando dos registradores/contador (tipo LOAD, CLEAR, etc) e tambm o CLOCK.
03/06/2004 5/12

PCS2304

MULTIPLICADOR BINRIO

Rev.1

3.2.2. Projeto da Unidade de Controle


A unidade de controle pode ser projetada de vrias modos. Adotaremos aqui o Diagrama ASM. (Ler antes o resumo sobre diagramas ASM) Para o MB, uma das solues para a unidade de controle pode ser vista na figura 4. O diagrama ASM desta figura descreve o algoritmo de operao dos componentes do multiplicador. Para a construo deste diagrama adotou-se a seguinte simplificao: o multiplicando e o multiplicador j foram previamente armazenados nos registradores B e Q. Neste diagrama importante relembrar que a transio de um estado para outro s ocorre quando houver uma borda do CLOCK e que as aes contidas dentro dos blocos do estado ou das sadas condicionais somente sero realizadas na prxima borda do CLOCK. Tambm importante observar que o diagrama ASM foi construdo supondo que os blocos seqenciais do FD so genricos (no so os mencionados no item 3.2.1) e que possuem sinais de controle (ativos em 1) para CLEAR, LOAD, SHIFT, CONTA, etc.

PARADO

INICIAR

C0 A0 P n-1 MUL0

Q0

AA+B C Cout

MUL1 C0 C || A || Q shift right (C || A || Q) PP-1

ZERO = 1 Contador chegou em 0 ZERO = 0

(Fracasso)

ZERO

(Sucesso)

Contador no chegou em 0

Figura 4 Diagrama ASM da UC do Projeto do MB.


03/06/2004 6/12

PCS2304

MULTIPLICADOR BINRIO

Rev.1

3.2.3 - Implementao da Unidade de Controle


Podemos adotar vrias alternativas a) Modelo clssico de circuito seqencial sncrono Construmos um circuito semelhante aos apresentados em PCS 2215, ou seja:

SADAS Registrador de estado

Q0
ZERO INICIAR

y0

CIRCUITO COMBINATRIO

D
CLO CK

y1

Figura 5 Modelo Clssico.

Trs estados 2 Flip-flops Sadas 8 CLEAR A, CLEAR C, LOAD P LOAD A, LOAD C, SHIFT A, SHIFT Q, CONTA

O circuito final pode ser montado com portas e flip-flops, ou com EPROM e flip-flops ou com PAL que tenha flip-flops na sada. Com relao s sadas, podemos faz-las totalmente independentes, gerando 8 sinais ou ento, adotamos a estratgia resumida abaixo: "Agrupamos sadas que sempre tem que estar ativas nas mesmas situaes."

03/06/2004

7/12

PCS2304

MULTIPLICADOR BINRIO

Rev.1

Observando o ASM, verificamos, por exemplo, que sempre que devemos acionar Shift A, tambm temos que acionar Shift Q. Portanto, uma nica sada Shift, ligada aos dois registradores, suficiente. A tabela 1 mostrada a seguir resume essa estratgia.

Bloco

Ao

Condio
PARADO . INICIAR

Grupo Sada adotada

Reg A

F.F.C.

A 0 (Clear A) A A+B (Load A) C || A || Q SR C || A || Q (Shift A) C 0 (Clear C) C Cout (Load C) C || A || Q SR C || A || Q (Shift Q) P n - 1 (Load P) P P - 1 (Conta)

MUL0 . Q0 MUL1
PARADO . INICIAR+MUL1

1 2 3 4 2 3 1 3

Initialize Load Shift_dec Clear C Load Shift_dec Initialize Shift_dec

MUL0 . Q0 MUL1
PARADO . INICIAR

Reg Q Cont P

MUL1

So apenas necessrias 4 sadas


Tabela 1 Agrupamento das Sadas
b) Modelo de "UM Flip-Flops por ESTADO" Os diagramas ASM podem ser diretamente mapeados em circuitos, de acordo com as equivalncias mostradas na figura 6, extrada da referncia 1 Como temos 1 flip-flop por estado, o "nome do estado" representa uma varivel de chaveamento.

varivel estado

PARADO 1 0 0

MUL0 0 1 0

MUL1 0 0 1

PARADO MUL0 MUL1

Adotando esta tcnica e agrupando as sadas como detalhado anteriormente, o circuito resultante mostrado na figura 7. Observe que as expresses das sadas j esto expressas na prpria tabela 1, na coluna CONDIO. Essa soluo requer que a condio inicial, imposta ao ligar o circuito, seja 100 (ou seja, estado PARADO).

03/06/2004

8/12

PCS2304

MULTIPLICADOR BINRIO

Rev.1

DIAGRAMA ASM
Entrada Entrada

CIRCUITO

S0

Estado

D C

S0

Sada Sada

( a ) Bloco de Estado
Entrada Entrada

Sada 0

Sada 1 Sada 0 Sada 1

( b ) Bloco de Deciso

Entrada 1

Entrada 2

Entrada 1

Entrada 2

Sada Sada

( c ) Juno
Entrada Entrada

1 X y =1

Figura 6 - Mapeamento ASM CIRCUITO


03/06/2004 9/12

PCS2304

MULTIPLICADOR BINRIO

Rev.1

PARADO

D
1

PARADO

INICIAR

INITIALIZE

CLEAR_C MUL0

Q0
MUL0

LOAD

D
2

MUL1

D
CLO CK
3

MUL1

SHIFT_DEC

ZERO

Condio inicial : (ao ligar)

FF - 1 FF - 0 FF - 0

Figura 7 Circuito da UC - Mapeamento direto


OBS: O bloco pontilhado ser mencionado apenas no item c)
03/06/2004 10/12

PCS2304

MULTIPLICADOR BINRIO

Rev.1

c) Modelo Registrador de Estado-Decodificador A soluo do item b apresenta a grande vantagem de facilitar a obteno do circuito mas, quando o nmero de estados muito grande, o nmero de flip-flops pode encarecer o produto. Por outro lado, muito conveniente ter a informao sobre os estados, de forma decodificada. Por exemplo, para saber se o circuito est num estado Si s olhar para a sada do Flip-flop do estado Si. O modelo apresentado na figura 8 uma mistura dos modelos a) e b). Os estados sero representados de forma codificada (n flip-flops 2 n estados), mas sero decodificados, de forma a se obter variveis iguais s do item b, para represent-los ( PARADO, MUL0 MUL1).
ZERO INCIAR

Q0

INCIAR ZERO

D0 CIRCUITO COMBINATRIO DO PRXIMO ESTADO D1

D C

y0
INITIALIZE

0 DEC y1 1 2 3

PARADO MUL0 MUL1

CIRCUITO
CLEAR_C

COMBINATRIO
LOAD

DA SADA
SHIFT_DEC

CLO CK

Figura 8 Modelo Registrador de Estado - Decodificador


O circuito combinatrio da sada exatamente igual ao bloco pontilhado da figura 7. O circuito combinatrio do prximo estado pode ser extrado da tabela 2. Estado atual
y1 Parado MUL0 MUL1 0 0 0 1 y0 0 0 1 0

Condies
Iniciar Zero 0 1 X X X X X X 0 1

Prximo Estado
y1 0 0 1 0 0 y0 0 1 0 1 0

Decodificador
PARADO 1 1 0 0 0 MUL0 0 0 1 0 0 MUL1 0 0 0 1 1

Tabela 2 Tabela de transio Observando a tabela (e lembrando que Di (t) = yi (t+1)), temos D0 = (PARADO) . (INICIAR) + (MUL1) . (ZERO) D1 = MUL0 Portanto, o circuito final est detalhado na figura 9, onde se observa que a porta comum ao bloco combinatrio do prximo estado e ao bloco combinatrio da sada.
03/06/2004 11/12

PCS2304

MULTIPLICADOR BINRIO

Rev.1

INCIAR

INITIALIZE

CLEAR_C

D0
ZERO

D C

y0 DECODER A0 0 1 2 A1 3

MUL0 MUL1 SHIFT_DEC PARADO

D1

y1

Q0

LOAD

CLO CK

Figura 9 Circuito detalhado

4.Bibliografias Importantes
Midorikawa, ET, multiplicador binrio - Apostila de PCS 2355 / 2308
Kime, CR; Mano, MM. Logic and Computer Design Fundamentals. New Jersey Prentice Hall - 2000

03/06/2004

12/12

Você também pode gostar