A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Multiplicador Booth para o FemtoJava

Apresentações semelhantes


Apresentação em tema: "Multiplicador Booth para o FemtoJava"— Transcrição da apresentação:

1 Multiplicador Booth para o FemtoJava
Vagner Santos da Rosa

2 Tópicos Algoritmo de Booth Modificado Hardware do Booth Modificado
Requisitos para o FemtoJava Projeto desenvolvido Conclusões

3 Algoritmo de Booth Modificado
Algoritmo de booth original projetado para multiplicações de inteiros em complemento de 2 Booth modificado: Capaz de operar 2 ou mais bits do multiplicador por vez Ótimo compromisso entre desempenho e complexidade do hardware

4 Algoritmo de Booth Modificado
Funcionamento (base 4) Multiplicador é dividido em grupos de 3 bits O MSB de um grupo é compartilhado com o LSB de outro A partir de uma tabela de recodificação, podemos ter: Soma/Subtrai MD Soma/Subtrai 2*MD Não faz operação aritmética Operações sem sinal podem ser obtidas através do acréscimo de um codificador adicional no MSB do multiplicador

5 Algoritmo de Booth Modificado
Exemplo 1 Multiplicador = 1010 (1010 sem sinal) Grupo Operação 000 - 001 +MD 010 011 +2MD 100 -2MD 101 -MD 110 111 1: 1 * -2MD 2: 4 * -MD 3: 16 * MD P = 10 * MD 1: -2MD 2: -MD 3: +MD

6 Algoritmo de Booth Modificado
Exemplo 2 Multiplicador = 1010 (-610 com sinal) Grupo Operação 000 - 001 +MD 010 011 +2MD 100 -2MD 101 -MD 110 111 1: 1 * -2MD 2: 4 * -MD P = -6 * MD 10100 1: -2MD 2: -MD

7 Hardware do Booth Modificado
Visão top-level Multiplicador (MD) Multiplicando (MR) MD{-1,0,1} P{0,1} Operando1 MD{1,2,3} P{2,3} Operando2 P{14,15} MD{13,14,15} Operando8 P[31..16] Produto (32 bits)

8 Hardware do Booth Modificado
Operandos Produto Parcial Do Estágio Anterior MR{2n-1, 2n, 2n+1} Codificador Booth Multiplexador (Inverte/desloca/zera MR) 3 16 MD Somador MR Produto Parcial Para o Próximo Estágio P{2n, 2n+1}

9 Hardware do Booth Modificado
Codificador Booth MRn-1 PassaMDn MRn MRn+1 DeslocaMDn InverteMDn

10 Hardware do Booth Modificado
Multiplexer InverteMDn PassaMDn Para Mux a Esq. Do Mux a Dir. DeslocaMDn

11 Hardware do Booth Modificado
Somador A16 B16 A2 B2 A1 B1 A0 B0 Var (inv) Cout S16 S2 S1 S0 Somador Ripple Carry

12 Requisitos para o FemtoJava
Multiplicação com e sem sinal Possível através de pequenas adaptações na lógica do multiplicador e colocação de um sinal de controle Multiplicação de 8 ou 16 bits Versão de 16 bits: implementada Versao de 8 bits (com multiplicador de 16 bits): possível através da extensão do sinal do multiplicando e do multiplicador

13 Projeto desenvolvido Implementação em VHDL de um multiplicador booth para números com e sem sinal Operandos de 17 bits Lógica de tratamento de sinal Extender os operandos para 17 bits (com ou sem sinal) para o multiplicador poder tratar indistintamente números com e sem sinal Teste de funcionamento

14 Projeto desenvolvido Para números com sinal (complemento de 2)
Faz a extensão de sinal dos operandos durante a conversão de 16 para 17 bits Ignora os 2 bits mais significativos do produto Para números sem sinal Zera o bit mais significativo dos operandos

15 Projeto desenvolvido Recodificação do multiplicando:
two_b <= b(15 downto 0) & '0'; *MD b_bar <= not b; MD two_b_bar <= b_bar(15 downto 0) & '1'; *MD bb <= b when a="001" or a="010" else two_b when a="011" else two_b_bar when a="100" else b_bar when a="101" or a="110" else x"0000" & '0';

16 Projeto desenvolvido Somas parciais
soma: for i in 0 to 16 generate somadores su: entity WORK.fadd port map( sum_in(i), -- Produto parcial anterior bb(i), -- Multiplicando recodificado ctemp(i), -- carry (FA anterior) psum(i), -- Produto parcial atual ctemp(i+1)); -- carry (proximo FA) end generate;

17 Projeto desenvolvido Geração do produto
a0: entity WORK.badd port map(mul0, be, zer, s(0), p( 1 downto 0)); a1: entity WORK.badd port map(a(3 downto 1), be, s(0), s(1), p( 3 downto 2)); (...) a8: entity WORK.badd port map(“00” & msb_mr, be,s(7),s(8), p(17 downto 16)); p(31 downto 18) <= s(8)(13 downto 0);

18 Projeto desenvolvido Seleção de operação com ou sem sinal
topbit <= b(15) when sign = '1' else '0'; -- calcula extensao do multiplicando msb_mr <= a(15) when sign = '0' else '0'; -- calcula extensao do multiplicador be <= topbit & b ; -- multiplicando de 17 bits

19 Projeto desenvolvido Simulações Verificação de funcionamento
Vetores de teste que examinam possíveis falhas na implementação Não exaustivo Medição do atraso Atraso analítico caminho mais longo no datapath Pode ser um falso caminho Atraso máximo experimental: Atraso mais realista Pode não ser o maior atraso absoluto

20 Projeto desenvolvido Simulações Multiplicação com sinal
Multiplicando (b) positivo Multiplicador (a) positivo e negativo

21 Projeto desenvolvido Simulações Multiplicação com sinal
Multiplicando (b) negativo Multiplicador (a) positivo e negativo

22 Multiplicação com sinal
Projeto desenvolvido Simulações Multiplicação com sinal Teste dos limites

23 Multiplicação com sinal
Projeto desenvolvido Simulações Multiplicação com sinal Teste dos limites

24 Multiplicação sem sinal
Projeto desenvolvido Simulações Multiplicação sem sinal

25 Multiplicação sem sinal
Projeto desenvolvido Simulações Multiplicação sem sinal

26 Multiplicação sem sinal
Projeto desenvolvido Simulações Multiplicação sem sinal Teste dos limites

27 Multiplicação sem sinal
Projeto desenvolvido Simulações Multiplicação sem sinal Teste dos limites

28 Projeto desenvolvido Maior atraso Calculado pelo Quartus II: 68ns
Medido: ~50ns Não foram testadas todas as combinações de multiplicando e multiplicador

29 Projeto desenvolvido Inserção no FemtoJava
Substituição arquivo mul.vhd Criação de uma instrução de multiplicação com sinal Criação de lógica de controle de sinal

30 Conclusões Arquitetura relativamente regular, mas com características que tiveram que ser observadas para a obtenção do resultado correto Para suportar operações de 16 bits com e sem sinal, um multiplicador de 17 bits teve que ser implementado Pipelines podem ser facilmente inseridos, se necessário


Carregar ppt "Multiplicador Booth para o FemtoJava"

Apresentações semelhantes


Anúncios Google