В общем, есть два метода, как я знаю, что такое умножение с фиксированной/плавающей запятой. Я инженер по оборудованию, такой как Verilog.
1. Односторонний Verilog - умножение с плавающей запятой
2. Другой способ: сдвинуть влево «‹‹», затем сдвинуть вправо «>>»
Я думаю, что выше способы, результаты которых одинаковы. Но я не уверен, поэтому я спрашиваю здесь, что я хочу знать, какой способ использовать и исправить?
Обновление1.
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. способ второй. 3.98 = почти 'b11_111110101... Здесь мы можем выбрать глубину костюма для вычисления умножения. 8 = 'b1000 11_11111010 * 1000 = (4 int), (0 frac) * (2 int), (8 frac) 11 1111101000 = 8144 Тогда мы получим 8144*2^-8 = 31,8125
обновление 2
Меня смущает умножение между , как я могу применить фиксированную дробь к целое число и Verilog — умножение с плавающей запятой
Какой способ лучше?
*
,<<
then>>
Я думаю, что обсуждается реализация множителя, а не интерпретация данных с фиксированной точкой. - person Morgan   schedule 17.12.2015*
не может быть синтезирован для операций с плавающей запятой только для целой или фиксированной точки. - person Morgan   schedule 18.12.2015