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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Цифровой фильтр на ПЛИС
Eduard_k
сообщение Apr 15 2006, 21:27
Сообщение #1


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

Группа: Свой
Сообщений: 196
Регистрация: 14-04-06
Пользователь №: 16 137



Уважаемые участники форума, помогите решить следующую техническую задачу.

Существует два источника сигнала, предварительно отфильтрованные ФНЧ с частотой среза 3 мГц и оцифрованные на скорости 40 мГц разрядностью 10 бит. Необходимо отфильтровать в каждом сигнале отдельно несколько полос по 100кГц, например 800-900 кГц, 1550-1650 кГц и т.д.

Для решения задачи думаю использовать ПЛИС Altera, необходимо разобраться и использовать ПЛИС без покупки Development Kit, опыта работы с ПЛИС на данных момент не имею но готов читать и разбираться. Если вы считаете целесообразным использование других ПЛИС, пожалуйста укажите каких именно.

Для реализации цифрового фильтра думаю использовать трансверсальную схему с КИХ Методы проектирования цифровых фильтров, М.В. Белодедов описанные на странице 26. Такие фильтры достаточно просты. Возможно стоит использовать фильтры другого типа, если так то какие.
Для трансверсального фильтра необходимо определить порядок (количество элементов задержки и сдвига) и определить импульсную характеристику (множители). Пожалуйста, помогите мне расчитать импульсную характеристику, я пробовал создать программу по формуле (1.4) на странице 30, но результат работы моей программы не сходится с примером на рисунке 8. Ниже привожу листинг своей программы:
Цитата
#include<iostream.h>
#include<math.h>

double H_of_F(double w);

