Перейти к содержанию
    

Вопрос по IP Core FFT

Коллеги, мне тут понадобилось применить в проекте FFT на 512 точек и столкнулся с непонятным поведением выхода корки(см. видео). Сигнал source_valid ведёт себя совершенно неадекватно - длительность непредсказуема и появляется совсем не в тот момент когда должен. Прошу помощи коллективного разума, я уже не знаю что и думать. Режим работы - buffered burst. В этом же проекте рядом стоит FFT на 1024 точки и работает как танк. 512 точек какой то особый размер?

Video_2017_06_20_163225.wmv

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чиста для определённости.... Ольтэра? (Знакомая мне корка хилинха на ахи).

 

Впрочем, по названиям сигналов можно понять что и тут смысл тот же.

 

Тогда имею сказать следующее::

фраза """длительность непредсказуема и появляется совсем не в тот момент когда должен"""

некорректна В ПРИНЦЫПЕ по отношению к таким шынам.

Да ничё она не должна. Код, обслуживающий корку, не имеет права предполагать, как она будет выставлять готовность входа и выхода.

Она может это делать на весь пакет сразу или по кусочкам - как ей нравится.

И это действительно может неочевидно зависеть от разных факторов (например соотношения длин заюзаных коркой буферов и длины бпф).

Так что это не критерий.

Вот если даёт неправильный бпф, тогда другое дело.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да ничё она не должна. Код, обслуживающий корку, не имеет права предполагать, как она будет выставлять готовность входа и выхода.

Спасибо! Только я в своё время поработал с разными фурьешками и ни разу не видел того о чём Вы сказали. На худой конец есть же ug_fft с картинками...

Но на всякий случай завтра проверю эту гипотезу.

Вот если даёт неправильный бпф, тогда другое дело.

С этого то всё и началось. На выходе сигнал очень сильно зашумлён, по динамическому диапазону есть зона примерно децибел 30 в которой изменение уровня входного сигнала не приводит к изменению уровня выходного :wacko:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проверил, Ваше предположение не подтвердилось. Обратите внимание на дистанцию между sop и eop, маловато будет для 512 точек. И ещё обратите внимание на положение eop относительно valid, он не вложен.

post-18832-1498029239_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сделайте скрин настроек в визарде. И как подключили напишите. Пробовал разные размеры, работает как надо. Проверьте что на входе fftpts_in у вас, может там неправильно задан размер блока?

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сделайте скрин настроек в визарде. И как подключили напишите. Пробовал разные размеры, работает как надо. Проверьте что на входе fftpts_in у вас, может там неправильно задан размер блока?

У меня режим работы - buffered burst, порта fftpts_in нет.

c3 : component fft512 port map (
        clk              => iclk200,          --    clk.clk
        reset_n          => reset_n,      --    rst.reset_n
        sink_valid       => out_win_val,   --   sink.sink_valid
        sink_ready       => sink_ready,   --       .sink_ready
        sink_error       => "00",   --       .sink_error
        sink_sop         => out_win_sop,     --       .sink_sop
        sink_eop         => out_win_eop,     --       .sink_eop
        sink_real        => out_win_data_re24,    --       .sink_real
        sink_imag        => out_win_data_im24,    --       .sink_imag
        inverse          => inverse,      --       .inverse
        source_valid     => source_valid, -- source.source_valid
        source_ready     => hi, --       .source_ready
        source_error     => source_error, --       .source_error
        source_sop       => open,   --       .source_sop
        source_eop       => open,   --       .source_eop
        source_real      => source_real24,  --       .source_real
        source_imag      => source_imag24,  --       .source_imag
        source_exp       => source_exp    --       .source_exp
);

post-18832-1498032571_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не заметил про buffered burst, в таком режиме не тестил... Может на вход неправильный размер пакета подаете? В моделировании работает нормально?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не заметил про buffered burst, в таком режиме не тестил... Может на вход неправильный размер пакета подаете? В моделировании работает нормально?

В моделировании не пробовал, 16-й квартус не генерит файл *.vho при генерации корки. Размер пакета на входе правильный, проверяю регулярно.

Сделал 256 точек - результат на видео. Я просто в шоке...

Video_2017_06_21_122022.wmv

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Маленькое замечание: лучше сразу писать разработчика ядра / целевую плис. Вот по Xilinx как раз неделю назад делал, мог бы подсказать по FFT ядру. Ну а тут вероятно альтера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Маленькое замечание: лучше сразу писать разработчика ядра / целевую плис. Вот по Xilinx как раз неделю назад делал, мог бы подсказать по FFT ядру. Ну а тут вероятно альтера.

Принимается. Альтера, Аррия-5, Q16.0

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...