Исследование cordic-алгоритмов для программируемых логических интегральных схем
Анализ тригонометрических алгоритмов CORDIC как цифрового решения для задач навигации в реальном времени. Применение алгоритма CORDIC в различных навигационных приложениях. Характеристика и схема итеративной архитектуры и развернутого CORDIC процессора.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 26.06.2018 |
Размер файла | 218,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Исследование cordic-алгоритмов для программируемых логических интегральных схем
Тарасенков С.О.
Аннотация
В цифровой обработке сигналов в течение длительного времени доминируют микропроцессоры с такими усовершенствованиями, как однократные многократные накопления команд и специальные режимы адресации. Хотя эти процессоры имеют низкую стоимость и предлагают экстремальную гибкость, они часто не достаточно быстры для достаточно требовательных задач DSP. Появление реконфигурируемых логических компьютеров позволяет повысить скорость выделенных аппаратных решений по затратам, конкурентоспособным с традиционным программным подходом. К сожалению, алгоритмы, оптимизированные для этих систем на базе микропроцессора, обычно плохо отображают аппаратные средства. Хотя аппаратно-эффективные решения часто существуют, доминирование программных систем удерживает эти решения вне внимания. Среди этих аппаратно-эффективных алгоритмов есть класс итерационных решений для тригонометрических и других трансцендентных функций, которые используют только сдвиги и добавляют к выполнению. Тригонометрические функции основаны на векторных вращениях, тогда как другие функции, такие как квадратный корень, реализуются с использованием инкрементного выражения желаемой функции. Тригонометрический алгоритм называется CORDIC. Инкрементные функции выполняются с очень простым расширением к аппаратной архитектуре. Алгоритмы CORDIC обычно дают один дополнительный бит точности для каждой итерации. Тригонометрические алгоритмы CORDIC были первоначально разработаны как цифровое решение для задач навигации в реальном времени.
Ключевые слова: CORDIC, FPGA, вектор, маршрутизаторы, процессор, развертывание, сумматоры, цифровая обработка сигналов
В цифровой обработке сигналов в течение длительного времени доминируют микропроцессоры с такими усовершенствованиями, как однократные многократные накопления команд и специальные режимы адресации. Хотя эти процессоры имеют низкую стоимость и предлагают экстремальную гибкость, они часто не достаточно быстры для достаточно требовательных задач DSP. Появление реконфигурируемых логических компьютеров позволяет повысить скорость выделенных аппаратных решений по затратам, конкурентоспособным с традиционным программным подходом. К сожалению, алгоритмы, оптимизированные для этих систем на базе микропроцессора, обычно плохо отображают аппаратные средства. Хотя аппаратно-эффективные решения часто существуют, доминирование программных систем удерживает эти решения вне внимания. Среди этих аппаратно-эффективных алгоритмов есть класс итерационных решений для тригонометрических и других трансцендентных функций, которые используют только сдвиги и добавляют к выполнению. Тригонометрические функции основаны на векторных вращениях, тогда как другие функции, такие как квадратный корень, реализуются с использованием инкрементного выражения желаемой функции. Тригонометрический алгоритм называется CORDIC. Инкрементные функции выполняются с очень простым расширением к аппаратной архитектуре. Алгоритмы CORDIC обычно дают один дополнительный бит точности для каждой итерации. Тригонометрические алгоритмы CORDIC были первоначально разработаны как цифровое решение для задач навигации в реальном времени.
Алгоритм CORDIC нашел свой путь в различных приложениях, включая математический сопроцессор 8087, калькулятор HP-35, радиолокационные сигнальные процессоры и робототехнику. CORDIC-алгоритмы также были предложены для вычисления дискретного преобразования Фурье, дискретного косинуса, дискретного преобразования Хартли и Чирпа-Z, фильтрации, сингулярной декомпозиции и решения линейных систем.
В этой статье делается попытка исследовать существующие алгоритмы CORDIC, ориентируясь на реализацию в программируемых пользователем вентильных матрицах (FPGA).
Итеративную архитектуру CORDIC можно получить просто путем дублирования каждого из трех разностных уравнений в аппаратном обеспечении, как показано на рисунке 1.
Рисунок 1 - итеративная архитектура CORDIC
При работе начальные значения загружаются через мультиплексоры в регистры x, y и z. Затем в каждом из следующих n циклов синхронизации значения из регистров передаются через сдвиги и сумматоры-вычитатели, а результаты помещаются обратно в регистры. Сдвиги изменяются на каждой итерации, чтобы вызвать нужный сдвиг для итерации. Аналогично, адрес ПЗУ увеличивается на каждой итерации, так что соответствующее значение элементарного угла представляется на сумматор-вычитатель z. На последней итерации результаты считываются непосредственно из сумматоров-вычитателей. Очевидно, что требуется простая машина состояния, чтобы отслеживать текущую итерацию и выбирать степень сдвига и адрес ПЗУ для каждой итерации. Данная конструкция использует дорожки данных по всему слову (так называемый бит-параллельный дизайн). Бит-параллельные переключатели сдвига переменных плохо отображают архитектуры FPGA из-за высокой потребности в вентиляторах. Если они реализованы, эти переключатели обычно потребуют нескольких уровней логики (то есть сигнал должен будет проходить через несколько ячеек FPGA). Результатом является плохое быстродействие при использовании большого количества логических ячеек.
Более компактная конструкция возможна с использованием битовой последовательной арифметики. Упрощенная логика в бит-последовательном дизайне позволяют работать с гораздо более высокой тактовой частотой, чем эквивалентная параллельная конструкция бит. Разумеется, для каждой итерации дизайн также должен быть синхронизирован w раз (w - ширина слова данных). Бит-последовательный дизайн состоит из трехбитовых последовательных сумматоров-вычитателей, трех сдвиговых регистров и последовательного постоянного запоминающего устройства (ПЗУ). Каждый регистр сдвига имеет длину, равную ширине слова. Также есть некоторые мультиплексоры для выбора отводов сдвиговых регистров для сдвинутых вправо перекрестных терминов (сдвиг выполняется с использованием бит-задержек в последовательных системах бит). В этой конструкции для каждой из n-итераций требуются w-часы, где w - точность сумматоров. При работе мультиплексоры нагрузки слева открываются для периодов времени w для инициализации регистров x, y и z (эти регистры также могут быть загружены параллельно для инициализации). После загрузки, данные сдвигаются прямо через последовательные сумматоры-вычитатели и возвращаются в левый конец регистра. Каждая итерация требует, чтобы w часы возвращали результат в регистр. В начале каждой итерации машина состояния управления считывает знак регистра y (или z) и соответственно устанавливает элементы управления добавлением/вычитанием. Во время n-й итерации результаты могут считываться с выходов последовательных сумматоров, а следующие данные инициализации сдвигаются в регистры.
Простота последовательного проектирования бит очевидна из рисунка 2. cordic навигация процессор
Рисунок 2 - бит последовательный итерационный CORDIC
Даже в этом случае проводка мультиплексоров с переключением крана может представлять проблемы в некоторых ПЛИС. Тем не менее, межсоединение минимально и логика между регистрами проста. Возможность использования крайних битовых тактовых частот составляет большое количество тактовых циклов, необходимых для завершения каждого поворота.
Рассмотренные раннее процессоры CORDIC являются итеративными, что означает, что процессор должен выполнять итерации в n раз быстрее скорости передачи данных. Процесс итерации может развернуться, так что каждый из n элементов обработки всегда выполняет одну и ту же итерацию. Развернутый CORDIC процессор показан на рисунке 4.
Рисунок 3 - развернутый CORDIC процессор
Развертывание процессора приводит к двум значительным упрощениям. Сначала переключатели имеют фиксированный сдвиг, что означает, что они могут быть реализованы в проводке. Во-вторых, значения поиска для аккумулятора угла распределяются как константы для каждого сумматора в цепочке накопления углов. Эти константы могут быть жестко связаны, и не требуют хранения. Весь процессор CORDIC сводится к массиву взаимосвязанных сумматоров-вычитателей. Необходимость в регистрах также устранена, что делает развернутый процессор строго комбинаторным. Задержка в результирующей схеме будет существенной, но время обработки уменьшается от времени, требуемого итеративной схемой. В большинстве случаев, особенно в ПЛИС, нет смысла использовать такую ??крупную комбинаторную схему. В случае большинства архитектур FPGA уже есть регистры, присутствующие в каждой логической ячейке, поэтому добавление регистров конвейера не требует аппаратных затрат.
Развернутый процессор также может быть преобразован в последовательный бит. Каждый сумматор-вычитатель заменяется последовательным устройством, разделенным w-разрядными регистрами сдвига. Регистры сдвига необходимы для извлечения знака элемента y или z до того, как первые биты достигнут следующих сумматор-вычитателей. Правые сдвинутые поперечные члены берутся из фиксированных отводов в сдвиговых регистрах. Также необходим некоторый метод расширения знака для сдвинутых членов. На рисунке 4 показаны две итерации бит-последовательного процессора CORDIC, реализованные в FPGA Atmel 6005 или NSC Clay31.
Рисунок 4 - две итерации бит-последовательного процессора CORDIC
Обратите внимание, что кросс-термин берется из разных отводов сдвигового регистра на каждой итерации. Этот конкретный процессор используется для вычисления величины вектора. Поскольку это процесс векторного режима, и угол результата не требуется, нет необходимости в аккумуляторе угла. На рисунке 6 показана деталь вычитания сумматора для этой конструкции. Для более высокой производительности требуются параллельные процессоры с несколькими бит или развернутый параллельный конвейер. До недавнего времени FPGA не имели требуемой комбинации логических и маршрутизирующих ресурсов для создания параллельного процессора. Это в основном связано с большим количеством перекрестной маршрутизации, требуемой между регистрами x и y на каждой стадии. Кроме того, производительность уменьшается при увеличении ширины слова из-за разброса по всем сумматорам. Серия Xilinx 4000E имеет достаточную маршрутизацию для реализации достаточно компактного параллельного конвейера CORDIC. Его специальная логика переноса обеспечивает приемлемую производительность для сумматоров.
Алгоритмы CORDIC, представленные в этой статье, хорошо известны в исследовательских и суперкомпьютерных кругах. Тем не менее, мой опыт показывает, что большинство современных аппаратных схем DSP выполняются инженерами, которые практически не имеют аналогов в аппаратно-эффективных алгоритмах DSP. Новые разработчики DSP должны ознакомиться с этими алгоритмами и методами их реализации в ПЛИС, чтобы оставаться конкурентоспособными. Алгоритм CORDIC является мощным инструментом в панели инструментов DSP. В этой статье показано, что инструмент можно использовать на вычислительных машинах на базе ПЛИС, которые являются вероятной основой для систем DSP следующего поколения.
Размещено на Allbest.ru
...Подобные документы
Критерии и основные стратегии планирования процессора. Разработка моделей алгоритмов SPT (Shortest-processing-task-first) и RR (Round-Robin). Сравнительный анализ выбранных алгоритмов при различных условиях и различном количестве обрабатываемых данных.
курсовая работа [179,3 K], добавлен 21.06.2013Создание схем алгоритмов и составление программы на языке Pascal для вычисления значений заданных функций. Сущность и порядок нахождения значения определенного интеграла. Анализ работы подпрограмм. Разработка тестов для проверки правильности алгоритмов.
контрольная работа [831,0 K], добавлен 24.11.2013Комплексное исследование истории развития, основных понятий, области применения и особенностей генетических алгоритмов. Анализ преимуществ генетических алгоритмов. Построение генетического алгоритма, позволяющего находить максимум целочисленной функции.
курсовая работа [27,9 K], добавлен 23.07.2011Появление алгоритмов, связанных с зарождением математики. Последовательность алгоритмов решения задач. Словесная форма их записи. Система обозначений при графическом способе записи алгоритма. Алгоритм, в котором команды выполняются одна за другой.
презентация [262,8 K], добавлен 19.01.2015Изучение особенностей создания алгоритмов вычислительных задач. Визуальное программирование стандартных компонентов среды программирования Delphi. Технология создания компонента Delphi для решения производственной задачи. Выполнение блок-схемы алгоритма.
курсовая работа [638,0 K], добавлен 30.01.2015Характеристика сущности и свойств алгоритма - последовательности действий для решения поставленной задачи. Особенности алгоритмического языка, представляющего собой систему обозначений и правил для единообразной и точной записи алгоритмов и их исполнения.
реферат [35,2 K], добавлен 24.07.2010Основные этапы и принципы решения задач на ЭВМ, порядок постановки задачи и построения алгоритма. Сущность теории алгоритмов, ее основные элементы и взаимосвязь, свойства, методика представления в виде схемы, ее обозначения и использующиеся символы.
лекция [136,3 K], добавлен 11.03.2010Способы организации вычислительного процесса в системах с несколькими процессорами. Разработка программы на основе алгоритмов мультипроцессорных систем при пакетной обработке задач. Вычисление основных показателей эффективности для каждого алгоритма.
курсовая работа [102,3 K], добавлен 21.06.2013Формирование и зарождение научного понятия алгоритма и его трансформация в современное понимание интуитивного алгоритма: изложение традиционных теорий и их дальнейшее уточнение. Исследование логических теорий алгоритмов с философской точки зрения.
книга [315,7 K], добавлен 10.12.2009Описание генетических алгоритмов. Применение генетического алгоритма для решения задачи коммивояжера. Постановка задачи безусловной оптимизации. Изучение распространения генетических алгоритмов на модель с несколькими взаимодействующими популяциями.
дипломная работа [979,1 K], добавлен 30.05.2015Основные особенности эволюционных алгоритмов. Описание алгоритмов селекции, мутации, скрещивания, применяемых для реализации генетических алгоритмов. Вычисление функции приспособленности. Программная реализация. Тестирование и руководство пользователя.
курсовая работа [1,3 M], добавлен 11.03.2014Разложение функций по переменным. Совершенная дизъюнктивная нормальная форма. Разрешимoсть задач в классической теории алгоритмов и их трудоемкость. Память и время как количественная характеристика алгоритма (применительно к машине Тьюринга и ЭВМ).
дипломная работа [59,9 K], добавлен 17.04.2009Реализация алгоритмов Краскала и Прима для построения минимального остовного дерева взвешенного связного неориентированного графа. Анализ трудоемкости алгоритмов, их псевдокоды и тестирование. Применение алгоритма Краскала на практике в работе авиалиний.
курсовая работа [142,0 K], добавлен 25.12.2012Составление и программная реализация в среде Borland Delphi 7.0 алгоритмов итерационного и рекурсивного вариантов решения задачи поиска с возвращением. Исследование асимптотической временной сложности решения в зависимости от количества ячеек на плате.
курсовая работа [57,5 K], добавлен 25.06.2013Анализ алгоритмов, оценка параметров алгоритма (эффективности, сложности, правильности). Комплексный анализ эффективности алгоритма на основе комплексной оценки ресурсов формальной системы. Верификация при коллективной разработке программных систем.
презентация [234,9 K], добавлен 22.10.2013Основные этапы создания алгоритмов, представление в виде программы. Рассмотрение методов решения задач. Метод поэтапных уточнений. Различие между численными и логическими алгоритмами. Реализация цикла со счетчиком. Процесс разработки сложного алгоритма.
презентация [1,3 M], добавлен 22.10.2013Шифрование как метод защиты информации. История развития криптологии. Классификация алгоритмов шифрования, симметричные и асимметричные алгоритмы. Использование инструментов криптографии в Delphi-приложениях. Краткая характеристика среды Delphi 7.
курсовая работа [48,5 K], добавлен 19.12.2009Составление схемы алгоритма и программы для построения графика временной функции, работающей как в машинном, так и в реальном времени. Выбор и обоснование методов расчета. Разработка основной программы. Блок-схемы алгоритмов. Распечатка листинга.
курсовая работа [1,5 M], добавлен 21.11.2013Исследование особенностей разработки линейных алгоритмов и их реализации в среде Delphi. Составление тестов для проверки программы. Характеристика основных элементов интерфейса, компонентов, значения их свойств. Построение графической схемы алгоритма.
лабораторная работа [316,6 K], добавлен 08.11.2012Средства формализации процесса определения спецификаций. Назначение языка (PSL) и анализатора определения задач (PSA). Разработка алгоритма решения задачи, критерии оценки его сложности. Локальный и глобальный уровни повышения эффективности алгоритмов.
контрольная работа [144,9 K], добавлен 26.10.2010