Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Цифровой фильтр на ПЛИС
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Zamir
Здравствуйте все!
Такой вопрос. Есть отладочная плата для плис циклон3 и примочка к нему-плата с АЦП и ЦАП (Снимок5). Хочу разобраться с цифровыми фильтрами. В матлабе создали фильтр IIR. настроил как показано на Снимке2. Из этого файла генерим VHDL файл. Компилируем его в квартусе. Далее на вход АЦП подаем синусоидальный сигнал с частотой 600КГц. Оцифрованный сигнал подаем на вход фильтра. Выход фильтра соединяем на вход ЦАП.(Снимок1). На выходе ЦАП получаем что то непонятное... (снимок4). При увеличении частоты амплитуда сигнала на выходе ЦАП не уменьшается т.е. фильтр не работает. Что делаю не так?
eugen_pcad_ru
Как много рисунков!:)
Как вариант:
1 может не учитываете знаковое/беззнаковое представление чисел?
2 Фильтр целочисленный? Ошибки округления исключены?

P.S.: Может для начала попробовать реализовать FIR?
Lmx2315
QUOTE (eugen_pcad_ru @ Apr 2 2013, 12:20) *
P.S.: Может для начала попробовать реализовать FIR?

..для начала надо замкнуть выход АЦП и вход ЦАП в плис и убедиться что на выходе то что измеряем.
т.е. 600 КГц синус .

з.ы.
Мне одному кажется что на вашем генераторе какое-то странное представление заданой частоты?
.. мне вот кажется что там 600 Мгц.
ViKo
bb-offtopic.gif
Удивительно, что на осциллографе ручка Time/div заляпана так же страшно, как и на моем MSO6102A, а другие, как и на моем - чистые! Феномен.
Zamir
Цитата(eugen_pcad_ru @ Apr 2 2013, 12:20) *
Как много рисунков!:)
Как вариант:
1 может не учитываете знаковое/беззнаковое представление чисел?
2 Фильтр целочисленный? Ошибки округления исключены?

P.S.: Может для начала попробовать реализовать FIR?


Рисунков не жалко ))
Дело в том что я не очень хорошо разбираюсь в цифровой обработке сигналов. Хочу разобраться. На примерах легче разбираться и поэтому хочу какой нибудь цифровой фильтр реализовать. А где учитываются знаковое/беззнаковое представление чисел? В матлабе? Где можно настроить целочисленность фильтра и оибки округления? тоже в матлабе? Я и FIR пытался реализовать. с ней то же самое.... каша на выходе ЦАП...

Цитата(Lmx2315 @ Apr 2 2013, 12:36) *
..для начала надо замкнуть выход АЦП и вход ЦАП в плис и убедиться что на выходе то что измеряем.
т.е. 600 КГц синус .

з.ы.
Мне одному кажется что на вашем генераторе какое-то странное представление заданой частоты?
.. мне вот кажется что там 600 Мгц.


Это все я сделал. Замыкал АЦП на ЦАП. Все работает. Все красиво. Вам просто кажется. Там действительно 600КГц.
ViKo
На осциллографе пишет частоту 200 kHz. Если она так трясется, может, PLL в FPGA не работает?
Zamir
Цитата(ViKo @ Apr 2 2013, 12:54) *
На осциллографе пишет частоту 200 kHz. Если она так трясется, может, PLL в FPGA не работает?

На осциллографе показания частоты меняются из за того что сигнал дрожит. если включить усреднение на осциллографе то частоту он покажет 600 КГц. PLL тоже работает. Я все проверял без фильтра.
litv
VHDL надо не только скомпилировать в ПЛИС .
Проект на VHDL надо еще и промоделировать . Подать разные синусы , убедиться что подавление заработало.
А не сразу к АЦП и ЦАП ....
Zamir
Цитата(litv @ Apr 2 2013, 13:01) *
VHDL надо не только скомпилировать в ПЛИС .
Проект на VHDL надо еще и промоделировать . Подать разные синусы , убедиться что подавление заработало.
А не сразу к АЦП и ЦАП ....

Так это все ведь происходит в матлаб. Матлаб создает VHDL файл для фильтра с указанными настройками. То есть этот VHDL файл фильтра должен работать точно так как показал матлаб. Если в действительности полученный фильтр ведет себя не так как показывает матлаб, тогда зачем вообще фильтр генерить в матлаб? Или я не прав?
Lmx2315
QUOTE (Zamir @ Apr 2 2013, 12:12) *
В матлабе создали фильтр IIR. настроил как показано на Снимке2. Из этого файла генерим VHDL файл. Компилируем его в квартусе.

..а вот в этом месте поподробнее, с какими параметрами синтезируете фильтр в матлабе и с какими синтезирует VHDL?
Вы можете сам фильтр выложить?

Если внутри IIR обрезать разрядность, то он может возбудиться.
Zamir
Цитата(Lmx2315 @ Apr 2 2013, 13:08) *
..а вот в этом месте поподробнее, с какими параметрами синтезируете фильтр в матлабе и с какими синтезирует VHDL?
Вы можете сам фильтр выложить?

Если внутри IIR обрезать разрядность, то он может возбудиться.

вот файл VHDL фильтра. в тхт скопировал
litv
Если бы для разработки ЦФ нужно было нажать только кнопку в Матлабе.....

Нужно ВСЁ.
Не видел еще человека который проектировал ПЛИС и не умел моделировать VHDL.

У Вас блин ошибки могут быть в тактовых импульсах.... Вы их видели ???, или только кнопку нажали, причем нажали в матлабе
а требуете от плис. По каким фронтам защелкивается данные АЦП или ЦАП, в доп коде они или беззнаковом????

