Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Нужна помощь с IP блоком Cordic v6 от xilinx
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
YaGo
Здравствуйте! Нужна помощь с ядром Cordic v6. Использую Vivado 2017.1. Сделал тестовый проект, в котором одно это ядро. Оно используется для вычисления arctan.
Ядро пробовал настраивать тремя способами:

1) ядро не зависит от clk. Режим без конвейера(no pipelining). Триггеров нет






Результат post-implementation timing simulation для imag = 1, real = 1:





как видно, результат вычислений стал верным через 25,385 нс, но tvalid "поднялся и опустился" гораздо раньше.


2)ядро зависит от clk. Режим без конвейера(no pipelining). частота clk равна 200 МГц. Задержка выхода(latency) равна 3 такта







create_clock -period 5.000 -name clk -waveform {0.000 2.500} [get_ports clk]


При такой конфигурации ядра, проект перестает собираться. [Timing 38-282] The design failed to meet the timing requirements. Please see the timing summary report for details on the timing violations.


3)ядро зависит от clk. Режим с конвейером(pipelining mode - optimal). частота clk равна 200 МГц. Задержка выхода(latency) равна 22 такта







create_clock -period 5.000 -name clk -waveform {0.000 2.500} [get_ports clk]


При такой конфигурации ядра, проект собираться.

Результат post-implementation timing simulation для imag = 1, real = 1:



как видно, результат вычислений стал верным через 22 такта, и сигнал tvalid "поднялся и опустился" синхронно.


Подскажите, пожалуйста, что я делаю не так. Мне нужна конфигурация 2, т.е. задержка выхода 3 такта

Может у кого-нибудь есть модуль для вычисления arctan, лучше чем у xilinx? Задержка выхода должна быть минимальной.


dvladim
Т.е. фактически вам нужно получить результат за 3 такта на частоте 200 МГц - те. за 15 нс.
Однако в 1-м случае результат получается минимум за 25.3 нс. И как вы собираетесь получить его быстрее?
Конвейеризация - это способ увеличить пропускную способность, а не снизить задержку.

Теперь по результатам ваших вариантов:
1-й - задержка 25.3 нс (и это видимо минимальная), а сигнал valid в этом случае значения не имеет.
2-й - задержка 3 такта и это естественно не укладывается во временные ограничения.
3-й - задержка 22 такта и во временные ограничения вполне укладывается.
Чтобы оценить минимальную задержку, поставьте по 1-му варианту регистры по входу и выходу и посмотрите минимальную частоту.
Если она не устраивает, меняйте схему: переводите вычисления на таблицы, снижайте разрядность и т.п. Конвейер вам задержку не снизит.
YaGo
Интересные наблюдения, спасибо.

Мне нужно получить за минимальное количество тактов. В данном ядре это 3 такта. В другом может быть иначе

комментарии по Вашим пунктам:

1) как это сигнал valid не важен? как мне определить правильное значение?
2) почему "естественно"? данный режим зачем то же сделали. Не я вводил число 3, оно само так посчиталось
3) 22 такта это самый медленный режим для данного ядра
_Ivan_33
По-моему это нереально. Кордик алгоритм итерационный и соответственно пройдет с десяток или два стадий для того чтобы вычислить результат
Если бы это был бы какой-нибудь поворот вектора, что тоже решается кордиком, то можно было бы сделать его умножением и результат был бы выдан быстрее.
Если попробовать сделать на таблицах, но боюсь памяти не хватит или частота пострадает
Хотя таблицы тоже врятли, нужно деление еще...
Maverick
посмотрите это
dvladim
Цитата(YaGo @ Dec 17 2017, 23:05) *
1) как это сигнал valid не важен? как мне определить правильное значение?
2) почему "естественно"? данный режим зачем то же сделали. Не я вводил число 3, оно само так посчиталось
3) 22 такта это самый медленный режим для данного ядра

1) так как всё делается за 1 такт, то valid каждый такт. Т.е. корректный результат на каждом тактк. Т.е. valid не важен. Рассматривайте свою схему как начинающуюся и заканчивающуюся регистрами.
2) "естественно" потому что 15 нс < 25 нс. Другого смысла я не вкладывал.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.