В основном я пытаюсь закодировать синтезируемый модуль в verilog, который выполняет разделение между двумя числами и округляет результат. Например, если я делаю 56/30, тогда результирующее значение равно 1.86, и это значение должно быть округлено до 2 или если я делаю 42/30, результирующее значение равно 1.4, которое должно быть округлено до 1. Может ли синтезируемый код быть записан в verilog для достижения этого?Округление числа в verilog
ответ
Значение ответов LSB определяется входным форматом. Если вы измените ввод числителя на фиксированную точку, по крайней мере, на 1 бит фракции, а не на целые числа, ваш результат будет иметь значение 0,5, которое вы можете использовать для управления усечением (округлением вниз) или округлением вверх.
module test;
reg[4:0] a = 5'b0011_0; //3 with 1 Fractional bit
reg[4:0] b = 5'b00010; //2 no fractional bits
reg[9:0] c;
initial begin
c = a/b ; //LSB => 0.5
// c= 5'b01_1 => 1.5
#1 $display("C = %b", c);
end
endmodule
Большое спасибо. Я получил вашу логику ... –
Verilog усекает конец номера, если <size>
меньше, чем возвращаемое значение. Поэтому, если вы разделите 42/30, возвращаемое значение равно 1.4. Просто определите <size>
как 1, а десятичное будет усечено.
Однако имейте в виду, что это решение усекает десятичное число и не округляет его. Я не эксперт в Verilog, но вы могли бы обратиться к here, чтобы решить вашу проблему.
- 1. Округление Числа в Actuate
- 2. Подтвержденные числа в verilog
- 3. Символ числа в Verilog
- 4. php, округление числа
- 5. Округление числа до десяти
- 6. округление до целого числа
- 7. Округление десятичного числа вниз
- 8. Округление числа в Visual Basic
- 9. округление десятичного числа в LINQ
- 10. Округление числа в PARI/GP
- 11. Округление десятичного числа в эликсире
- 12. Округление десятичного числа в Gridview
- 13. Округление двойного числа до ближайшего целого числа
- 14. Округление числа до десятичных разрядов
- 15. SQL Округление не десятичного числа
- 16. Flex: NumericStepper округление десятичного числа
- 17. Stop .toFixed из округление числа
- 18. округление до ближайшего числа рубина
- 19. округление числа до сотого места
- 20. Иногда округление числа не соответствует
- 21. Округление до ближайшего целого числа
- 22. Verilog - генерировать взвешенные случайные числа
- 23. Как Округление десятичного числа в PHP
- 24. PHP: округление числа в 16 десятичных цифр
- 25. Округление числа до ближайшего 10 в Postgres
- 26. Случайное округление до целого числа в Python
- 27. Что вызывает округление числа строк в массиве?
- 28. Округление числа с printf в java?
- 29. Округление целого числа на конкретные целые числа в Java
- 30. Округление SSRS Округление
Необходимо предоставить более подробную информацию. Какой у вас синтезатор? Большинство из них превратят только оператор «/» в делитель, если он на самом деле просто сдвиг - делитель должен быть постоянной силой в два. Каковы ваши числовые форматы? Вы понимаете округление? Вероятно, вам нужно закодировать разделитель - найдите «не восстанавливающее подразделение». – EML
В основном числа, которые я использую для вычислений, являются входами в мой модуль. Таким образом, цифры находятся в формате проводов. Вы упомянули, что делитель должен быть постоянной силой в два. Но во время моделирования я получил вывод 56/30 как 1, который является значением пола для частного. Мое сомнение в том, может ли код быть синтезирован, если делителем является число, отличное от мощности 2? –
Я полагаю, что @EML имел в виду тот факт, что если константа или выбор делителей (знаменателей) были определены как степени 2, вы получили бы переключение, а не делитель. Переключатель имеет очень большую площадь и эффективен по сравнению с делителем. – Morgan