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

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

Multiplicador Booth para o FemtoJava Vagner Santos da Rosa.

Apresentações semelhantes


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

1 Multiplicador Booth para o FemtoJava Vagner Santos da Rosa

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

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

4 Algoritmo de Booth Modificado Funcionamento (base 4) Funcionamento (base 4) Multiplicador é dividido em grupos de 3 bits Multiplicador é dividido em grupos de 3 bits O MSB de um grupo é compartilhado com o LSB de outro O MSB de um grupo é compartilhado com o LSB de outro A partir de uma tabela de recodificação, podemos ter: A partir de uma tabela de recodificação, podemos ter: Soma/Subtrai MD Soma/Subtrai MD Soma/Subtrai 2*MD Soma/Subtrai 2*MD Não faz operação aritmética 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 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 Exemplo 1 Multiplicador = 1010 (10 10 sem sinal) Multiplicador = 1010 (10 10 sem sinal) : -2MD 2: -MD 3: +MD GrupoOperação MD 010+MD 011+2MD 100-2MD 101-MD 110-MD : 1 * -2MD 2: 4 * -MD 3: 16 * MD P = 10 * MD

6 Algoritmo de Booth Modificado Exemplo 2 Exemplo 2 Multiplicador = 1010 (-6 10 com sinal) Multiplicador = 1010 (-6 10 com sinal) : -2MD 2: -MD GrupoOperação MD 010+MD 011+2MD 100-2MD 101-MD 110-MD : 1 * -2MD 2: 4 * -MD P = -6 * MD

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

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

9 Hardware do Booth Modificado Codificador Booth Codificador Booth MR n-1 MR n MR n+1 PassaMD n DeslocaMD n InverteMD n

10 Hardware do Booth Modificado Multiplexer Multiplexer PassaMD n DeslocaMD n InverteMD n Do Mux a Dir.Para Mux a Esq.

11 Hardware do Booth Modificado Somador Somador Var (inv) A0 B0A1 B1A2 B2A16 B16 CoutS16S2S1S0 Somador Ripple Carry

12 Requisitos para o FemtoJava Multiplicação com e sem sinal 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 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 Multiplicação de 8 ou 16 bits Versão de 16 bits: implementada 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 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 Implementação em VHDL de um multiplicador booth para números com e sem sinal Operandos de 17 bits Operandos de 17 bits Lógica de tratamento de sinal 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 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 Teste de funcionamento

14 Projeto desenvolvido Para números com sinal (complemento de 2) 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 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 Ignora os 2 bits mais significativos do produto Para números sem sinal Para números sem sinal Zera o bit mais significativo dos operandos Zera o bit mais significativo dos operandos Ignora os 2 bits mais significativos do produto Ignora os 2 bits mais significativos do produto

15 Projeto desenvolvido Recodificação do multiplicando: Recodificação do multiplicando: two_b <= b(15 downto 0) & '0'; -- 2*MD b_bar <= not b;-- -MD two_b_bar <= b_bar(15 downto 0) & '1'; -- -2*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 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 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 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 Simulações Verificação de funcionamento Verificação de funcionamento Vetores de teste que examinam possíveis falhas na implementação Vetores de teste que examinam possíveis falhas na implementação Não exaustivo Não exaustivo Medição do atraso Medição do atraso Atraso analítico Atraso analítico caminho mais longo no datapath caminho mais longo no datapath Pode ser um falso caminho Pode ser um falso caminho Atraso máximo experimental: Atraso máximo experimental: Atraso mais realista Atraso mais realista Pode não ser o maior atraso absoluto Pode não ser o maior atraso absoluto

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

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

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

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

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

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

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

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

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

29 Projeto desenvolvido Inserção no FemtoJava Inserção no FemtoJava Substituição arquivo mul.vhd Substituição arquivo mul.vhd Criação de uma instrução de multiplicação com sinal Criação de uma instrução de multiplicação com sinal Criação de lógica de controle de 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 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 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 Pipelines podem ser facilmente inseridos, se necessário


Carregar ppt "Multiplicador Booth para o FemtoJava Vagner Santos da Rosa."

Apresentações semelhantes


Anúncios Google