|
Цифровой фильтр на ПЛИС |
|
|
|
Apr 15 2006, 21:27
|
Частый гость
 
Группа: Свой
Сообщений: 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)  { 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.
|
|
|
|
|
Apr 15 2006, 21:52
|
Участник

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

|
А что значит тогда проги? Mathcad это разве не программа? Или нужны исходники? А так вообще еще matlab умеет коефициенты для фильтров считать.
|
|
|
|
|
Apr 15 2006, 22:37
|

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

|
Цитата(Eduard_k @ Apr 16 2006, 02:22)  Я не очень владею маткадом, но если ничего другого нет то могу и сним разобраться. Допустимая частота 6 мГц, а реальная, как я уже писал, 40 мГц. Этого достаточно? Что такое декимация? Простите, но боюсь, что Вы пытаетесь поставить телегу впереди паровоза... Браться за практическую реализацию подобной системы можно только хотя бы имея представление о цифровых фильтрах как таковых, иначе попытка заведомо обречена на неудачу. Доступной литературы по данной тематике много - могу порекомендовать Гольденберга "Цифровая обработка сигналов", а также Рабинера и Голда. В местных закромах имеется...
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Apr 16 2006, 07:19
|
Гуру
     
Группа: СуперМодераторы
Сообщений: 2 065
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 892

|
Цитата(Eduard_k @ Apr 16 2006, 02:55)  Возможно вы правы, но для меня сейчас было бы очень актуально перейти непосредственно к решению проблемы, мне нужно расчитать множители трансверсального фильтра и определить порядок. Вы наверное человек знающий и могли бы посмотреть мою программу или предложить другую, еще лучше написать свою, как freeware. Я конечно не спец. в ЦОС но с вашей помощью думаю мог бы воплотить в жизнь свой проект. За книгу заранеее спасибо, давайте ссылочку, очень понадобится. http://lord-n.narod.ru/walla.htmlЛ.Рабинер, Б.Гоулд. Теория и применение цифровой обработки сигналов. Сергиенко А.Б. Цифровая обработка сигналов. - собственно, это не учебник по цифровой обработке, а учебник по использованию matlab в данной области. За это данную книжку часто ругают, но Вам, возможно, она сильно поможет. И напоследок - поборите свой страх! Нет ничего страшного во всех этих matlab. Поймите, они сделаны не для того, чтобы вызывавать священный ужас, а для того, чтобы как можно больше людей использовали данный продукт (ну и как следствие - покупали его  )
|
|
|
|
|
Apr 16 2006, 09:32
|

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

|
Цитата Необходимо отфильтровать в каждом сигнале отдельно несколько полос по 100кГц, например 800-900 кГц, 1550-1650 кГц и т.д. В зависимости от того, что Вы собираетесь делать с этими полосами дальше, могут быть разные варианты решений. Возможно имеет смысл подумать о сносе их вниз и децимации, а при относитеьлно низкой частоте семплирования затраты на мат. обработку будут значительно ниже.
--------------------
/* Всё хорошо в меру. */
|
|
|
|
|
Apr 17 2006, 20:34
|
Частый гость
 
Группа: Свой
Сообщений: 196
Регистрация: 14-04-06
Пользователь №: 16 137

|
Цитата Нарезать такие узкие полосы при такой частоте дискретизации очень не оптимально, так как порядки будут огромными и вы ни в одну ПЛИС не влезете. Посмотрите алгоритм Герцеля в литературе. Хорошо, какая нужна частота дискретизации для сигнала полосой 0-3 мГц? Минимальная 6 мГц, я предлагаю использовать 40 мГц, что почти в 7 раз больше, можно выжать из АЦП до 45 мГц, куда ж еще больше. Какую частоту дискретизации выбрали бы вы? Может после АЦП поставить модуль интерполяции, перед фильтром? Линейная интерполяция пойдет? Во сколько раз увеличить поток на фильтр (при какой частоте АЦП) ? Цитата И напоследок - поборите свой страх! Нет ничего страшного во всех этих matlab. Поймите, они сделаны не для того, чтобы вызывавать священный ужас, а для того, чтобы как можно больше людей использовали данный продукт (ну и как следствие - покупали его ) Я вас понимаю, но дело не в страхе, а во времени, нужно поднять проект как можно быстрее. Цитата что Вы собираетесь делать с этими полосами дальше Оценка уровня путем интегрирования или суммы с накоплением.
|
|
|
|
|
Apr 17 2006, 22:11
|
Частый гость
 
Группа: Свой
Сообщений: 197
Регистрация: 31-03-06
Пользователь №: 15 676

|
Цитата Хорошо, какая нужна частота дискретизации для сигнала полосой 0-3 мГц? Минимальная 6 мГц, я предлагаю использовать 40 мГц, что почти в 7 раз больше, можно выжать из АЦП до 45 мГц, куда ж еще больше. Ой, только не надо приносить в нормальную цифровую обработку аудиофильские замашки  Тебе тут вообще рекомендуют уменьшить/децимировать частоту, чтобы только-только покрывала необходимость в работе с сигналом в твоей полосе. Цитата Какую частоту дискретизации выбрали бы вы? 6.66 МГц  Что-нибудь около 7-8 МГц. В общем, какую поудобнее. Цитата дело не в страхе, а во времени, нужно поднять проект как можно быстрее. Ну вот и потрать немного времени для того, чтобы понять, как в матлабе рассчитать коэффициенты фильтра. Это будет очень полезный задел на будущее и вообще профессиональный подход. Цитата Оценка уровня путем интегрирования или суммы с накоплением. В-общем, расчёт энергии сигнала в полосе, насколько я понимаю ALLИзвините, а трансверсальный фильтр - это FIR? Если так, то децимацию, имхо, применять бесмысленно. Это же не IIR, у которого из-за этого полюса чуть ли не наложатся друг на друга. Тем более, что для нормальной децимации всё равно надо ФНЧ поставить. Даже если и IIR, то частота дискретизации, имхо не так уж и велика.
|
|
|
|
|
Apr 17 2006, 23:44
|
Частый гость
 
Группа: Свой
Сообщений: 196
Регистрация: 14-04-06
Пользователь №: 16 137

|
Цитата Ой, только не надо приносить в нормальную цифровую обработку аудиофильские замашки Тебе тут вообще рекомендуют уменьшить/децимировать частоту, чтобы только-только покрывала необходимость в работе с сигналом в твоей полосе. Зачем уменьшать, я могу сразу оцифровать в 6 мГц. Цитата В-общем, расчёт энергии сигнала в полосе, насколько я понимаю Совершенно верно. Цитата Извините, а трансверсальный фильтр - это FIR? FIR (КИХ) Цитата Ой, только не надо приносить в нормальную цифровую обработку аудиофильские замашки Тебе тут вообще рекомендуют уменьшить/децимировать частоту, чтобы только-только покрывала необходимость в работе с сигналом в твоей полосе. Зачем уменьшать, я могу сразу оцифровать в 6 мГц. Цитата В-общем, расчёт энергии сигнала в полосе, насколько я понимаю Совершенно верно. Цитата Извините, а трансверсальный фильтр - это FIR? FIR (КИХ)
|
|
|
|
|
Apr 18 2006, 17:11
|
Частый гость
 
Группа: Свой
Сообщений: 197
Регистрация: 31-03-06
Пользователь №: 15 676

|
Цитата(Eduard_k @ Apr 17 2006, 16:44)  Зачем уменьшать, я могу сразу оцифровать в 6 мГц. Ну, 6 МГц это критическая частота для полосы в 3 МГц. Я бы взял процентов на 20 выше. Просто чтобы случайно не попасть на "постоянку" для максимальной частоты. Скажем, 8 МГц - вполне красивая себе цифирька  .
|
|
|
|
|
Apr 18 2006, 18:47
|

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

|
Цитата(Chudik @ Apr 18 2006, 02:11)  Ой, только не надо приносить в нормальную цифровую обработку аудиофильские замашки  Тебе тут вообще рекомендуют уменьшить/децимировать частоту, чтобы только-только покрывала необходимость в работе с сигналом в твоей полосе. Конечно, я имел ввиду, что 40 МГц - слишком высокая частоота дискретизации. Правильно тебе все советуют: где нибудь 8 МГц бери. И Матлаб с его fdatool может тебе только помочь и ускорить работу.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|