2015-12-17 2 views
0

В общем, есть два метода, поскольку я знаю, какое умножение фиксированное/с плавающей запятой. Я инженер по оборудованию, такой как Verilog.Каков наилучший способ умножения с фиксированной/с плавающей запятой?

1. один способ Verilog - Floating points multiplication

2. другой способ, который для сдвига влево «< <» тогда сдвиг вправо «>>»

Я подумаю над способами, которые являются результаты все одинаковы. Но я не уверен, поэтому я спрашиваю здесь, что я хочу знать, какой путь можно использовать и исправить?

Update1.

I think there are some way what multiplication in verilog. 

1.в один.

What if I want to multipicate with 3.82 *2.581. 
Then we can make integer above fractional numbers like this. 
3.98*8 = 31.84. 
What if we want only integer result then we could like this way to calculate . 
3.98<<7 =3.98 * 2^7 = almost 509. 
Then we can get 509 * 8 = 4072 
Then we can 31 at 4072>>7. 

2.way two. 3.98 = почти 'b11_111110101 ... Здесь мы можем подобрать подходящую глубину для расчета умножения. 8 = «B1000 11_11111010 * 1000 = (4 ИНТ), (0 гидроразрыва) * (2 ИНТ), (8 гидроразрыва) 11 1111101000 = 8144 Тогда мы получим 8144 * 2^-8 = 31,8125

обновленная информация 2

Я смущен умножение между how can I apply fixed fraction to the integer и Verilog - Floating points multiplication

Какой из них лучше?

+0

Я не уверен, что вы просите. вы спрашиваете, как делать дробные и искать неподвижную точку с плавающей запятой или как делать умножение с фиксированной точкой. ваша ссылка 1 просто описывает, как интерпретировать результат '*', '<<' then'>>' Я думаю, что речь идет о реализации мультипликатора, а не о интерпретации данных с фиксированной точкой. – Morgan

+0

@Morgan. Я спрашиваю о том, какой метод умножения лучше между первым и вторым. Я думаю, что все вышеперечисленное относится к умножению в фиксированной точке. Мне не хватает? – bural

+0

Лучше как? Легко реализуется, поддерживается, быстрее или ниже. Сдвиг добавления можно разделить на несколько циклов, поэтому также необходимо учитывать скорость передачи данных по сравнению с тактовой частотой. – Morgan

ответ

0

Лучший способ выполнить арифметику с фиксированной точкой - использовать библиотеку с фиксированной точкой, которая (надеюсь) была тщательно написана и отлажена. Вы используете Verilog, поэтому просто ищите «verilog fixed point library» в Google. Вы найдете это

http://opencores.org/project,verilog_fixed_point_math_library

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