2017-02-06 6 views
-1

Мне нужно вычислить arctan в VHDL. Для этого я собираюсь использовать Cilinx IP Core «Cordic V4.0». Это техническое описание:VHDL - XILINX CORDIC Algorithm

https://www.xilinx.com/support/documentation/ip_documentation/cordic_ds249.pdf

I've прочитал, что арктангенс расчет потребности входные значения от -1 до 1.

Мои ценности имеют диапазон 2^32 бит (целое число, не доля).

Необходимо ли преобразовать мои входные значения перед тем, как поместить их в Кордика-Алгоритм?

Если да, то как они должны быть преобразованы?

Привет, Erik

ответ

0

В спецификации Xilinx написано:

«Входной вектор, (Xin, Инь), а выходной вектор, (Xout, Yout) выражаются в виде пары номеров дополнений с фиксированной точкой 2 с целочисленной шириной 2 бита (формат 1QN). Угол входного вращения, радианты Pin также выражается как номер дополнения фиксированной точки 2, но с целочисленной шириной 3 бита (формат 2QN) «.

Так что, если вы используете вектор шириной 32 бита, тогда два наиболее значимых бита будут использоваться как целая часть, а 30 других - как десятичная часть.

Если вы не знаете, насколько фиксированной запятой работы, я предлагаю вам прочитать немного о нем:

https://en.wikipedia.org/wiki/Fixed-point_arithmetic

+0

О просто читать по этой части. Спасибо. Таким образом, согласно Википедии: «Чтобы преобразовать число из типа с фиксированной точкой с коэффициентом масштабирования R в другой тип с коэффициентом масштабирования S, базовое целое число должно быть умножено на R и разделено на S, то есть умножено на отношение R/S. " Я должен масштабировать свой номер для Mantisse 30 цифр? Итак, я должен разделить число на 2^30, а деление на 2^х в двоичном формате можно сделать, перемещая запятую? это правильно? – oleeiner

+0

На самом деле вы можете масштабировать на 32 бита, если учесть, что реальный диапазон [-1; 1 [представлен [-2^31; 2^31 [. Таким образом, один шаг во втором сегменте представляет 1/2^31 в вещественном (т. Е.: 4.66 * 10^-10) –

Смежные вопросы