Рациональные числа в Верилоге - PullRequest
2 голосов
/ 16 мая 2011

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

Ответы [ 2 ]

2 голосов
/ 16 мая 2011

Verilog имеет тип данных real, который используется для действительных чисел (с плавающей запятой):

real data;
initial data = 1.55;
1 голос
/ 30 июня 2011

Существует два основных способа реализации рациональных чисел в HDL:

1) Если вам нужен фиксированный знаменатель, который всегда является степенью двойки, вы можете просто использовать числа с фиксированной точкой, которые имеют нормальные два-полное представление, но имеют биты с индексом меньше нуля, так что, как [3:0] "0111" будет 0*2**3 + 1*2**2 + 1*2**1 + 1*2**0 = 7, [1:-2] "0111" будет 0*2**1 + 1*2**0 + 1*2**-1 + 1*2**-2 = 1.75.В обычном Verilog вы можете использовать отрицательные индикаторы, подобные этому, но вам придется обрабатывать сдвиг и масштабирование, когда вы выполняете операции вручную (например, помещаете каждую операцию в свою собственную функцию или модуль).С помощью SystemVerilog или VHDL вы можете создать (или использовать существующий) пакет с фиксированной запятой, который обрабатывает это автоматически с типами данных.

2) Если вы хотите иметь произвольные знаменатели, вы можете просто использовать два регистра для представлениякаждое значение, где один - числитель, а один - знаменатель.Опять же, вам придется обрабатывать выполнение математических операций вручную.И снова, если вы используете SystemVerilog или VHDL, вы можете заключить это поведение в тип данных.

Удачи!

...