Кто-нибудь может рассказать о 2 дополнением множители?

N

narasimha_80

Guest
Здравствуйте,

Я хочу осуществить 8 бит 2 дополнением множители (для дробного умножения числа) в VHDL.Кто-нибудь может мне предложить некоторые алгоритмы или отправить мне VHDL / Verilog-код?

Спасибо заранее,
Нарасимха Наик

 
Я хотел бы сделать это в Verilog.Verilog не имеет дробные типы данных, поэтому я просто помню, где я поставил запятой.

Код:

Модуль сверху (A, B, Y);

ввод подписал [7:0], б;

выходной подписал [7:0] Y;назначить Y = A * B;

ENDMODULE
 
Зайдите сюда и искать универсальный множитель.

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

 
Лучше использовать кабин алгоритм подписал умножения.

 
Привет Анджали,

На самом деле я хочу осуществить дробные значения (в 2 с дополнением) мультипликаторов в VHDL.ie represeneting дробные значения в двоичной и множатся.Ли кабины алгоритма поддержки этого дробного умножения стоимости?Если нет, то Вы можете предложить какие-либо алгоритма для этого?Мне очень нужна помощь.

С уважением,
Нарасимха Наик

 
Я не уверен, что понял ваш вопрос.Умножение дроби в точности такой же, как целые умножения, за исключением положение десятичной точки.

Например, предположим, у вас уже есть оборудование, которое умножает два 8-разрядных целых чисел для получения 16-битного продукта:
AAAAAAAA * ВВВВВВВВ = ÿýÿýÿýÿýÿýÿýÿýÿý

Вы можете использовать то же оборудование для умножения двух 8-битных значений фракции:
aaa.aaaaa * bbbbbb.bb = yyyyyyyyy.yyyyyyy

Однако, если вы еще не имеют целых множителя, и почему-то ваши не хотят использовать оператор HDL *, чем это другая проблема.

 
Привет echo47,

Вы писали, что то же оборудование может быть использовано для целых и дробных умножения.т.

AAAAAAAA * ВВВВВВВВ = ÿýÿýÿýÿýÿýÿýÿýÿý

aaa.aaaaa * bbbbbb.bb = yyyyyyyyy.yyyyyyy

Я думаю, мы не можем использовать то же оборудование для целых и дробных умножения.

См., например,
0,5 * 0,5 = 0,25

0,5 = 01 в двоичной;

Затем, 01 * 01 = 0001 = 1 в десятичной системе и 0001 не равен 0,25 в двоичной системе.

Но, 0,25 = 0100

Поэтому я думаю, мы не можем использовать то же оборудование для целых и дробных умножения стоимости.Не правда ли?

Напиши мне дальше.

Привет,
Нарасимха Наик

 
narasimha_80
по вашему примеру
0,5 = 01 в двоичной;
Затем, 01 * 01 = 0001
0001 не 1
0001 = 00,01 = 0,25
вы должны уведомить об этом положение десятичной точки.
Что касается алгоритма
Существует много алгоритмов мультипликатора implemention
Вы можете найти их в Google,
легко найти много полезных ссылок
как Anjali сказал, стенд кодирования является хорошим методом для области и скорости, особенно в 4-основана стенд кодирования.
Последняя редакция tarkyss Янв 05 2006 5:50; редактировалось 1 раз в общей сложности

 
Или вы можете использовать мой 8-битных Пример:

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

Для определения местоположения запятой результат, Вам добавить число бит входного фракции.Пять долей битов раза два бита долю дает вам семь битов фракции.

 

Welcome to EDABoard.com

Sponsor

Back
Top