PDA

Просмотр полной версии : Цифровой фильтр это просто



redd
07.01.2016, 14:57
221651 [1]
221652 [2]

Методика создания ЦФ.


1. Берем [1], строим фильтр.
2. Смотрим хелп [1].
3. Все перепысываем, упрощаем с помощью [2].


НЕ моё сборная с интернета,

redd
07.01.2016, 23:40
Если честно то там все примитивно, несколько строк всего )

Слесарь
08.01.2016, 00:31
http://www.cqham.ru/forum/attachment.php?attac hmentid=195727&d=1425295627

UR4UDT
08.01.2016, 00:44
WinFilter Ver 0.8 дает коэффициенты и генерирует простенький С-код.

redd
08.01.2016, 01:54
Все так, но avr очень слабенький, и там нужен ну очень компактный код )

Пример кода по выше приведенной методе
Выполняется за 3 мкс при тактовой то ли 8 толи 16, незнаю
В компилированном виде 68 байт.
x4=x3;
x3=x2;
x2=x1;
x1=x0;
x0=ADC;

y4=y3;
y3=y2;
y2=y1;
y1=y0;

tek16 = y1>>3;
tek16 += x0+x2-y2;
tek16 >>= 1;
tek16 += x0+x2-x1+y1-y2;
tek16 >>= 1;
tek16 += y1-x1;

y0 = tek16;


Получается вот такой фильтр 3-го порядка, Fc=1200Гц
221757


НЕ МОЁ (((( к сожалению

Добавлено через 10 минут(ы):

Хотите знать где это используют? При детектировании DTMF )

alex.petukhov
08.01.2016, 02:05
Один раз довелось моделировать аналоговый вокодер, приехали заказчики, посмотрели, посопели. Ребята, может получиться такая хрень, Мы изначально искажаем информацию. Я писал статью про прямую запись на ЖД. И МП3 следственные органы не принимают, а может не он.

redd
08.01.2016, 02:06
Один раз довелось моделировать аналоговый вокодер, приехали заказчики, посмотрели, посопели. Ребята, может получиться такая хрень, Мы изначально искажаем информацию. Я писал статью про прямую запись на ЖД. И МП3 следственные органы не принимают, а может не он.

Я с Вами согласен ) Что это простой вариант, для фильтров большего порядка все немного сложнее, но не на много )
Достаточно почитать хелп в [1]

UR5ZQV
08.01.2016, 10:01
redd,
для фильтров большего порядка все немного сложнее, но не на много )
Достаточно почитать хелп в [1]
Достаточно посмотреть в первой проге разницу в АЧХ при точности 16 десятичных знаков (которые сохраняются в прилагаемом файле) и по кнопке "График" с "урезанными по точности коэфф. Но дело даже не в этом, коэфф. и алгоритмы фильтров можно "рожать" и другими прогами (FilterSolution и т.п.), поначалу так и делал. Но если приходиться оперативно менять параметры фильтров пришлось занятся алгоритмом их расчета и включать в прогу. Но не думаю, что это тема в разделе для начинающих.

Слесарь
08.01.2016, 11:27
Все так, но avr очень слабенький, и там нужен ну очень компактный код )


Надо использовать проц со специальным DSP модулем имеющим специальные регистры и команды для DSP обработки.

У меня такой код фильтра основной селекции трансивера:


; Post filter

mov _firp_in, w0 ; get input
;
mov #_firp_dly,w8 ; get ring buffer location
mov w8, XMODSRT ; YMODSRT = base address of delay line

mov _firp_dly_end, w8 ; load last member address
mov w8, XMODEND ; YMODEND = end address of delay line

mov _firp_n, w1 ; Number of taps
dec w1, w1 ; W1 = Number of taps - 1
;
mov _firp_dly_ptr, w8 ; get delay line pointer
mov w0, [w8++] ; store new sample (w0)
mov w8, _firp_dly_ptr ; w10 point oldest sample
;
mov _firp_taps_end, w10 ; tap vector end to w10
;
clr A, [w8]+=2, w5, [w10]-=2, w6 ; clear ACCA & get last tap & oldest sample

repeat w1 ; repeat count (W1) = Number of taps - 1
mac w5*w6, A, [w8]+=2, w5, [w10]-=2, w6
;
sac.r a,w0
mov w0, _firp_out ; post filter output
mov w0, w5; ; take a copy
;
mul.ss w0, w0, w0 ; square result to w0, w1, w0 = LSD
mov w0, _firp_out2 ; LSB
mov w1, _firp_out2 + 2 ; MSB
;
btsc w5, #0xF ; test msb (negative number)
neg w5, w5 ; take 2's complement
mov w5, _firp_out_r ; store abs value

redd
08.01.2016, 12:18
Слышь слесарь, с тобой по майлу пообщаться можно ?
мой redd@samtel.ru черкани че нить.


Забыл добавить что данный метод для малых однокристалок типа, avr,pic, и т д

Да и у тебя asm, а тут на Си )))))))))))))))))))

Добавлено через 22 минут(ы):

Лана все это есть в свободном доступе в инете, нужно просто погуглить ....

ВОт ловите http://electronix.ru/forum/index.php?showtopic= 67366

redd
08.01.2016, 15:31
Для Слесаря,

А Вы fpga(цплд) Xilinx не пробовали использовать ?

Слесарь
08.01.2016, 15:43
Нет. На коленке пока не паяются, пока еще не дорос...
Один вечер посидел подумал, что лучше в домашних условиях, диапазонные фильтры на дросселях или осваивать FPGA, пришел к выводу что осваивать FPGA не окупится скорее всего никогда. FPGA в быту, где бы мог окупить эту технологию, не нахожу применению, по этому ограничусь микроконтроллерами, знание и применение которых хорошо окупается в бытовой технике.
Так же не особо на сегодняшний день вижу преимущества FPGA при конструировании полноценного трансивера. Скорее всего глубина фильтрации выбранного диапазона, что на дросселях, что FPGA будет сопоставима, а стоимость повышается многократно. Возможно можно попробовать если купить готовую ПП под FPGA, но я не использую в своих конструкциях готовые модули.

redd
08.01.2016, 15:54
Вот умора будет, когда начнут ДПФы на цплд лепить )

Так черкани мне штоль, интересует кой чего redd@samtel.ru (для слесаря)

balmer
08.01.2016, 21:52
На STM32F405 цифровые фильтры легко крутятся, причем во float. Там даже FFT на 44 КГц занимает меньше 10% процессорного времени :-P

Genadi Zawidowski
08.01.2016, 22:44
Знаете, то что Вы написали это как современная реклама компьютеров с ценой, но без указания объёма оперативной памяти и жесткого диска... Размер FFT укажите.

Да, на том же Электрониксе есть тема Хочу построить КВ трансивер на ПЛИС, что для этого нужно? (http://electronix.ru/forum/index.php?showtopic= 131063)

R2DHG
09.01.2016, 00:08
Один вечер посидел подумал, что лучше в домашних условиях, диапазонные фильтры на дросселях или осваивать FPGA, пришел к выводу что осваивать FPGA не окупится скорее всего никогда.

Чтобы надергать готового кода и прикрутить себе - полноценно осваивать и не надо. С хорошим генератором на ацп + fpga может получится неплохой приемник, а в вашем случае, насколько я понимаю, понадобится синтезатор со всякими шумами, неидеальные фильтры, преобразования... в общем потенциально проблем больше и менее технологично.



FPGA в быту, где бы мог окупить эту технологию, не нахожу применению, по этому ограничусь микроконтроллерами, знание и применение которых хорошо окупается в бытовой технике.

Тут вы правы на 100%, но штука интересная, правда ведь ? :-P

balmer
09.01.2016, 00:32
Размер FFT укажите.

1024 точки. Но это было для дисплейчика 320x240, поэтому FFT вызывался не очень часто. Понятно, что для дисплея 800x600 будет сильно выше нагрузка.

Ну и оффтопский-оффтоп. Перестала мне нравится идея с STM32F405 в трансивере, хотя модуль с CS4272 и STM32F405 вполне успешно применяю в VNA. Следующую попытку попробую с Rasberry PI. К нему так-же напрямую можно подключить CS4272, но есть один плюс - в нем есть Ethernet :-P. Попробую основное железо разместить в сарайчике, а к себе в комнату кинуть только Ethernet провод.

Слесарь
09.01.2016, 00:38
Интересно...
Но мне пока не понятно как организовать обратимый вариант работы FPGA на прием и передачу. Могу предположить что в идеале надо по приему: антенна -> ADC -> FPGA -> DSP -> DAC -> динамик. По передаче: микрофон ADC -> DSP -> FPGA -> DAC -> УМ -> антенна.
Тут видится мне много многократное удорожание, чего только стоят ADC и DAC с частотой дискретизации от 120 МГц.
Быть может пока подождать. А там глядишь появится со всем этим аппаратным функционалом какой-нить "свисток" который просто потребуется перепрограммировать для работы КВ и УКВ. Да. А там глядишь и доступные усилители мощности на КВ в классе D вместо 120 МГц DAC.

balmer
09.01.2016, 00:55
Тут видится мне много многократное удорожание, чего только стоят ADC и DAC с частотой дискретизации от 120 МГц.

AD9857 стоит 190 руб на AliExpress.... А у него внутрях есть DDS и DAC нужные для передатчика.

Слесарь
09.01.2016, 01:18
AD9857 стоит 190 руб на AliExpress.... А у него внутрях есть DDS и DAC нужные для передатчика.

Что-то мне подсказывает, за эти деньги, там будет каких-нить 12 ... 14 бит. и такой чип значительно будет проигрывать по динамическому диапазону.

balmer
09.01.2016, 01:30
Проигрывает, там всего 60 dB сигнал/шум. Так что может и 10 бит :-P

R2DHG
09.01.2016, 01:52
Что-то мне подсказывает, за эти деньги, там будет каких-нить 12 ... 14 бит. и такой чип значительно будет проигрывать по динамическому диапазону.
Для передатчика этого достаточно.

Слесарь
09.01.2016, 02:23
Проигрывает, там всего 60 dB сигнал/шум. Так что может и 10 бит :-P

В DSP трансивере закладываю ВЧ операционный усилитель
–66 dBc @ 20 MHz, Second Harmonic
–75 dBc @ 20 MHz, Third Harmonic

НЧ операционные усилители: 90 дБ.

НЧ АЦП 90 дБ.

R2DHG
09.01.2016, 02:31
Вы же можете фильтры поставить гармоники давить - они вам вроде нравятся :-P А по интермодуляции таких -Дб вроде не нужно, все равно в УМ испортится.

balmer
09.01.2016, 10:50
–66 dBc @ 20 MHz, Second Harmonic
–75 dBc @ 20 MHz, Third Harmonic


Кстати еще про AD9857. Там все таки 14 бит. Соответственно:
Wideband SFDR:
1 MHz to 20 MHz Analog Out −75 dBc
20 MHz to 40 MHz Analog Out −65 dBc

Narrowband SFDR:
10 MHz Analog Out (±250 kHz) −88 dBc
65 MHz Analog Out (±250 kHz) −86 dBc

Т.е. насколько понимаю - вполне укладывается в твои параметры.

Слесарь
09.01.2016, 11:42
Да. Но из вашего первого поста о чипе мне подумалось что на базе нее и вход приемника, а оказывается для приемника все-равно потребуется чип тыщ за десять руб.

Сейчас запускаю обратимый аналоговый ВЧ конструктив, большая часть узлов работает как на прием так и на передачу, с сопоставимыми характеристиками..

Слесарь
09.01.2016, 23:10
Чудеса. Перематывал симметричный ВЧ трансформатор для квадратурного детектора автономного DSP приемника, откинул диапазонный фильтр перед трансформатором и детектором. Когда перемотал парным серебряным проводом для лучшей симметрии, для проверки правильности фазировки послушать эфир, подключил в качестве антенны на вход трансформатора просто несколько метров проволоку по комнате и заземление. Так радио довольно неплохо зазвучало! На слух сильных помех побочных гармоник частот не регистрирую. Может если делать карманное игрушечное DSP радио отказаться от сложных диапазон фильтров и сразу с антенны подавать на квадратурный детектор? Правда чувствительность НЧ IQ трактов надо повысить.
Сколько там обычно затухание гармоник на детекторе при таком включении? -20 дБ или лучше???

redd
10.01.2016, 06:26
Без ДПФ нежелательно, хотя и работать будет практически нормально, но например 40 ка ночью, вещалки забодают, а днем норм даже без дпф )

redd
10.01.2016, 14:36
Да и смотря где, если деревня три дома то одно, если город то другое

R2DHG
10.01.2016, 14:55
В городе проще - аттенюатор врубил и слушай :-P Но выше 20 МГц может потребоваться вся чувствительность даже в городе.

Слесарь
10.01.2016, 19:19
Включил диапазонный фильтр, быстро крутишь ручку из конца в конец по частоте границ диапазона, так в пределах диапазона шумит, а за пределами если открутить на несколько сотен кГц полная тишина. Нет. Наверное без ДПФ лучше вообще не делать DSP приемник, сразу как-то не солидно получается, хотя работает, слушать можно...

Слесарь
10.01.2016, 22:23
Экспериментирую с коэффициентами фильтров для такой структурной схемы приемника:

