реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Не получается реализовать КИХ фильтр на VHDL
Georg.A
сообщение Jun 25 2013, 13:57
Сообщение #1





Группа: Участник
Сообщений: 11
Регистрация: 4-10-10
Пользователь №: 59 910



Доброго времени суток всем!
Пытаюсь сделать простой КИХ фильтр на ПЛИС, да все никак не выходит каменный цветок.
Для начала с помощью fdatool`a создал фильтр с необходимой АЧХ. Конкретно полосовой фильтр Баттерворта 4-го порядка. Сгенерил структуру (прикреплена).
Отквантизировал коэффициенты для 18 разрядной знаковой сетки.
Отвел два разряда для целой части и 15 для дробной. Масштабирующий коэффициент взял соответственно 2^15 = 32768.
было:
a2 -1,807830810546870
a3 0,999114990234375
gain 0,000640869140625

стало:
a2 59239
a3 32739
gain 21
VHDL код прикреплен в файле.
При прошивке в плис на выходе фильтра какая-то каша, хотя должна по идее быть гармоника.
Кто знает подскажите пожалуйста, может что-то не так делаю?

Сообщение отредактировал Georg.A - Jun 25 2013, 13:58
Эскизы прикрепленных изображений
Прикрепленное изображение
 

Прикрепленные файлы
Прикрепленный файл  bandpassfilter1.vhd ( 2.65 килобайт ) Кол-во скачиваний: 15
 
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Jun 26 2013, 04:27
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Вы до прошивки в симуляторе посмотрите, как у вас это работает.
Go to the top of the page
 
+Quote Post
Georg.A
сообщение Jun 26 2013, 05:51
Сообщение #3





Группа: Участник
Сообщений: 11
Регистрация: 4-10-10
Пользователь №: 59 910



andrew_b в симуляторе пробовал проверить, но отлаживать фильтр глядя на цифровые коды мне показалось нереальным (может я не прав?). Пользуюсь Isim от Xilinx, не нашел как в нем отображать сигналы в аналоговом виде, ни в документации, ни в самоой проге. Где-то встречалось, что в каких-то сторонних симуляторах есть такая опция. Может Вы знаете в каких и посоветуете?
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Jun 26 2013, 07:10
Сообщение #4


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



Цитата(Georg.A @ Jun 26 2013, 06:51) *
andrew_b в симуляторе пробовал проверить, но отлаживать фильтр глядя на цифровые коды мне показалось нереальным (может я не прав?). Пользуюсь Isim от Xilinx, не нашел как в нем отображать сигналы в аналоговом виде, ни в документации, ни в самоой проге. Где-то встречалось, что в каких-то сторонних симуляторах есть такая опция. Может Вы знаете в каких и посоветуете?

Для предварительной отладки подайте на вход фильтра дельта-функцию,на выходе должны увидеть импульсную характеристику вашего фильтра.
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Jun 26 2013, 07:31
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(Georg.A @ Jun 26 2013, 09:51) *
andrew_b в симуляторе пробовал проверить, но отлаживать фильтр глядя на цифровые коды мне показалось нереальным (может я не прав?).
А как вы вообще собираетесь отлаживать цифровые устройства? Если не работает в симуляторе, то в железе тем более не заработает.
У вас есть модель (написанная в Matlab или даже на C/C++) и ваш VHDL-код. Они должны работать абсолютно одинаково, бит в бит.
Генерируете некоторый входной поток, пропускаете его через модель, получаете эталонный выход. Это у вас получается два эталонных файла.
Далее этот же входной поток из файла подаёте в симуляторе на вход вашего VHDL-кода. Выход записываете в файл и сравниваете с эталонным выходом. Совпадает -- отлично. Есть хоть какая-то разница -- ищете ошибку.
Также хорошо иметь кроме выхода еще несколько точек внутри фильтра для более точного контроля.
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Jun 26 2013, 09:03
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



Цитата(andrew_b @ Jun 26 2013, 14:31) *
А как вы вообще собираетесь отлаживать цифровые устройства? Если не работает в симуляторе, то в железе тем более не заработает.
У вас есть модель (написанная в Matlab или даже на C/C++) и ваш VHDL-код. Они должны работать абсолютно одинаково, бит в бит.
Генерируете некоторый входной поток, пропускаете его через модель, получаете эталонный выход. Это у вас получается два эталонных файла.
Далее этот же входной поток из файла подаёте в симуляторе на вход вашего VHDL-кода. Выход записываете в файл и сравниваете с эталонным выходом. Совпадает -- отлично. Есть хоть какая-то разница -- ищете ошибку.
Также хорошо иметь кроме выхода еще несколько точек внутри фильтра для более точного контроля.

Есть способ немного другой - использовать косимуляцию (квеста + симулинк). Собираем фильтр в квесте, подключаем как отдельный блок в симулинк, на вход подаём тестовое воздействие (например, белый шум). Выход заводми на спектроанализатор. Если фильтр работает неправильно - это сразу будет видно на спектре. Способ неоднократно описан в литературе.
З.Ы. Да, забыл сказать, на этом пути есть много непонятностей, придётся почитать доки и форумы, стандартный подход (википедия + fdatool) тут недостаточен.
Go to the top of the page
 
+Quote Post
Georg.A
сообщение Jun 27 2013, 10:59
Сообщение #7





Группа: Участник
Сообщений: 11
Регистрация: 4-10-10
Пользователь №: 59 910



Всем спасибо большое за ответы!
Ошибку обнаружил при симуляции: поставил вместо минуса плюс в формуле. ИХ и step response совпали с матлабовскими.

Но один вопрос остался:
если в каких нибудь симуляторах для vhdl возможность представлять сигнал в аналоговой форме?

Допустим хочу посмотреть форму импульсной характеристики фильтра или модулирующий сигнал. Или без вариантов запись в файл и строить графики в другой проге?
Go to the top of the page
 
+Quote Post
crono
сообщение Jun 27 2013, 11:15
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 94
Регистрация: 28-11-12
Из: Москва
Пользователь №: 74 605



Цитата(Georg.A @ Jun 27 2013, 14:59) *
Но один вопрос остался:
если в каких нибудь симуляторах для vhdl возможность представлять сигнал в аналоговой форме?

В Active-HDL точно можно.
Go to the top of the page
 
+Quote Post
Apast
сообщение Jun 27 2013, 11:16
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 224
Регистрация: 22-06-04
Из: Новосибирск
Пользователь №: 87



Цитата(Georg.A @ Jun 27 2013, 13:59) *
Всем спасибо большое за ответы!
Ошибку обнаружил при симуляции: поставил вместо минуса плюс в формуле. ИХ и step response совпали с матлабовскими.

Но один вопрос остался:
если в каких нибудь симуляторах для vhdl возможность представлять сигнал в аналоговой форме?

Допустим хочу посмотреть форму импульсной характеристики фильтра или модулирующий сигнал. Или без вариантов запись в файл и строить графики в другой проге?


Active-HDL от Aldec например, выходные результаты можно представлять в виде аналогового сигнала.
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Jun 27 2013, 12:43
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(Georg.A @ Jun 27 2013, 14:59) *
если в каких нибудь симуляторах для vhdl возможность представлять сигнал в аналоговой форме?
ModelSim
Go to the top of the page
 
+Quote Post
Victor®
сообщение Jun 27 2013, 13:17
Сообщение #11


Lazy
******

Группа: Свой
Сообщений: 2 070
Регистрация: 21-06-04
Из: Ukraine
Пользователь №: 76



Цитата(andrew_b @ Jun 27 2013, 15:43) *
ModelSim


Добавлю, что можно сделать вывод в файл и смотреть спектр чем душе угодно


--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
Go to the top of the page
 
+Quote Post
Georg.A
сообщение Jun 28 2013, 13:53
Сообщение #12





Группа: Участник
Сообщений: 11
Регистрация: 4-10-10
Пользователь №: 59 910



Спасибо большое за ответы!
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 06:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01444 секунд с 7
ELECTRONIX ©2004-2016