Уметь самому писать и моделировать VHDL.
Выбирать разрядность с фиксированной точкой.
Смотреть сигналы внутри ПЛИС с signal tap и....

Работа с АЦП и ЦАП - море нюансов .
Начните с моделирования , оно проще.



Zamir
Цитата(litv @ Apr 2 2013, 13:52) *
Если бы для разработки ЦФ нужно было нажать только кнопку в Матлабе.....

Нужно ВСЁ.
Не видел еще человека который проектировал ПЛИС и не умел моделировать VHDL.

У Вас блин ошибки могут быть в тактовых импульсах.... Вы их видели ???, или только кнопку нажали, причем нажали в матлабе
а требуете от плис. По каким фронтам защелкивается данные АЦП или ЦАП, в доп коде они или беззнаковом????

Уметь самому писать и моделировать VHDL.
Выбирать разрядность с фиксированной точкой.
Смотреть сигналы внутри ПЛИС с signal tap и....

Работа с АЦП и ЦАП - море нюансов .
Начните с моделирования , оно проще.


моделирование оно может быть и проще... но если результаты моделирования не соответствуют действительности, то на фига вообще такое моделирование?
Lmx2315
QUOTE (Zamir @ Apr 2 2013, 14:25) *
моделирование оно может быть и проще... но если результаты моделирования не соответствуют действительности, то на фига вообще такое моделирование?

..речь шла о моделировании в среде приближенной к ПЛИС - моделсим или ActiveHDl, к примеру.
iosifk
Цитата(Zamir @ Apr 2 2013, 13:06) *
Так это все ведь происходит в матлаб. Матлаб создает VHDL файл для фильтра с указанными настройками. То есть этот VHDL файл фильтра должен работать точно так как показал матлаб. Если в действительности полученный фильтр ведет себя не так как показывает матлаб, тогда зачем вообще фильтр генерить в матлаб? Или я не прав?


Вот, это тот случай, когда монета падает на ребро... Но случается это очень редко... Потому что обычно монета просто зависает в воздухе и вообще не хочет падать... Да. А если серьезно, то я знаю этих мужиков, которые Вам здесь отвечают, уже мнго лет знаю... Они Вам просто голову морочают всякими симуляциями, отладками по этапам, констрейнами и установками компилятора... Все это от лукавого! Должен все делать Матлаб!!! Но все они знают, что там есть специальная галочка, которую нужно убрать. Называется "защита от чайника". Она специально сделана для того, чтобы защитить разработчиков от чайников, которые не хотят носом землю рыть и которые считают, что Матлаб сам все должен сделать. Беда только в том, что мужики эти Вам не созниются, и придется Вам эту галочку самому искать... И я не могу о ней Вам рассказать, потому как это против моих правил. Ибо подставил меня на работе один такой же шустрый. Вот, с тех пор я зарок дал никому об этой галочке не говорить....
А без этого все равно ничего не получится... И придется либо землю носом рыть, либо бросить, либо стать начальником...
Вот такие дела...
decom
Попробуйте немного изменить параметры фильтра и еще раз сгенерить код в Матлаб.
Возможно Вам удастся найти такую комбинацию параметров которая нормально запрограммирует ПЛИС.
eugen_pcad_ru
Matlab видел только на семинаре, извинитеsm.gif
Но там есть пара кнопок: типа перевода алгоритма в целочисленный код. Только чтобы там все заработало, надо предварительно погонять на моделях матлаба и убедиться, что переполнения в этом случае не возникает.
Да, вот Вам совет: отключите АЦП, сделайте синусоиду внутри ПЛИС и подайте на ЦАП. Избавившись от одной неизвестной величины, проще настраивать дальше. Убедитесь что сигнал на выходе синус. В общем поработайте пока тольно с ЦАП.
Удачи!

P.S.: Думаю что ошибка всё-таки в разных представлениях данных. Посмотрите в каком коде работают ЦАП и АЦП: что соответствует кодам: все нули, все единицы и т.п.
Дмитрий_Б
Попробуйте подать на вход сигнал с очень маленькой частотой. Посмотрите как выглядит выходной сигнал. Попробуйте уменьшить амплитуду. Посмотрите что будет.
Raven
Все, что опытные товарищи здесь посоветовали, конечно, правильно. Но начинающему и пытающемуся разобраться с нуля от этого пользы мало. Вот если бы пройти эти шаги под руководством - тогда, может, толк и будет.

Э-э-х, надо долги отдавать sm.gif Если Вы не против, и если еще энтузиазм не остыл - давайте разбираться вместе. Пол-часа времени в день могу обещать.

Если согласны, для начала выложите проект Quartus'a как он у Вас есть, целиком (само собой, без "тяжелых" результатов синтеза: .db папки, .pof-, .sof-файлов и т.п.). Посмотрим, может уже на этом этапе что-то интересное найдется.
VladimirB
Цитата(iosifk @ Apr 2 2013, 15:10) *
.. Все это от лукавого! Должен все делать Матлаб!!! Но все они знают, что там есть специальная галочка, которую нужно убрать...

+100500
Помнится когда я CIC фильтр в Матлабе генерил в VHDL - там тоже волшебная галочка была, только её поставить надо было, чтобы всё работало.
И чего-то я не припомню, чтобы Матлаб сам констреинты задавал. Может новая версия какая-то вышла?



З.Ы. Смущает меня, что всё как-то очень просто у топикстартера. Два блочка в Альтеровском Кактусе кинул на схематик. Тут же к ним физические ноги приписал и нажал на кнопку синтезировать.
Ему бы с Ксайлинксом поработать чуток - там не забалуешьsm.gif.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.