_sda 0 10 октября, 2016 Опубликовано 10 октября, 2016 · Жалоба Коллеги,по алгоритму быстрой свёртки нужно реализовать фильтр КИХ. Написал , симулирую - не работает. В результате потерянного полдня пришёл к такому результату. Если в качестве эксперимента соединить последовательно блоки FFT - IFFT то такая связка работает нормально,на выходе вижу входной сигнал. Но если в разрыв между этими блоками поставить задержку хотя бы на 1 такт - всё валится. Задерживаю группу из 5 сигналов - valid,sop,eop,data_re,data_im. Это как такое может быть? Какая IFFT разница в какой момент будет начинаться блок входных данных? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Копейкин 0 10 октября, 2016 Опубликовано 10 октября, 2016 · Жалоба У Вас пакетный обмен (судя по sop, eop)? Границы пакета не нарушаются? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 10 октября, 2016 Опубликовано 10 октября, 2016 · Жалоба У Вас пакетный обмен (судя по sop, eop)? Границы пакета не нарушаются? У меня потоковый FFT, пакеты идут один за одним. При нарушении формата пакета на выходе в момент source_eop формируется код ошибки source_error отличный от нуля. Его нет. Причём , если создать отдельный проект только с IFFT то ему до лампочки время прихода пакета ,нормально отрабатывает любую дельта функцию. А вот когда в проекте пара FFT-IFFT то начинаются глюки. Похоже это больше вопрос к симулятору а не к корке. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
warrior-2001 0 10 октября, 2016 Опубликовано 10 октября, 2016 · Жалоба Обратная связь учтена? Там вроде лейтенси отличное от нуля стоять должно! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 10 октября, 2016 Опубликовано 10 октября, 2016 · Жалоба Обратная связь учтена? Там вроде лейтенси отличное от нуля стоять должно! Какая обратная связь? Не понял вопроса. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
backend 0 10 октября, 2016 Опубликовано 10 октября, 2016 · Жалоба нормально отрабатывает любую дельта функцию. А последовательность дельт? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 10 октября, 2016 Опубликовано 10 октября, 2016 · Жалоба А последовательность дельт? В смысле суперпозицию нескольких дельт? Специально не смотрел но думаю что если с одной справляется то и с несколькими тоже справится. Поставил рядом 2 IFFT, на один подаю сигналы с FFT, на другой те же сигналы задержанные на такт. Первый работает, второй нет. Пробовал менять длительность ресета,корка чувствительна к нему - мимо. Создал совсем новый проект - те же яйца.Вроде и симулятор нормально работает. Бред. Вот примерно так это выглядит. Верхний сигнал с обычного IFFT, нижний с "задержанного" на такт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 10 октября, 2016 Опубликовано 10 октября, 2016 · Жалоба А вот такая картинка получилась в Модельсиме! За много лет это у меня первая подлянка от Active-HDL. Всем спасибо за участие! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Ivan_ 0 11 октября, 2016 Опубликовано 11 октября, 2016 · Жалоба Переходите в квестасим! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kluwer 0 11 октября, 2016 Опубликовано 11 октября, 2016 · Жалоба Переходите в квестасим! Ага, только Квестасим - это, де-факто, урезанный Моделлсим. Причём, если Моделлсим понимает все команды из do-файлов для Квестасима, то обратной совместимости нет. А ещё Моделлсим на халяву идёт как с веб-версией Квартуса, так и с лицензионными. А на Квестасим мне отдельную лицензию надо. Единственный плюс Квестасима - он работает по-стабильней Моделлсима (падает не так часто). В смысле суперпозицию нескольких дельт? Специально не смотрел но думаю что если с одной справляется то и с несколькими тоже справится. Поставил рядом 2 IFFT, на один подаю сигналы с FFT, на другой те же сигналы задержанные на такт. Первый работает, второй нет. Пробовал менять длительность ресета,корка чувствительна к нему - мимо. Создал совсем новый проект - те же яйца.Вроде и симулятор нормально работает. Бред. Вот примерно так это выглядит. Верхний сигнал с обычного IFFT, нижний с "задержанного" на такт. А не факт, что у вас не правильно. Во-первых, какой уровень моделирования в Моделлсиме задан? Регистровых передач, или физический? А, во-вторых, если у вас поточный режим, то в нём, по-крайней мере у Ксайлинковской БПФ-корки (а у Альтеровской, то же самое, на самом деле), вообще ничего и не будет формироваться по части управляющих сигналов. Первый раз шмякнут - и тишина, ибо смысл-то от них какой? А раз так, то если вы вставляете задержку хотя бы на один такт, то у вас сдвигается спектр. Если частота синусоиды не была исходно кратна частоте дискретизации (а судя по картинкам, так оно и есть), то сдвиг спектра с добавлением слева или справа нуля равноценен переносу частоты на один отсчёт + свёртку (во временной области) с функцией sinc(t). А, коль скоро, у вас эта ситуация повторяется многократно, вот вы и получаете вместо чистенького тона псевдослучайный хаос. Кстати, не забудьте ещё, что при добавлении даже одного нуля (т.е. ваш сдвиг), сигнал, в отличии от исходного, после ОБПФ уже не будет действительным. Так что, прав я, или нет, проверить очень просто - посмотрите мнимый выход ОБПФ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 12 октября, 2016 Опубликовано 12 октября, 2016 · Жалоба вообще ничего и не будет формироваться по части управляющих сигналов. Первый раз шмякнут - и тишина, ибо смысл-то от них какой? А раз так, то если вы вставляете задержку хотя бы на один такт, то у вас сдвигается спектр. Управляющие сигналы не будут формироваться? Извините,уважаемый,но это чушь. Sop и Eop однозначно определяют начало и конец кадра БПФ и если их задержать вместе с данными (хоть на 100 тактов,неважно) никакой сдвижки спектра не будет. Не знаю что вы там увидели на картинках, но частота входного синуса точно попадает в центр одного из бинов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 12 октября, 2016 Опубликовано 12 октября, 2016 · Жалоба Управляющие сигналы не будут формироваться? Извините,уважаемый,но это чушь. Sop и Eop однозначно определяют начало и конец кадра БПФ и если их задержать вместе с данными (хоть на 100 тактов,неважно) никакой сдвижки спектра не будет. Я так понял, что речь идет о том, что задежки по данным и управляющим сигналам будут разные. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 12 октября, 2016 Опубликовано 12 октября, 2016 · Жалоба Я так понял, что речь идет о том, что задежки по данным и управляющим сигналам будут разные. С какого перепуга? if (RISING_EDGE(iclk_2x)) then reg(0) <= fft1_val&fft1_sop&fft1_eop&fft1_re&fft1_im; reg(19 downto 1) <= reg(18 downto 0); end if; И сигналы на второй IFFT я подаю с reg(0). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 12 октября, 2016 Опубликовано 12 октября, 2016 · Жалоба И сигналы на второй IFFT я подаю с reg(0). Вы не поняли - я описал теоретическую ситуацию, что такое возможно - разработчик, допустим, задержал данные дополнительно на один такт из-за того, что у него временные ограничения не сошлись, а управляющие сигналы забыл. Или моделирование идет на модели после синтеза - управляющие сигналы выставились, а данные развалились (ну не выполнились временные ограничения). К Вам это, понятное дело, отношения не имеет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 12 октября, 2016 Опубликовано 12 октября, 2016 · Жалоба Ясно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться