|
Цифровой фильтр на ПЛИС |
|
|
|
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 17 2006, 23:44
|
Частый гость
 
Группа: Свой
Сообщений: 196
Регистрация: 14-04-06
Пользователь №: 16 137

|
Цитата Ой, только не надо приносить в нормальную цифровую обработку аудиофильские замашки Тебе тут вообще рекомендуют уменьшить/децимировать частоту, чтобы только-только покрывала необходимость в работе с сигналом в твоей полосе. Зачем уменьшать, я могу сразу оцифровать в 6 мГц. Цитата В-общем, расчёт энергии сигнала в полосе, насколько я понимаю Совершенно верно. Цитата Извините, а трансверсальный фильтр - это FIR? FIR (КИХ) Цитата Ой, только не надо приносить в нормальную цифровую обработку аудиофильские замашки Тебе тут вообще рекомендуют уменьшить/децимировать частоту, чтобы только-только покрывала необходимость в работе с сигналом в твоей полосе. Зачем уменьшать, я могу сразу оцифровать в 6 мГц. Цитата В-общем, расчёт энергии сигнала в полосе, насколько я понимаю Совершенно верно. Цитата Извините, а трансверсальный фильтр - это FIR? FIR (КИХ)
|
|
|
|
|
Apr 19 2006, 06:50
|

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

|
Цитата(Eduard_k @ Apr 18 2006, 03:44)  Цитата В-общем, расчёт энергии сигнала в полосе, насколько я понимаю Совершенно верно. Типа селективный вольтметр (многоканальный). Всё, что Вам нужно для этого (для каждой полосы): 1. перемножить входной сигнал на два синусоидальных сигнала, сдвинутых на 90 градусов (sin и cos), частотой, соотв. середине анализируемой полосы - таким образом снесёте его вниз; 2. два полученных сигнала пропустить через одинаковые ФНЧ с заданой полососой и крутизной. Для этой цели хорошо подойдут IIR (БИХ) фильтры - обьём вычислений получится примерно на порядок меньше. 3. полученные сигналы несут всю информацию об энергии в заданной полосе. Последняя находится как сумма квадратов этих сигналов. Дальше можно брать квадратный короень, фильтровать, и много ещё чего...  Например: нужно узнать, что творится в полосе 700-800 кГц. Сигнал с генератора - 750 кГц, полоса ФНЧ - 50 кГц, его крутизна - какая устроит. Будут вопросы по генератору синуса - спрашивайте. Успехов!
--------------------
/* Всё хорошо в меру. */
|
|
|
|
Сообщений в этой теме
Eduard_k Цифровой фильтр на ПЛИС Apr 15 2006, 21:27 Bar А что значит тогда проги? Mathcad это разве не пр... Apr 15 2006, 21:52 Stanislav Есть одно практическое соображение. Перед собствен... Apr 15 2006, 22:15 Eduard_k Я не очень владею маткадом, но если ничего другого... Apr 15 2006, 22:22 Stanislav Цитата(Eduard_k @ Apr 16 2006, 02:22) Я н... Apr 15 2006, 22:37 Eduard_k Возможно вы правы, но для меня сейчас было бы очен... Apr 15 2006, 22:55 Evgeny_CD Цитата(Eduard_k @ Apr 16 2006, 02:55) Воз... Apr 16 2006, 07:19 jorikdima Во-первых вам предлагают использовать не маткад а ... Apr 16 2006, 06:14 Vitёk ЦитатаНеобходимо отфильтровать в каждом сигнале от... Apr 16 2006, 09:32 Eduard_k ЦитатаНарезать такие узкие полосы при такой частот... Apr 17 2006, 20:34 Chudik ЦитатаХорошо, какая нужна частота дискретизации дл... Apr 17 2006, 22:11 Chudik Цитата(Eduard_k @ Apr 17 2006, 16:44) Зач... Apr 18 2006, 17:11 jorikdima Цитата(Chudik @ Apr 18 2006, 02:11) Ой, т... Apr 18 2006, 18:47 Eduard_k Нет проблем, берем 8 мГц.
Где взять fdatool? Суще... Apr 18 2006, 19:18 Alex_xxx Альтера на своем сайте предлагает МегаЯдро для пос... Apr 20 2006, 15:03 Chudik Цитата(Eduard_k @ Apr 18 2006, 12:18) Где... Apr 19 2006, 01:12 jorikdima Цитата(Vitёk @ Apr 19 2006, 10:50) Цитата... Apr 19 2006, 13:48 Eduard_k ЦитатаТипа селективный вольтметр (многоканальный).... Apr 19 2006, 16:48 DSIoffe Вот только что купил книгу: Грушвицкий, Мурсаев, У... Apr 20 2006, 06:53 jorikdima Xilinx vs Altera - это извечный вопрос. Если ктото... Apr 20 2006, 13:56 Eduard_k Как я понимаю FIR Compiler платный и работать буде... Apr 20 2006, 22:52 DSIoffe ЦитатаСуществуют ли для ПЛИС Altera CyClone и CyCl... Apr 21 2006, 06:28 Eduard_k Програмируются внутрисистемно или нужно каждый раз... Apr 21 2006, 16:35 jorikdima Цитата(Eduard_k @ Apr 21 2006, 20:35) Про... Apr 22 2006, 12:40 Krys Если юзать память от STM, то в Квартусе будет проб... Apr 24 2006, 02:53 Black Pahan Цитата(Krys @ Apr 24 2006, 09:53) Если юз... Apr 24 2006, 07:01 Eduard_k Проблема еще вот какая, у узнал сколько стоят CyCl... Apr 24 2006, 22:38 DSIoffe Так EP1K10 - это самый маленький ACEX1K, а EP1C12 ... Apr 25 2006, 09:32 jorikdima Я б на вашем месте сначала расчеты провел, чтоб оп... Apr 25 2006, 17:47 Eduard_k ЦитатаТак EP1K10 - это самый маленький ACEX1K
Но у... Apr 25 2006, 19:57 vetal В CPLD нет памяти, только на триггерах.
MAXII- FPG... Apr 25 2006, 20:20 Eduard_k ЦитатаЭто пункт ТЗ???
Если да, то смотрите на Acte... Apr 25 2006, 21:20 vetal ЦитатаЧто такое Actel ProASIC PLUS или ProASIC3 ил... Apr 26 2006, 06:24 DSIoffe ЦитатаНо у него на самом деле 10000 элементов?
Эта... Apr 26 2006, 07:22 vetal ЦитатаНу ведь не знаете, зачем говорите?
Я, вроде,... Apr 26 2006, 07:42 Alex_xxx Еще раз могу порекомендовать посмотреть FIR Compil... Apr 26 2006, 13:14 Eduard_k Спасибо за совет, я уже давно скачал FIR Compiler,... Apr 26 2006, 16:43 Koluntaev А может Вам все таки присмотреться к Xilinx? XC3S2... Apr 27 2006, 04:22 Eduard_k А ISE - это типа Quartus? Он распространяется бесп... Apr 27 2006, 16:26 Koluntaev Да, ISE - это САПР для Xilinx. Полная версия стоит... Apr 27 2006, 17:42 Eduard_k FIR Compiler - очень хорошая штука. Как можно заст... May 4 2006, 19:44 Alex_xxx Цитата(Eduard_k @ May 4 2006, 23:44) FIR ... May 6 2006, 11:36 DmitryMS Под XILINX очень поможет System Generator. Это наб... May 5 2006, 18:36
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|