По мере роста сложности электронных устройств и тенденции к миниатюризации, а также к повышению скорости цифровой обработки сигналов, создание приборов на базе интегральных микросхем, таких как логические элементы И, ИЛИ, НЕ, регистры, дешифраторы, мультиплексоры и др., затруднилось, т. к. это очень дорого. Решением проблемы стало развитие программируемых интегральных логических схем (ПЛИС), позволяющих самостоятельно и индивидуально создавать архитектуру из базовых логических элементов и менять ее.
Программирование ПЛИС является довольно трудоемким процессом, поэтому каким бы проектом ни занимался специалист, всегда полезно произвести его моделирование (симуляцию). Симуляция — это программная проверка проекта, позволяющая в ограниченных условиях оценить и отследить поведенческие параметры модуля, оценить корректность выполнения работы благодаря возможности просмотра временных диаграмм сигналов. В отличие от реального железа модель позволяет просмотреть практически сколь угодно много сигналов и на сколь угодно длинном временном промежутке. Для создания модели существует множество программных инструментов, одним из которых является средство разработки Vivado by Xilinx.
Данная работа посвящена анализу реализации методов получения синуса в ПЛИС.
ИСПОЛЬЗУЕМЫЕ ПРОГРАММНЫЕ ФУНКЦИИ
В ходе выполнения исследования используется ПО Vivado by Xilinx, а также Visual Studio.
Рассмотрим способы вычисления синуса в ПЛИС и исследуем оптимальный с точки зрения практической реализации.
1. Вариации получения синуса в ПЛИС
В ходе выполнения некоторых алгоритмов возникает необходимость получить функцию синуса (косинуса), что затруднительно при реализации данного метода в ПЛИС.
Рассмотрим существующие методы восстановления синуса по входным данным:
Хранение синуса в памяти
Способ заключается в записи и хранении всех значений синуса в ячейках памяти. С точки зрения программирования и математики является самым простым. Проблема возникает при реализации в ПЛИС. Так как нам необходимо знать 220(1 048 576) значений синуса (косинуса), каждое из которых представлено 14 битами, требуется выделить 220 * 14 = 14 680 064 бита памяти, или около 2 МБ памяти. В этом случае мы задействуем значительный ресурс памяти кристалла, что делает этот способ получения синуса физически нереализуемым по причине невозможности получения удовлетворительной раскладки кристалла.