-
Постов
2 052 -
Зарегистрирован
-
Посещение
Весь контент Krys
-
БПФ
Krys ответил dima_spb тема в Алгоритмы ЦОС (DSP)
Учитывая, что сигнал чисто вещественный, то спектр в отрицательной области будет комплексно-сопряжённым, следовательно при использовании полноценного БПФ для комплексных входных сигналов половина отсчётов будет избыточна. Избыточны и ресурсы на её расчёт. Для расчёта спектра чисто вещественных сигналов используются особые модификации БПФ. Если не путаю DCT (дискретное косинус-преобразование). Короче гуглить надо, но смысл есть. Поискал у себя - чего-то с ходу не нашёл. Кажется припоминаю, что об этом всём должно быть во многих основополагающих книжках того же Лайноса, Рабинера с Голдом, Оппенгейма и т.п. Теория то давно придумана и задокументирована в букварях, велосипед изобретать не надо. Просто почитать самые канонические буквари. Добавлю. При реализации на ПЛИС иногда удобнее пользоваться формулой с тремя умножениями и 5 сложениями, т.к. DSP-блоков меньше съедается. Сама формула есть в датащите на дсп-блок от спартана6. -
да нет, у меня не частотный детектор. У меня просто повышение тактовой
-
Но возникнет ошибочка (еле заметная правда). Сдвиг даёт изменение на 2^N, а максимальный множитель может быть только 2^N - 1. Т.е. ошибка будет на один шаг квантования. В системах с обратными связями (типа адаптивные) это приведёт к расходимости алгоритма.
-
Чистая, ультимэйт, но взломанная. Не сборка новомодная. Главное на ней раньше работало. Потом некоторое время не симулил, затем запустил - и на тебе. Больше не удалось уговорить.
-
Здравствуйте. Столкнулся с нестыковками и нелогичностями отображения некоторых примитивов: потерялся инвертор, который видно на Planahead Schematic, но не видно на Planahead Device View. Имеется такой кусок кода: // pipeline register inside of adder block (* use_dsp48 = "yes" *) reg signed [sUM_DATA_BW-1 : 0] din_i_pp_int, din_q_pp_int; reg din_valid_pp; // register to time align with internal data pipeline above // result of adder (* use_dsp48 = "yes" *) reg signed [sUM_DATA_BW-1 : 0] sum_i_acc, sum_q_acc; always @(posedge clk) begin din_i_pp_int <= {{DBF_BW_INCR{din_i[DIN_BW-1]}}, din_i}; din_q_pp_int <= {{DBF_BW_INCR{din_q[DIN_BW-1]}}, din_q}; din_valid_pp <= din_axis_tvalid; end // accumulator with reset always @(posedge clk) begin if(!din_valid_pp) begin sum_i_acc <= 0; sum_q_acc <= 0; end else begin sum_i_acc <= sum_i_acc + din_i_pp_int; sum_q_acc <= sum_q_acc + din_q_pp_int; end end Мне стало интересно, догадается ли среда сделать красиво сброс выходного регистра DSP-блока. Я посмотрел после PAR результат в Planahead, отобразив схему цепи RSTP (куда в случае красивой реализации среда должна была подать мой сброс): Да, среда догадалась, это хорошо. Но затем мне стало интересно, что это мы видим за инвертор и чисто физически на чём он реализован. Т.е. я предполагал, что инвертор может быть реализован либо на LUT, либо как отдельный инвертирующий выход триггера-источника сигнала. Но ни то, ни другое я на данной схеме выше не увидел, а увидел просто инвертор в чистом виде. Я захотел его увидеть на Device View, что это за зверь, что это за аппаратный примитив. И не увидел: На этом рисунке белым выделена та же цепь din_valid_pp_inv с выхода инвертора. Т.е. видно, что источника сигнала не видно, т.е. не видно, где же этот инвертор. Я пробовал на схеме выделять и сам инвертор, на Device View делал приблизить выделенное - ничего не происходило. Тогда я подключил тяжёлую артиллерию (FPGA Editor). Посмотрел список цепей, цепь din_valid_pp_inv там вообще отсутствует, есть только цепь до инвертора: din_valid_pp. Решил отобразить её на экране: Видно, что эта цепь заходит сразу в оба DSP напрямую. А где же инвертор? Коллега подсказал открыть внутренности DSP-блока. И что же мы видим? Этот инвертор там внутри и красуется: Вот и получается нестыковочка: Planahead показывает, что существует цепь din_valid_pp_inv, она снаружи DSP-блока, существует отдельный инвертор, снаружи DSP-блока. А по факту и то, и то - это уже внутри DSP-блока. При том в документации на DSP-блок нет никаких упоминаний про этот инвертор (пройдитесь поиском по RSTP). Кто может объяснить: есть ли в таком расхождении какая-то умышленная логика, мол, так правильнее? Или это банальное раздолбайство Xilinx?
-
Ой, нецелое число раз - это уже совсем высший пилотаж ))
-
Пока мои старания остановились на том, что я поставил чистый 9.3 из последней версии, включающей SP1, но SP1 не ставил. Крякнул прилагаемым к этому дистрибутиву кряком (их там 2), в котором надо подменить кучу файлов: avhdl.exe ccviewer.exe project.dll rmcl.dll rmcldiag.dll scripter.dll tbpviewer.exe tcviewer.exe VSIMSA.dll При этом ничего не крашится, даже на стартовом лого пишет, что это 9.3SP1. Но SP1 я не ставил. В О программе тоже пишет, что это 9.3SP1.
-
Вот это я имел в виду. Если конкретно по картинке из первого поста, то допустим полосовой сигнал занимает половину всей возможной полосы, т.е. четверть частоты дискретизации. Так вот хорошо нелинейный интерполятор даст интермодуляционные компоненты, залезшие прямо в эту полосу полосового сигнала. А линейный интерполятор даст компоненты, лежащие в других зонах Найквиста (зоны до интерполяции), но не в полосе полосового сигнала. Тут я либо что-то недопонял, либо несогласен )) Согласно моего абзаца выше нелинейные искажения могут дать интермодуляции прямо в полосе полосового сигнала.
-
Да завал - это линейные искажения, я их даже за искажения не считаю )) Я имел в виду под портить наличие интермодуляционных компонентов прямо в полосе сигнала. Т.е. берём для чистоты эксперимента чистую синусоиду, а лучше несколько рядом, пропускаем их через хорошо нелинейный интерполятор, получаем кучу лишних палок прямо внутри полосы сигнала (не говоря уж о палках за полосой). При этом при линейной интерполяции лишних палок нет внутри полосы сигнала, только за полосой. Большое спасибо, что разъясняете.
-
Да уже 10 раз переустановил, результат один. Забыл сказать: винда 7 ултимате 64 бита (крякнутая). Сейчас ещё попробовал предыдущую версию поставить, без SP1. Первый запуск делается нормально. Но после окончания мастеров по созданию чистого проекта с нуля - опять крашится. И так постоянно. Понятно, что дело в моей винде в чём-то. Но в чём?... Не хочется всю винду с нуля переустанавливать только из-за этого альдека...
-
Спасибо, надо будет попробовать на досуге, сейчас времени маловато. Это же мой личный интерес, не курсовая и не основное задание по работе )) К стати: при линейной интерполяции в полосе полезного сигнала вообще нет нелинейных искажений, правильно? Т.е. линейная интерполяция ничего в полосе не портит, только за полосой. А вот трапеция видимо наделает компонентов внутри полосы, их оттуда потом ничем не уберёшь, разве что заранее внести соответствующие предыскажения в генерируемый сигнал по типу DPD, это возможно. Да это просто удобное отображение. Можете их заменить просто обычным плотом, ничего не поменяется.
-
Aldec Active HDL крашится при запуске после показа стартового лого. Версия 9.3SP1, качано с закромов, крякано прилагаемым лекарством. Т.е. сразу после установки не могу запустить. Никто не сталкивался? Что можно покопать?
-
Это то я понимал с самого начала, поэтому отмёл эту идею сразу, даже без попыток отмоделировать. Это ув. ViKo предлагал добавлять шум ко входу и выходу. Спасибо, вот это мысль в нужном направлении. То, что сигнал будет искажён - нестрашно, он и так даже от линейной интерполяции нехило искажается )) Это тоже понятно. Мне просто понравился общий подход: чтобы палка не мешала, её надо размазать. Общая мощность ошибки увеличится, но её плотность будет мала, SFDR будет лучше.
-
отличие CIC от FIR
Krys ответил shf_05 тема в Алгоритмы ЦОС (DSP)
Вы что, преподаватель? )) Уже в 2х темах спрашиваете ))) - вы что, больной??? - нет... а вы что, доктор? (с) -
Всем спасибо за подсказки. ЗЫ: это не курсовая и не дипломная, стар я для них уже ))) так... желание изобрести велосипед с минимумом ресурсов и с приемлемыми характеристиками.
-
Спасибо, лазил там с самого начала, но ничего не нашёл. Проблема усложняется ещё и тем, что у меня разные графики выведены как plot(MX, MY), где MX, MY - это матрицы, в которых отдельные кривые расположены по столбцам.
-
Дайте пожалуйста ссылки на описанный Вами простой способ параболической интерполяции с простыми коэффициентами. И что-нибудь про оптимизированные half-band фильтры, которые на распределённой арифметике можно сделать. Заранее спасибо.
-
отличие CIC от FIR
Krys ответил shf_05 тема в Алгоритмы ЦОС (DSP)
Понял, спасибо. Значит по задержке разницы быть не должно. -
Ну по идее должно быть лучше, так что буду иметь в виду и такой способ. Не проблема, в прикреплении. А то действительно щас особо некогда всё подряд пробовать, извиняюсь. Если у Вас есть интерес, желание и время, то спасибо за участие.lin_interp_test.rar
-
Ну раз уж фильтр ставить, то зачем же ещё шумов добавлять ))) Тогда уж не нужны ни шумы, ни линейная интерполяция
-
Полоса либо половина возможной, либо четверть, но не меньше. Спасибо, убедили. Пожалуй, способ сгодится. ------------ Ещё думал какой-нибудь вариант, на основе того, который выше предлагал Maverick, когда ищем изменение знака производной, считаем эти места макушками синусоид, подменяем их табличными значениями. А между макушками делаем как и раньше линейную интерполяцию. Это какая-то каша из топора получается. Фильтр нельзя из-за отсутствия ресурса. Но если добавить шум, а потом пропустить через фильтр - то так можно ))) Ресурс то на фильтр не возьмётся.
-
Ну я где-то выше уже расписывал. Типа на линейную интерполяцию не требуется умножитель вообще, только аккумулятор (сумматор) с постоянным инкрементом. А на несколько каскадов CIC требуются много сумматоров. Затем будет требоваться корректирующий КИХ-фильтр на умножителях. да зачем?... и так же понятно, что просто горизонтальная шумовая полка поднимется у всего спектра. Через какой фильтр? Дак это ж на графике написано, что относительная ))
-
ну это не так просто. Я надеялся, что есть какие-то команды прям в окне типа bring to front / send to back. Т.е. гуишные, для простого смертного юзера, без шаманства с указателями.
-
Вот один в один моя тема, но ответа толком не было: http://matlab.exponenta.ru/forum/viewtopic...343&p=73629 Хотелось бы найти элементы управления (галочки, пункты меню), с помощью которых кликаниями мыши можно поменять порядок кривых прямо в окошке уже построенного графика.
-
отличие CIC от FIR
Krys ответил shf_05 тема в Алгоритмы ЦОС (DSP)
С единичными - это же скользящее среднее?