Умножение чисел с плавающей и целочисленной литералами в VHDL - PullRequest
1 голос
/ 09 января 2020

Я работаю с VHDL-2002, пытаясь объявить константу следующим образом:

constant CORDIC_SCALE_FACTOR    :   integer := 0.607252935*(2**COORDS_WIDTH);

, где COORDS_WIDTH является ранее определенным обобщением c. Тем не менее, я не могу выполнить это умножение из-за типов. То, что я хотел бы сделать, приведёт 2**COORDS_WIDTH к типу с плавающей точкой, а затем приведёт результат к целочисленному значению (при условии, что приведение получит действительную часть с плавающей точкой и присвоит ее целому числу). Как я могу выполнить это? Я нашел в Интернете ресурсы, посвященные этому типу преобразования, но не по литералам, это должно быть проще.

1 Ответ

1 голос
/ 09 января 2020

Нашел решение, это было довольно просто. Тип 'float' называется 'real'

constant CORDIC_SCALE_FACTOR    :   integer := integer(0.607252935*real(2**COORDS_WIDTH));
...