222011

Хочется получить несколько полос пропускания, например 500, 1500, 2200, 3500 Гц.
На какую полосу пропускания лучше настраивать фильтры IQ со сдвигом 45гр., как понимаю, в идеале должны быть настроены на полосу 1/2 от основной полосы пропускания? Можно ли их настроить под 1/2 самой широкой полосы для экономии памяти таблицы коэффициентов, а основную селекцию по все вариантам фильтрации делать только Аудио BPF?

UR4UDT
10.01.2016, 22:39
Можно установить фильтр Гильберта (сдвиг фаз 90 град.) на любой канал.
Для разных полос менять коэффициенты. Если нужно получить полосу - значит ещё полосовой добавить в конце. На выходе аналоговый ФНЧ (для максимальной частоты) чтобы убрать "цифру".

Genadi Zawidowski
10.01.2016, 22:41
to Слесарь: Как Вы себе представляете для алгоритма Уивера такое? Всегда переносить на среднюю частоту 2 кГц, а потом выфильтровывать? АРУ по выходу аудиофильтра. В чем идея-то? Перегружаемые коэффициенты в основном фильтре не получаются? Три фильтра (два для квадратурных сигналов и один аудио с перегружаемыми коэффициентами) проще, чем два с перегружаемыми коэффициентами?

Слесарь
10.01.2016, 22:44
Хочу настроить частоту дискретизации 48 кГц, при такой частоте цифра вроде не должна слышаться. Но есть проблема с достатком производительности процессора на такой частоте семплирования, хочу найти компромисс глубины фильтрации и достатка производительности.

UR4UDT
10.01.2016, 22:47
Я понял так, что это обычный ППП с нулевой ПЧ.
Или всё же Уивер?

Слесарь
10.01.2016, 22:51
АРУ по выходу аудиофильтра.

АРУ делаю по входу АЦП.

222015


Я понял так, что это обычный ППП с нулевой ПЧ.

Это с нулевой ПЧ. если я правильно понимаю терминологию по приемникам.

UR4UDT
10.01.2016, 22:54
Я тоже так понял. На структурной схеме нет смесителей НЧ каналов половинной частоты.

Genadi Zawidowski
10.01.2016, 23:36
Сорри, я ошибся. Тогда на мой взгляд ничего не мешает. Да и вообще, входной фильтр на килогерц 20 сделать аналоговым (чтобы в нужном диапазоне частот уменьшить разбалансы).

UR4UDT
10.01.2016, 23:49
хочу найти компромисс глубины фильтрации и достатка производительности.
Я бы установил фильтр Гильберта (полоса 3500 Гц фиксирована) только что бы выделить нужную боковую (ВБП / НБП).
Порядок на столько низкий, на сколько допустима неравномерность в полосе прозрачности.
Основную селекцию производить следующим фильтром (всего одним) с переключаемыми коэффициентами. Здесь простор: ФНЧ, ПФ, режектор, порядок фильтра и т.п.
Аналоговый фильтр нужен в канале передатчика. В противном случае получите частокол через частоту дискретизации (у Вас 48 кГц).
Наверняка существуют иные варианты, нo я бы начал с этого.

UR4UDT
11.01.2016, 01:03
Существенным ресурсом является частота дискретизации.
Вместо 48 кГц вполне достаточно и 16, а может и меньше.
Погоня за широкой полосой обусловлена желанием получить красивую панораму. В вашем случае это не нужно т.к. панорамы нет совсем.

Слесарь
11.01.2016, 11:51
У меня возможны варианты частоты дискретизации 8, 32 и 48 кГц, панорамы конечно же нет, но есть подобие спектрографа который позволяет видеть с какой стороны есть еще станции на диапазоне. Позволяет быстрее прокручивать настройку по диапазону, на слух при быстрой прокрутке бы не заметил станцию, а на картинке видно и при прокрутке...
Сейчас попробую 32 кГц....

redd
12.01.2016, 12:33
У меня возможны варианты частоты дискретизации 8, 32 и 48 кГц, панорамы конечно же нет, но есть подобие спектрографа который позволяет видеть с какой стороны есть еще станции на диапазоне. Позволяет быстрее прокручивать настройку по диапазону, на слух при быстрой прокрутке бы не заметил станцию, а на картинке видно и при прокрутке...
Сейчас попробую 32 кГц....

А ты как дескретизацию делаешь ? По прерываю АЦП, таймеру, или по внешнему прерыванию от внешнего генератора ?