#cordic — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #cordic, aggregated by home.social.
-
[Перевод] Проектируем с нуля калькулятор на FPGA. Часть 9: погоня за последним разрядом
← Восьмая часть Описанный в предыдущих частях калькулятор уже работал. Реализация 2021 года запускалась на реальном оборудовании, обрабатывала нажатия клавиш, вычисляла результаты и отображала их. Арифметика была корректной в том смысле, что большинство результатов было точным до 12 значимых разрядов, а это больше, чем требуется обычному пользователю. Но «большинство» это не «все», а «примерно 12» — это не 15-16 разрядов, которые может и должна обеспечивать 16-разрядная BCD-машина. Существовали пограничные случаи, в которых результаты оказывались совершенно неверными. Имелись итеративные алгоритмы с точностью приемлемой, но не такой, какой она могла быть. Кроме того, в процессе тестирования я обнаружил ошибки, при отладке которых обнаружились фундаментальные баги в коде прототипа на C++. Это привело меня в смятение, ведь для их устранения мне бы пришлось переделать заново код прототипа. В конечном итоге, так я и поступил. Старый код я оставил в репозитории (Pathfinding/Methods) и с нуля разработал совершенно новую версию (Pathfinding/Proof). Я пообещал себе, что занимаюсь этим последний раз в жизни, поэтому стремился делать всё идеально. В итоге, версия 2025 года устранила найденные мной проблемы. Это был не патч, а почти полное переписывание арифметического движка, расширение набора команд CPU и существенное увеличение библиотеки функций. В этом посте я расскажу об изменениях и их причинах.
-
РАЗРАБОТКА ПАРАМЕТРИЗИРУЕМОГО МОДУЛЯ CORDIC-АЛГОРИТМА НА SYSTEM VERILOG
В далеком 2011 году автором была опубликована статья «Реализация CORDIC-алгоритма на ПЛИС» [1]. В той статье приводится сначала математическое описание алгоритма, его суть. Показан пример расчета поворота вектора на плоскости сначала «на бумажке» согласно алгоритму, а затем сравнение результатов с расчетом «по калькулятору». Затем, показано создание структурной схемы проекта с rtl-описанием CORDIC-алгоритма и приведены листинги каждого модуля. Помимо этого были приведены основы создания проекта в среде ModelSim. Автор считает, что эта статья оказалась полезной для новичков в области программирования ПЛИС, так как на протяжении долгого периода времени, после публикации статьи приходили письма с вопросами и уточнениями на данную тему. Даже сейчас я часто встречаю на различных форумах на тему ПЛИС ссылки на данную работу. Но! Если математическая часть алгоритма однозначно является полезной, а также основы создания и структурированного ведения проекта для новичка, то использовать данное rtl-описание в различных проектах, адаптируя модули проекта по свои нужды крайне неудобно и неуклюже. По крайней мере, автор, когда заглядывает в это свое создание в прошлом, морщится и чувствует себя неловко. Поэтому появилось желание представить тот модуль CORDICа (для генерации гармонического сигнала в сфере радиолокации и связи), который автор использует в данный момент в различных проектах. Весь алгоритм реализован в одном sv-модуле, а, значит, его намного легче переносить из проекта в проект. Также он более прост в восприятии.
-
РАЗРАБОТКА ПАРАМЕТРИЗИРУЕМОГО МОДУЛЯ CORDIC-АЛГОРИТМА НА SYSTEM VERILOG
В далеком 2011 году автором была опубликована статья «Реализация CORDIC-алгоритма на ПЛИС» [1]. В той статье приводится сначала математическое описание алгоритма, его суть. Показан пример расчета поворота вектора на плоскости сначала «на бумажке» согласно алгоритму, а затем сравнение результатов с расчетом «по калькулятору». Затем, показано создание структурной схемы проекта с rtl-описанием CORDIC-алгоритма и приведены листинги каждого модуля. Помимо этого были приведены основы создания проекта в среде ModelSim. Автор считает, что эта статья оказалась полезной для новичков в области программирования ПЛИС, так как на протяжении долгого периода времени, после публикации статьи приходили письма с вопросами и уточнениями на данную тему. Даже сейчас я часто встречаю на различных форумах на тему ПЛИС ссылки на данную работу. Но! Если математическая часть алгоритма однозначно является полезной, а также основы создания и структурированного ведения проекта для новичка, то использовать данное rtl-описание в различных проектах, адаптируя модули проекта по свои нужды крайне неудобно и неуклюже. По крайней мере, автор, когда заглядывает в это свое создание в прошлом, морщится и чувствует себя неловко. Поэтому появилось желание представить тот модуль CORDICа (для генерации гармонического сигнала в сфере радиолокации и связи), который автор использует в данный момент в различных проектах. Весь алгоритм реализован в одном sv-модуле, а, значит, его намного легче переносить из проекта в проект. Также он более прост в восприятии.
-
РАЗРАБОТКА ПАРАМЕТРИЗИРУЕМОГО МОДУЛЯ CORDIC-АЛГОРИТМА НА SYSTEM VERILOG
В далеком 2011 году автором была опубликована статья «Реализация CORDIC-алгоритма на ПЛИС» [1]. В той статье приводится сначала математическое описание алгоритма, его суть. Показан пример расчета поворота вектора на плоскости сначала «на бумажке» согласно алгоритму, а затем сравнение результатов с расчетом «по калькулятору». Затем, показано создание структурной схемы проекта с rtl-описанием CORDIC-алгоритма и приведены листинги каждого модуля. Помимо этого были приведены основы создания проекта в среде ModelSim. Автор считает, что эта статья оказалась полезной для новичков в области программирования ПЛИС, так как на протяжении долгого периода времени, после публикации статьи приходили письма с вопросами и уточнениями на данную тему. Даже сейчас я часто встречаю на различных форумах на тему ПЛИС ссылки на данную работу. Но! Если математическая часть алгоритма однозначно является полезной, а также основы создания и структурированного ведения проекта для новичка, то использовать данное rtl-описание в различных проектах, адаптируя модули проекта по свои нужды крайне неудобно и неуклюже. По крайней мере, автор, когда заглядывает в это свое создание в прошлом, морщится и чувствует себя неловко. Поэтому появилось желание представить тот модуль CORDICа (для генерации гармонического сигнала в сфере радиолокации и связи), который автор использует в данный момент в различных проектах. Весь алгоритм реализован в одном sv-модуле, а, значит, его намного легче переносить из проекта в проект. Также он более прост в восприятии.
-
[Перевод] Проектируем с нуля калькулятор на FPGA. Часть 3: Практические численные методы
В предыдущем посте мы ответили на вопрос о реализуемости проекта: да, tan , ln , exp и sqrt можно при помощи различных трюков вычислить из сложения, вычитания и умножения. В этом посте мы поговорим о том, как делать это корректно с точностью до 16 десятичных разрядов при помощи проверенной эталонной реализации, относительно которой мы будем в дальнейшем тестировать оборудование. Когда я начинал этот проект в 2021 году, мне нужен был код на C++, который бы реализовывал алгоритмы на основе примитивов BCD и проверял результаты. Этот код превратился в подпроект Methods . Он заработал, но в нём возникли небольшие баги с шириной мантиссы, из-за которых тестовые результаты оказались ненадёжными в пределах одного-двух последних разрядов. Вместо того, чтобы патчить его, я в 2025 году переписал всё с нуля в рамках подпроекта Proto : более чистой архитектуры, правильного эталона и генератора тестовых векторов оборудования, относительно которого можно валидировать микрокод FPGA.
https://habr.com/ru/articles/1037010/
#калькулятор #cordic #численные_методы #двоичнодесятичный_код
-
[Перевод] Проектируем с нуля калькулятор на FPGA. Часть 3: Практические численные методы
В предыдущем посте мы ответили на вопрос о реализуемости проекта: да, tan , ln , exp и sqrt можно при помощи различных трюков вычислить из сложения, вычитания и умножения. В этом посте мы поговорим о том, как делать это корректно с точностью до 16 десятичных разрядов при помощи проверенной эталонной реализации, относительно которой мы будем в дальнейшем тестировать оборудование. Когда я начинал этот проект в 2021 году, мне нужен был код на C++, который бы реализовывал алгоритмы на основе примитивов BCD и проверял результаты. Этот код превратился в подпроект Methods . Он заработал, но в нём возникли небольшие баги с шириной мантиссы, из-за которых тестовые результаты оказались ненадёжными в пределах одного-двух последних разрядов. Вместо того, чтобы патчить его, я в 2025 году переписал всё с нуля в рамках подпроекта Proto : более чистой архитектуры, правильного эталона и генератора тестовых векторов оборудования, относительно которого можно валидировать микрокод FPGA.
https://habr.com/ru/articles/1037010/
#калькулятор #cordic #численные_методы #двоичнодесятичный_код
-
[Перевод] Проектируем с нуля калькулятор на FPGA. Часть 3: Практические численные методы
В предыдущем посте мы ответили на вопрос о реализуемости проекта: да, tan , ln , exp и sqrt можно при помощи различных трюков вычислить из сложения, вычитания и умножения. В этом посте мы поговорим о том, как делать это корректно с точностью до 16 десятичных разрядов при помощи проверенной эталонной реализации, относительно которой мы будем в дальнейшем тестировать оборудование. Когда я начинал этот проект в 2021 году, мне нужен был код на C++, который бы реализовывал алгоритмы на основе примитивов BCD и проверял результаты. Этот код превратился в подпроект Methods . Он заработал, но в нём возникли небольшие баги с шириной мантиссы, из-за которых тестовые результаты оказались ненадёжными в пределах одного-двух последних разрядов. Вместо того, чтобы патчить его, я в 2025 году переписал всё с нуля в рамках подпроекта Proto : более чистой архитектуры, правильного эталона и генератора тестовых векторов оборудования, относительно которого можно валидировать микрокод FPGA.
https://habr.com/ru/articles/1037010/
#калькулятор #cordic #численные_методы #двоичнодесятичный_код
-
[Перевод] Анализ кристалла 8087: быстрый битовый шифтер математического сопроцессора
В 1980-м Intel 8087 сделал вычисления с плавающей запятой на 8086/8088 не «возможными», а по‑настоящему быстрыми — настолько, что на плате оригинального IBM PC под него оставляли пустой сокет. В этой статье автор буквально смотрит на 8087 изнутри: по микрофотографиям кристалла разбирает один из ключевых ускорителей — двухступенчатый бочкообразный сдвигатель, который за один проход выполняет сдвиг на 0–63 позиций и нужен и для обычной арифметики, и для CORDIC‑алгоритмов трансцендентных функций. Будет контекст про IEEE 754, много NMOS‑схемотехники и редкое удовольствие от того, как «железо» читается прямо по топологии. Как работает 8087
https://habr.com/ru/companies/otus/articles/987032/
#Intel_8087 #математический_сопроцессор #плавающая_запятая #IEEE_754 #анализ_кристалла #NMOS #микрокод #CORDIC
-
[Перевод] Анализ кристалла 8087: быстрый битовый шифтер математического сопроцессора
В 1980-м Intel 8087 сделал вычисления с плавающей запятой на 8086/8088 не «возможными», а по‑настоящему быстрыми — настолько, что на плате оригинального IBM PC под него оставляли пустой сокет. В этой статье автор буквально смотрит на 8087 изнутри: по микрофотографиям кристалла разбирает один из ключевых ускорителей — двухступенчатый бочкообразный сдвигатель, который за один проход выполняет сдвиг на 0–63 позиций и нужен и для обычной арифметики, и для CORDIC‑алгоритмов трансцендентных функций. Будет контекст про IEEE 754, много NMOS‑схемотехники и редкое удовольствие от того, как «железо» читается прямо по топологии. Как работает 8087
https://habr.com/ru/companies/otus/articles/987032/
#Intel_8087 #математический_сопроцессор #плавающая_запятая #IEEE_754 #анализ_кристалла #NMOS #микрокод #CORDIC
-
[Перевод] Анализ кристалла 8087: быстрый битовый шифтер математического сопроцессора
В 1980-м Intel 8087 сделал вычисления с плавающей запятой на 8086/8088 не «возможными», а по‑настоящему быстрыми — настолько, что на плате оригинального IBM PC под него оставляли пустой сокет. В этой статье автор буквально смотрит на 8087 изнутри: по микрофотографиям кристалла разбирает один из ключевых ускорителей — двухступенчатый бочкообразный сдвигатель, который за один проход выполняет сдвиг на 0–63 позиций и нужен и для обычной арифметики, и для CORDIC‑алгоритмов трансцендентных функций. Будет контекст про IEEE 754, много NMOS‑схемотехники и редкое удовольствие от того, как «железо» читается прямо по топологии. Как работает 8087
https://habr.com/ru/companies/otus/articles/987032/
#Intel_8087 #математический_сопроцессор #плавающая_запятая #IEEE_754 #анализ_кристалла #NMOS #микрокод #CORDIC
-
[Перевод] Реверс-инжиниринг π: как Pentium считал синусы быстрее всех
Pentium часто вспоминают из-за FDIV, но куда интереснее его «внутренний тригонометр». В этой статье — разбор FPU под микроскопом: как в constant ROM закодированы сотни коэффициентов и табличных констант, почему Intel отказалась от CORDIC в пользу полиномиальных аппроксимаций с редукцией диапазона, и как (вероятно) подбирались коэффициенты через минимакс (алгоритм Ремеза). Поговорим про компоновку ячеек ROM, BiCMOS-драйверы строк, микрокод и datapath, где биты реально встречаются с математикой. По сути — практическая археология кремния: от побитовых «полосок» на кристалле до инженерных компромиссов точности и латентности, которые сделали синус и логарифм быстрыми «на железе». Полный разбор
https://habr.com/ru/companies/otus/articles/965346/
#Pentium #FPU #алгоритм_Ремеза #редукция_диапазона #микрокод #BiCMOS #Микроэлектроника #архитектура_компьютеров #Реверсинжиниринг #CORDIC
-
[Перевод] Реверс-инжиниринг π: как Pentium считал синусы быстрее всех
Pentium часто вспоминают из-за FDIV, но куда интереснее его «внутренний тригонометр». В этой статье — разбор FPU под микроскопом: как в constant ROM закодированы сотни коэффициентов и табличных констант, почему Intel отказалась от CORDIC в пользу полиномиальных аппроксимаций с редукцией диапазона, и как (вероятно) подбирались коэффициенты через минимакс (алгоритм Ремеза). Поговорим про компоновку ячеек ROM, BiCMOS-драйверы строк, микрокод и datapath, где биты реально встречаются с математикой. По сути — практическая археология кремния: от побитовых «полосок» на кристалле до инженерных компромиссов точности и латентности, которые сделали синус и логарифм быстрыми «на железе». Полный разбор
https://habr.com/ru/companies/otus/articles/965346/
#Pentium #FPU #алгоритм_Ремеза #редукция_диапазона #микрокод #BiCMOS #Микроэлектроника #архитектура_компьютеров #Реверсинжиниринг #CORDIC
-
[Перевод] Реверс-инжиниринг π: как Pentium считал синусы быстрее всех
Pentium часто вспоминают из-за FDIV, но куда интереснее его «внутренний тригонометр». В этой статье — разбор FPU под микроскопом: как в constant ROM закодированы сотни коэффициентов и табличных констант, почему Intel отказалась от CORDIC в пользу полиномиальных аппроксимаций с редукцией диапазона, и как (вероятно) подбирались коэффициенты через минимакс (алгоритм Ремеза). Поговорим про компоновку ячеек ROM, BiCMOS-драйверы строк, микрокод и datapath, где биты реально встречаются с математикой. По сути — практическая археология кремния: от побитовых «полосок» на кристалле до инженерных компромиссов точности и латентности, которые сделали синус и логарифм быстрыми «на железе». Полный разбор
https://habr.com/ru/companies/otus/articles/965346/
#Pentium #FPU #алгоритм_Ремеза #редукция_диапазона #микрокод #BiCMOS #Микроэлектроника #архитектура_компьютеров #Реверсинжиниринг #CORDIC
-
[Перевод] Почему для меня так важен алгоритм CORDIC
CORDIC — это алгоритм для вычисления тригонометрических функций вроде sin , cos , tan и тому подобных на маломощных устройствах без использования модуля обработки операций с плавающей запятой или затратных таблиц поиска. По факту он сводит эти сложные функции до простых операций сложения и битового сдвига. Перейду сразу к делу и скажу, почему я так сильно люблю этот алгоритм, а затем займёмся изучением принципов его работы. По сути, фактические операции CORDIC весьма просты — как я уже сказал, это сдвиги и сложение — но выполняет он их путём комбинирования векторной арифметики, тригонометрии, доказательств сходимости и продуманных техник компьютерных наук. Лично я считаю, что именно это имеют ввиду, описывая его природу, как «элегантную».
https://habr.com/ru/companies/ruvds/articles/814733/
#ruvds_перевод #cordic #алгоритмы #тригонометрия #математика
-
[Перевод] Почему для меня так важен алгоритм CORDIC
CORDIC — это алгоритм для вычисления тригонометрических функций вроде sin , cos , tan и тому подобных на маломощных устройствах без использования модуля обработки операций с плавающей запятой или затратных таблиц поиска. По факту он сводит эти сложные функции до простых операций сложения и битового сдвига. Перейду сразу к делу и скажу, почему я так сильно люблю этот алгоритм, а затем займёмся изучением принципов его работы. По сути, фактические операции CORDIC весьма просты — как я уже сказал, это сдвиги и сложение — но выполняет он их путём комбинирования векторной арифметики, тригонометрии, доказательств сходимости и продуманных техник компьютерных наук. Лично я считаю, что именно это имеют ввиду, описывая его природу, как «элегантную».
https://habr.com/ru/companies/ruvds/articles/814733/
#ruvds_перевод #cordic #алгоритмы #тригонометрия #математика
-
[Перевод] Почему для меня так важен алгоритм CORDIC
CORDIC — это алгоритм для вычисления тригонометрических функций вроде sin , cos , tan и тому подобных на маломощных устройствах без использования модуля обработки операций с плавающей запятой или затратных таблиц поиска. По факту он сводит эти сложные функции до простых операций сложения и битового сдвига. Перейду сразу к делу и скажу, почему я так сильно люблю этот алгоритм, а затем займёмся изучением принципов его работы. По сути, фактические операции CORDIC весьма просты — как я уже сказал, это сдвиги и сложение — но выполняет он их путём комбинирования векторной арифметики, тригонометрии, доказательств сходимости и продуманных техник компьютерных наук. Лично я считаю, что именно это имеют ввиду, описывая его природу, как «элегантную».
https://habr.com/ru/companies/ruvds/articles/814733/
#ruvds_перевод #cordic #алгоритмы #тригонометрия #математика
-
Versuch 1:
mit Nmax = 128 auf 16 Bit padden durch <<8weil … der #cordic zwei Stellen vor dem Komma braucht, um Werte von -1,0 bis +1,0 kodieren zu können … ?
*rödel*
-
Looking for Pi in the 8087 Math Coprocessor Chip - Even with ten fingers to work with, math can be hard. Microprocessors, with the silicon equivalent... more: https://hackaday.com/2020/05/20/looking-for-pi-in-the-8087-math-coprocessor-chip/ #reverseengineering #retrocomputing #floatingpoint #trigonometry #coprocessor #constants #decapping #exponent #cordic #math #log #pi