void main()
{
double delta;
cout<<"\n Delta >> ";
cin>>delta;
int n;
cout<<"\n N >> ";
cin>>n;

//integration
double sum = 0.0;
double h = 0.01,p1 = 0.0, p2 = 0.0, pos = 0.0;
for(pos=0;pos<(3.14/delta)wink.gif
{
p1 = H_of_F(pos)*cos(pos*n*delta);
p2 = H_of_F(pos+h)*cos((pos+h)*n*delta);
sum = sum + (delta/3.14)*(h*(p1+p2)/2);

pos = pos+h;
}


cout<<"Out >> "<<sum;
}

double H_of_F(double w)
{
double F = w/2*3.14;
//Description of frequency characteristic
if(fabs(F)<=1){return 0.5+F/2;}else{return 0;}
}

... возможно где-то я допустил ошибку. Существуют ли готовые проги для расчета множителей, может быть для других фильтров (если они лучше) ? Только желательно именно проги, а не MatCAD. Как мне определить порядок фильтра? Сколько элементов в ПЛИС займет такой фильтр при n=80, например?
В плане ПЛИС думаю использовать семейство MAXII, а если не будут влазить все фильтры то CyClone.
Go to the top of the page
 
+Quote Post
Bar
сообщение Apr 15 2006, 21:52
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 58
Регистрация: 13-03-05
Пользователь №: 3 314



А что значит тогда проги? Mathcad это разве не программа? Или нужны исходники?
А так вообще еще matlab умеет коефициенты для фильтров считать.
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Apr 15 2006, 22:15
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Есть одно практическое соображение. Перед собственно выделением полос для уменьшения последующего объёма вычислений необходимо произвести уменьшение частоты выборки (decimation). Минимальная теоретически допустимая частота выходной выборки составляет 6 МГц. На практике же лучше выбрать частоту повыше, и произвести децимацию в 4-5 раз, благо синтез и реализация фильтров для такой задачи не составит труда. Только после этого можно приступить к "нарезанию" сигнала на полосы. В противном случае, трансверсальные фильтры с нужными Вам характеристиками будут иметь порядок просто-таки героический, и вряд ли реализуемы на практике.
ЗЫ. В матлабе есть GUI, посвящённый расчёту фильтров, осваивается в течение часа.


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
Eduard_k
сообщение Apr 15 2006, 22:22
Сообщение #4


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

Группа: Свой
Сообщений: 196
Регистрация: 14-04-06
Пользователь №: 16 137



Я не очень владею маткадом, но если ничего другого нет то могу и сним разобраться.

Допустимая частота 6 мГц, а реальная, как я уже писал, 40 мГц. Этого достаточно? Что такое декимация?
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Apr 15 2006, 22:37
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(Eduard_k @ Apr 16 2006, 02:22) *
Я не очень владею маткадом, но если ничего другого нет то могу и сним разобраться.
Допустимая частота 6 мГц, а реальная, как я уже писал, 40 мГц. Этого достаточно? Что такое декимация?
Простите, но боюсь, что Вы пытаетесь поставить телегу впереди паровоза... Браться за практическую реализацию подобной системы можно только хотя бы имея представление о цифровых фильтрах как таковых, иначе попытка заведомо обречена на неудачу. Доступной литературы по данной тематике много - могу порекомендовать Гольденберга "Цифровая обработка сигналов", а также Рабинера и Голда. В местных закромах имеется...


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
Eduard_k
сообщение Apr 15 2006, 22:55
Сообщение #6


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

Группа: Свой
Сообщений: 196
Регистрация: 14-04-06
Пользователь №: 16 137



Возможно вы правы, но для меня сейчас было бы очень актуально перейти непосредственно к решению проблемы, мне нужно расчитать множители трансверсального фильтра и определить порядок. Вы наверное человек знающий и могли бы посмотреть мою программу или предложить другую, еще лучше написать свою, как freeware. Я конечно не спец. в ЦОС но с вашей помощью думаю мог бы воплотить в жизнь свой проект. За книгу заранеее спасибо, давайте ссылочку, очень понадобится.
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Apr 16 2006, 06:14
Сообщение #7


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Во-первых вам предлагают использовать не маткад а матлаб (MATLAB). Это разные пакеты. Первый для школьниковв, второй для инженеров (ИМХО). В матлабе есть пакет fdatool. Самая лучшая рекомендация для вас это посмотреть этот пакет, там есть все что вам нужно.
Нарезать такие узкие полосы при такой частоте дискретизации очень не оптимально, так как порядки будут огромными и вы ни в одну ПЛИС не влезете. Посмотрите алгоритм Герцеля в литературе.
Go to the top of the page
 
+Quote Post
Evgeny_CD
сообщение Apr 16 2006, 07:19
Сообщение #8


Гуру
******

Группа: СуперМодераторы
Сообщений: 2 065
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 892



Цитата(Eduard_k @ Apr 16 2006, 02:55) *
Возможно вы правы, но для меня сейчас было бы очень актуально перейти непосредственно к решению проблемы, мне нужно расчитать множители трансверсального фильтра и определить порядок. Вы наверное человек знающий и могли бы посмотреть мою программу или предложить другую, еще лучше написать свою, как freeware. Я конечно не спец. в ЦОС но с вашей помощью думаю мог бы воплотить в жизнь свой проект. За книгу заранеее спасибо, давайте ссылочку, очень понадобится.
http://lord-n.narod.ru/walla.html

Л.Рабинер, Б.Гоулд.
Теория и применение цифровой обработки сигналов.

Сергиенко А.Б.
Цифровая обработка сигналов. - собственно, это не учебник по цифровой обработке, а учебник по использованию matlab в данной области. За это данную книжку часто ругают, но Вам, возможно, она сильно поможет.

И напоследок - поборите свой страх! Нет ничего страшного во всех этих matlab. Поймите, они сделаны не для того, чтобы вызывавать священный ужас, а для того, чтобы как можно больше людей использовали данный продукт (ну и как следствие - покупали его biggrin.gif )
Go to the top of the page
 
+Quote Post
Vitёk
сообщение Apr 16 2006, 09:32
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 272
Регистрация: 17-01-05
Из: Ростов-на-Дону
Пользователь №: 2 018



Цитата
Необходимо отфильтровать в каждом сигнале отдельно несколько полос по 100кГц, например 800-900 кГц, 1550-1650 кГц и т.д.
В зависимости от того, что Вы собираетесь делать с этими полосами дальше, могут быть разные варианты решений. Возможно имеет смысл подумать о сносе их вниз и децимации, а при относитеьлно низкой частоте семплирования затраты на мат. обработку будут значительно ниже.


--------------------
/* Всё хорошо в меру. */
Go to the top of the page
 
+Quote Post
Eduard_k
сообщение Apr 17 2006, 20:34
Сообщение #10


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

Группа: Свой
Сообщений: 196
Регистрация: 14-04-06
Пользователь №: 16 137



Цитата
Нарезать такие узкие полосы при такой частоте дискретизации очень не оптимально, так как порядки будут огромными и вы ни в одну ПЛИС не влезете. Посмотрите алгоритм Герцеля в литературе.

Хорошо, какая нужна частота дискретизации для сигнала полосой 0-3 мГц? Минимальная 6 мГц, я предлагаю использовать 40 мГц, что почти в 7 раз больше, можно выжать из АЦП до 45 мГц, куда ж еще больше. Какую частоту дискретизации выбрали бы вы? Может после АЦП поставить модуль интерполяции, перед фильтром? Линейная интерполяция пойдет? Во сколько раз увеличить поток на фильтр (при какой частоте АЦП) ?
Цитата
И напоследок - поборите свой страх! Нет ничего страшного во всех этих matlab. Поймите, они сделаны не для того, чтобы вызывавать священный ужас, а для того, чтобы как можно больше людей использовали данный продукт (ну и как следствие - покупали его )

Я вас понимаю, но дело не в страхе, а во времени, нужно поднять проект как можно быстрее.
Цитата
что Вы собираетесь делать с этими полосами дальше

Оценка уровня путем интегрирования или суммы с накоплением.
Go to the top of the page
 
+Quote Post
Chudik
сообщение Apr 17 2006, 22:11
Сообщение #11


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

Группа: Свой
Сообщений: 197
Регистрация: 31-03-06
Пользователь №: 15 676



Цитата
Хорошо, какая нужна частота дискретизации для сигнала полосой 0-3 мГц? Минимальная 6 мГц, я предлагаю использовать 40 мГц, что почти в 7 раз больше, можно выжать из АЦП до 45 мГц, куда ж еще больше.

Ой, только не надо приносить в нормальную цифровую обработку аудиофильские замашки biggrin.gif Тебе тут вообще рекомендуют уменьшить/децимировать частоту, чтобы только-только покрывала необходимость в работе с сигналом в твоей полосе.

Цитата
Какую частоту дискретизации выбрали бы вы?

6.66 МГц biggrin.gif Что-нибудь около 7-8 МГц. В общем, какую поудобнее.

Цитата
дело не в страхе, а во времени, нужно поднять проект как можно быстрее.

Ну вот и потрать немного времени для того, чтобы понять, как в матлабе рассчитать коэффициенты фильтра. Это будет очень полезный задел на будущее и вообще профессиональный подход.

Цитата
Оценка уровня путем интегрирования или суммы с накоплением.

В-общем, расчёт энергии сигнала в полосе, насколько я понимаю smile.gif

ALL
Извините, а трансверсальный фильтр - это FIR? Если так, то децимацию, имхо, применять бесмысленно. Это же не IIR, у которого из-за этого полюса чуть ли не наложатся друг на друга. Тем более, что для нормальной децимации всё равно надо ФНЧ поставить. Даже если и IIR, то частота дискретизации, имхо не так уж и велика.
Go to the top of the page
 
+Quote Post
Eduard_k
сообщение Apr 17 2006, 23:44
Сообщение #12


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

Группа: Свой
Сообщений: 196
Регистрация: 14-04-06
Пользователь №: 16 137



Цитата
Ой, только не надо приносить в нормальную цифровую обработку аудиофильские замашки Тебе тут вообще рекомендуют уменьшить/децимировать частоту, чтобы только-только покрывала необходимость в работе с сигналом в твоей полосе.

Зачем уменьшать, я могу сразу оцифровать в 6 мГц.
Цитата
В-общем, расчёт энергии сигнала в полосе, насколько я понимаю

Совершенно верно.
Цитата
Извините, а трансверсальный фильтр - это FIR?

FIR (КИХ)

Цитата
Ой, только не надо приносить в нормальную цифровую обработку аудиофильские замашки Тебе тут вообще рекомендуют уменьшить/децимировать частоту, чтобы только-только покрывала необходимость в работе с сигналом в твоей полосе.

Зачем уменьшать, я могу сразу оцифровать в 6 мГц.
Цитата
В-общем, расчёт энергии сигнала в полосе, насколько я понимаю

Совершенно верно.
Цитата
Извините, а трансверсальный фильтр - это FIR?

FIR (КИХ)
Go to the top of the page
 
+Quote Post
Chudik
сообщение Apr 18 2006, 17:11
Сообщение #13


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

Группа: Свой
Сообщений: 197
Регистрация: 31-03-06
Пользователь №: 15 676



Цитата(Eduard_k @ Apr 17 2006, 16:44) *
Зачем уменьшать, я могу сразу оцифровать в 6 мГц.

Ну, 6 МГц это критическая частота для полосы в 3 МГц. Я бы взял процентов на 20 выше. Просто чтобы случайно не попасть на "постоянку" для максимальной частоты. Скажем, 8 МГц - вполне красивая себе цифирька smile.gif.
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Apr 18 2006, 18:47
Сообщение #14


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Цитата(Chudik @ Apr 18 2006, 02:11) *
Ой, только не надо приносить в нормальную цифровую обработку аудиофильские замашки biggrin.gif Тебе тут вообще рекомендуют уменьшить/децимировать частоту, чтобы только-только покрывала необходимость в работе с сигналом в твоей полосе.


Конечно, я имел ввиду, что 40 МГц - слишком высокая частоота дискретизации. Правильно тебе все советуют: где нибудь 8 МГц бери. И Матлаб с его fdatool может тебе только помочь и ускорить работу.
Go to the top of the page
 
+Quote Post
Eduard_k
сообщение Apr 18 2006, 19:18
Сообщение #15


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

Группа: Свой
Сообщений: 196
Регистрация: 14-04-06
Пользователь №: 16 137



Нет проблем, берем 8 мГц.

Где взять fdatool? Существует ли некая книга по ПЛИС Altera в электронном виде, я видел её ранее в магазине, теперь хочу купить, а нету. Вообще, какие ПЛИС посоветуете? И литературу к ним.
Go to the top of the page
 
+Quote Post

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

 


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


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