Здравствуйте! Нужна помощь с ядром 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? Задержка выхода должна быть минимальной.