Alguém pode me dizer sobre o complemento para 2 multiplicadores?

N

narasimha_80

Guest
Olá,

Quero implementar 8 bits em complemento de 2 multiplicadores (para multiplicação número fracionário) em VHDL.Alguém pode me sugerir alguns algoritmos ou enviar-me o VHDL / Verilog código?

Thanks in Advance,
Narasimha Naik

 
Gostaria de fazer isto em Verilog.Verilog não tem qualquer tipo de dados fracionários, assim que eu simplesmente me lembrar onde colocava o ponto decimal.

Código:

Top Module (a, b, y);

entrada assinado [7:0] a, b;

saída assinado [7:0] y;atribuir y = a * b;

endmodule
 
Vai aqui e olhar para a Universal Multiplicador.

http://www.vhdl-online.de/model_lib_patras/

 
sua melhor usar algoritmo de estandes para a multiplicação assinado.

 
Olá Anjali,

Na verdade eu quiser implementar valor fracionário (em complemento para 2) multiplicadores VHDL.ie represeneting valor fracionário em binário e multiplicar-se.Algoritmos Stands oferece suporte a essa multiplicação de valor fracionário?Se não, você pode sugerir qualquer algoritmos para isso?Eu realmente preciso de alguma ajuda.

Atenciosamente,
Narasimha Naik

 
Eu não tenho certeza se eu entendo a sua pergunta.Multiplicação de frações é exatamente o mesmo como multiplicação de inteiros, exceto para a posição do ponto decimal.

Por exemplo, vamos supor que você já tem hardware que multiplica dois inteiros de 8 bits para obter um produto de 16 bits:
bbbbbbbb aaaaaaaa * = ÿýÿýÿýÿýÿýÿýÿýÿý

Você pode usar o mesmo hardware para multiplicar dois valores de fração de 8-bit:
bbbbbb.bb aaa.aaaaa * = yyyyyyyyy.yyyyyyy

Entretanto, se você ainda não tem um multiplicador inteiro, e por algum motivo o não quiser usar o operador * HDL, que isso é um problema diferente.

 
Olá echo47,

você escreveu que mesmo hardware pode ser usado para a multiplicação de inteiros e fracionários.ie

bbbbbbbb aaaaaaaa * = ÿýÿýÿýÿýÿýÿýÿýÿý

= bbbbbb.bb aaa.aaaaa * yyyyyyyyy.yyyyyyy

Acho que não podemos usar o mesmo hardware e multiplicação fracionária.

Ver, por exemplo
0,5 * 0,5 = 0,25

0,5 = 01 em binário;

Então, 01 * 01 = 0001 = 1 em decimal e 0001 não é igual a 0,25 em binário.

Mas, 0,25 = 0100

Então eu acho que nós não podemos usar para o mesmo hardware e multiplicação valor fracionário.Não é?

Escreva-me ainda mais.

Atenciosamente,
Narasimha Naik

 
narasimha_80
de acordo com seu exemplo
0,5 = 01 em binário;
Então, 01 * 01 = 0001
0001 não é 1
0001 = 00,01 = 0,25
você deve informar a posição do ponto decimal.
como para o algoritmo
há uma série de algoritmos para Aplicação multiplicador
Você pode pesquisá-los no Google,
é fácil encontrar um monte de links úteis
como Anjali disse, codificar estande é um bom método para a área e velocidade, codificar estande especialmente 4-baseado.
Última edição por tarkyss em 05 Jan 2006 5:50, editado 1 vez no total

 
Ou pode usar o meu exemplo 8-bit:

bbbbbb.bb aaa.aaaaa * = yyyyyyyyy.yyyyyyy
0,5 = aaa.aaaaa = 000,10000
0,5 bbbbbb.bb = 000.000,10
000,10000 * 000000,10 = 000000000,0100000 = 0,25

Para determinar a localização do ponto decimal de saída, que você adicionar o número de bits fração de entrada.Cinco bits fração vezes dois bits fração dá sete bits fração.

 

Welcome to EDABoard.com

Sponsor

Back
Top