
1 Введение
2 Описание модуля с фиксированными параметрами — CordicSimple_v1
3 Небольшая модернизация — CordicSimple_v2
4 Описание параметризируемого модуля — CordicParam_v1

1 Введение
2 Описание модуля с фиксированными параметрами — CordicSimple_v1
3 Небольшая модернизация — CordicSimple_v2
4 Описание параметризируемого модуля — CordicParam_v1
Статья — про вскрытие и разбор кристалла Intel 8087 с фокусом на его высокоскоростном сдвигателе, который занимал заметную площадь и сильно влиял на производительность операций с плавающей запятой. В ней показано, как двухступенчатая схема (сдвиг на 0–7 бит и на 0–7 байт) позволяет за один проход выполнять сдвиг на 0–63 бита, что нужно для выравнивания мантисс, нормализации и алгоритмов вроде CORDIC.
В Pentium (P5) FPU синусы/косинусы/экспоненты/логарифмы считаются не CORDIC, а полиномиальными аппроксимациями с редукцией диапазона; коэффициенты оптимизированы (вероятно, по Ремезу, минимакс).
Константы лежат в отдельном constant ROM: 304 записи; секция экспоненты — 18 бит (17 бит экспоненты со смещением 0x0ffff + знаковый бит мантиссы), секция мантиссы — 68 бит (флаг + 67 бит значащей части).
Аппаратно ROM — две решётки (экспоненты/мантиссы) с перемежением бит для 8 констант в строке; выборка через мультиплексоры, драйверы строк — BiCMOS для работы на большой ёмкостной нагрузке.

sin, cos, tan и тому подобных на маломощных устройствах без использования модуля обработки операций с плавающей запятой или затратных таблиц поиска. По факту он сводит эти сложные функции до простых операций сложения и битового сдвига.
Перейду сразу к делу и скажу, почему я так сильно люблю этот алгоритм, а затем займёмся изучением принципов его работы. По сути, фактические операции CORDIC весьма просты — как я уже сказал, это сдвиги и сложение — но выполняет он их путём комбинирования векторной арифметики, тригонометрии, доказательств сходимости и продуманных техник компьютерных наук. Лично я считаю, что именно это имеют ввиду, описывая его природу, как «элегантную».Читать полностью »
В 1980 году Intel представила чип 8087 для ускорения обработки чисел с плавающей запятой на 8086-х процессорах, и его использовали в оригинальном IBM PC. Поскольку первые микропроцессоры работали только с целыми числами, арифметика с числами с плавающей запятой была медленной, а с трансцендентными функциями вроде арктангенса или логарифмов дела обстояли ещё хуже. Добавление чипа сопроцессора 8087 к системе было способно ускорить операции с числами с плавающей запятой до ста раз.
Я вскрыл чип 8087 и сделал несколько его фотографий под микроскопом. На фото ниже показан крохотный кремниевый кристалл чипа. По его бокам крохотные проводники соединяют его с 40 внешними ногами. Разметка основных функциональных блоков на картинке сделана мною благодаря реверс-инжинирингу. Если внимательно изучить чип, то можно извлечь из его ПЗУ различные константы – такие числа, как π, используемые чипом в вычислениях.

Кристалл чипа от Intel 8087 для работы с плавающей запятой с отмеченными основными функциональными блоками. ПЗУ с константами отмечен зелёным. Кликабельно.
Читать полностью »
Всем привет!
В этой статье речь пойдет об одной важной части цифровой обработки сигналов — оконной фильтрации сигналов, в частности на ПЛИС. В статье будут показаны способы проектирования классических окон стандартной длины и «длинных» окон от 64K до 16M+ отсчетов. Основной язык разработки — VHDL, элементная база — современные кристаллы FPGA Xilinx последних семейств: это Ultrascale, Ultrascale+, 7-series. В статье будет показана реализация CORDIC — базового ядра для конфигурации оконных функций любой длительности, а также основных оконных функций. В статье рассмотрен метод проектирования с помощью языков высокого уровня С/C++ в Vivado HLS. Как обычно, в конце статьи вы найдете ссылку на исходные коды проекта.
КДПВ: типичная схема прохождения сигнала через узлы ЦОС для задач анализа спектра.

Читать полностью »