Доброго времени суток, форумчане!
Мне на бакалаврский проект нужно спроектировать цифровой полосовой фильтр с переменной полосой пропускания. Характеристиками задаться можно любыми.
Я думаю взять полосу пропускания для речевого диапазона частот и проектировать КИХ-фильтр во временной реализации (поправьте если что не так).
На счёт переменной полосы пропускания - то это можно сделать просто, расчитав х-ки для 2-х разных полос пропускания, потом в зависимости от какого-то условия использовать нужную, этого хватит.
Читаю литературу и немного запутался...возникли вопросы:
1) Чем временная реализация отличается от частотной...говорят временная проще в реализации + по ней больше литературы
2) какой вид оконной функции лучше выбрать в моем случае?...или может использовать другой метод?
3) от чего зависит несущая частота и ПП фильтра?
Поделитесь советами пожалуйста, буду очень благодарен.
Lyubimov
Apr 17 2011, 02:31
1. И. С. Гоноровский Радиотехнические цепи и сигналы дрофа 2006 г. с. 547
Serg76
Apr 17 2011, 06:48
Цитата(Kikky @ Apr 17 2011, 00:21)

Мне на бакалаврский проект нужно спроектировать цифровой полосовой фильтр с переменной полосой пропускания.
Ничего личного, но, по-моему, тема какая-то слабоватая даже для бакалаврского уровня. Раньше вроде даже курсовые проекты по-мощнее выглядели
Спасибо, нашёл, разобрался...может кто подскажет на счёт оконной функции?
ivan219
Apr 18 2011, 13:58
Зависит от желаймого уровня подавления.
Окно Блэкмана даёт порядка 60 дБ думаю для вас подойдёт.
http://www.dsplib.ru/content/winadd/win.html
Иван Панченко
Apr 19 2011, 09:29
про оконные функции кое-что полезное,наверняка найдете в книге
Сергиенко "Цифровая обработка сигналов"
Спасибо большое! И книга и ссылка очень помогли, разобрался, с помощью FDATool в Matlab построил х-ки.
У меня вопрос по составлению принципиальной схемы. Я так понимаю, сначала нужно определиться со структурой. Я думаю взять самую простую - трансверсальную. На чём основываться при разработке принципиальной схемы и при выборе элементной базы?
Заранее благодарен.
анатолий
Apr 24 2011, 08:34
Если речевой диапазон частот, то структура простая: типовая схема включения микроконтроллера.
Тем более, если частота перестраивается, нужен какой-то калькулятор коэффициентов - подпрограмма микроконтроллера.
а можно ли обойтись без микроконтроллеров в моём случае?
анатолий
Apr 24 2011, 08:51
Можно взять рекурсивный фильтр - у него коэффициентов мало и они, бывает, изменяются в соответствии с частотой полосы.
Можно выбрать диапазон частот в десятки мегагерц - и делать фильтр на ПЛИС, вырисовывая структуру, прошиваемую в ней.
Типичная методика проектирования фильтров - делай на микроконтроллере (сигнальном микропроцессоре),
если не успевает - переходи на ПЛИС.
Другой подход в наше время - дурость.
Serg76
Apr 24 2011, 09:09
Цитата(Kikky @ Apr 24 2011, 11:44)

а можно ли обойтись без микроконтроллеров в моём случае?
естественно
2 анатолий Человеку необходимо спроектировать ЦФ, а не обрабатывать сигнал с его помощью, причем здесь МК? Проектирование обычного КИХ фильтра под любое окно займет не более сотни строк кода для ПК (а то и того намного меньше).
анатолий
Apr 25 2011, 08:17
Цитата(Serg76 @ Apr 24 2011, 12:09)

естественно
2 анатолий Человеку необходимо спроектировать ЦФ, а не обрабатывать сигнал с его помощью, причем здесь МК? Проектирование обычного КИХ фильтра под любое окно займет не более сотни строк кода для ПК (а то и того намного меньше).
Цитирую: "У меня вопрос по составлению принципиальной схемы. "
Serg76
Apr 25 2011, 10:55
Цитата(анатолий @ Apr 25 2011, 11:17)

Цитирую: "У меня вопрос по составлению принципиальной схемы. "
Цитирую TC: "Мне на бакалаврский проект нужно спроектировать цифровой полосовой фильтр с переменной полосой пропускания. Характеристиками задаться можно любыми."
К тому же причем здесь составление принципиальной схемы к расчету к-ов ЦФ на МК? На МК или DSP/FPGA необходимо реализовывать сей ЦФ, да и то если это необходимо, а рассчитывать к-ты надо отдельной программулькой или в каком-нибудь спец. пакете.
На счёт расчета коэффициентов и х-к я разобрался. МК мне использовать не нужно. А принципиальная схема нужна, т.к. реализация аппаратная, а не программная.
Mad_max
Apr 25 2011, 13:31
Цитата(Kikky @ Apr 25 2011, 15:29)

На счёт расчета коэффициентов и х-к я разобрался. МК мне использовать не нужно. А принципиальная схема нужна, т.к. реализация аппаратная, а не программная.
Если нужна аппаратная реализация и Вы остановились на фильтре с конечной импульсной характеристикой, то все что Вам нужно
для принципиальной схемы это посмотреть как аппаратно реализуется операция свертки.
анатолий
Apr 26 2011, 08:27
Цитата(Kikky @ Apr 25 2011, 14:29)

А принципиальная схема нужна, т.к. реализация аппаратная, а не программная.
Если делать аппаратную реализацию - то на ПЛИС.
Так как другая элементная база - умножители, сумматоры в отдельных микросхемах - уже вымерла.
Спасибо большое.
Подскажите пожалуйста как можно реализовать переменную полосу пропускания? Одна у меня будет от 300 до 3000 Гц, а вторая от 300 до большего значения.
Мои соображения: исходя из того, что кол-во коэффициентов и их значения изменятся нужно использовать другую микросхему ПЗУ для хранения этих самых коэффициентов, а также другое кол-во регистров сдвига для формирования линии задержки. Также изменения коснуться ещё многих элементов в схеме. Мне кажется этот способ далеко не самый эффективный и рациональный.
Заранее спасибо.
народ, помогите реализовать переменную полосу пропускания!..натолкните на правильную мысль или литературу..
petrov
May 11 2011, 08:46
Цитата(Kikky @ May 11 2011, 12:38)

народ, помогите реализовать переменную полосу пропускания!..натолкните на правильную мысль или литературу..
Например можно реализовать с помощью банка фильтров не критически семплированного. Начинать с автора P. P. Vaidyanathan. Может быть сложноват такой путь будет для бакалаврского проекта, впрочем всё от вас зависит.
bahurin
May 11 2011, 09:06
Цитата(Kikky @ May 11 2011, 11:38)

народ, помогите реализовать переменную полосу пропускания!..натолкните на правильную мысль или литературу..
Ну вы же все сами сказали надо подменять коэффициенты структура фильтра число линий задержек при этом не изменится только умножения будут на другие к-ты фильтра заранее просчитанные и сохраненные в пзу
2petrov, спасибо, но мне пока нужно что-то проще.
2bahurin, а как быть с частотой дискретизации?..я так понимаю, тактовый генератор может выдавать разную частоту в зависимости от какого-то условия?
анатолий
May 12 2011, 12:32
Цитата(Kikky @ May 11 2011, 11:38)

народ, помогите реализовать переменную полосу пропускания!..натолкните на правильную мысль или литературу..
Вот такой фильтр
H(z) = 1 - (z^-2 +b(1+a)z^-1 +a)/(1+b(1+a)z^-1 +az^-2)
- полосовой фильтр с центральной частотой fЗ такой, что b = cos(2Pi* fЗ),
с шириной полосы пропускания Δf такой, что
t = tg(Pi* Δf); a = (1-t)/(1+t).
Так что крутишь fз - меняешь настройку реально в пределах (0,05 - 0,45) частоты дискретизации,
крутишь а - меняешь добротность.
Спасибо, мне нужно как-то схемно реализовать это дело....мне кажется, что при изменении коэффициентов изменится только форма сигнала, это будет аналогично использованию другого окна, а вот кол-во регистров сдвига в линии задержки повлияет на ширину полосы пропускания...так ли это?
bahurin
May 16 2011, 06:59
Цитата(Kikky @ May 15 2011, 14:12)

Спасибо, мне нужно как-то схемно реализовать это дело....мне кажется, что при изменении коэффициентов изменится только форма сигнала, это будет аналогично использованию другого окна, а вот кол-во регистров сдвига в линии задержки повлияет на ширину полосы пропускания...так ли это?
Нет не так. Почитайте какую нить книгу по цифровой фильтрации. Есть понятие порядка фильтра который задается количеством коэффициентов и линий задержки, а есть понятие полосы пропускания фильтра, которая задается значением этих коэффициентов. Фильтр фиксированного порядка (с фиксированной структурой) может иметь произвольную полосу пропускания, которая будет зависеть от значения к-тов а не от их количества
mdmitry
May 16 2011, 09:12
Стоит помнить, что в рекурсивном фильтре изменение любого коэффициента рекурсивной части влияет на устойчивость фильтра.
анатолий
May 16 2011, 13:33
Цитата(mdmitry @ May 16 2011, 11:12)

Стоит помнить, что в рекурсивном фильтре изменение любого коэффициента рекурсивной части влияет на устойчивость фильтра.
Данного рекурсивного фильтра это не касается. Он построен на основе фазового фильтра, а он устойчив почти всегда.
Я то понимаю, что такое длина фильтра, но мне препод сказал, что кол-во регистров сдвига не обязательно такое же как кол-во коэффициентов в ких-фильтре. Сказал, что коэффициенты можно взять одни, а длина линии задержки разная должна быть. Чем больше задержка во времени(регистров сдвига), тем уже полоса пропускания и наоборот (я так понимаю связь через прямое и обратное преобразование Фурье)....и фильтр то у меня ких - значит нерекурсивный..
Книги читал, может он мне не так что рассказывает?..подскажите где эти моменты посмотреть можно пожалуйста, а то я уже сильно запутался..
подскажите пожалуйста где почитать о зависимости полосы пропускания от значений коэффициентов фильтра?...Вот например в Матлабе в fdatool когда задаёшь полосу пропускания шире или уже, то он на выходе выдаёт разные коэффициенты, но что на счёт линии задержки, это ведь нельзя контролировать в матлабе?...может кто знает где есть такая возможность?
Я понимаю, что изменения кол-ва коэффициентов изменит форму х-ки(крутизну спадов и т.д.), а вот как повлияет изменения кол-ва регистров сдвига?
Начните с чтения книг по цифровым фильтрам: Рабинер, Голд, Рейдер, Гольденберг и др.
bahurin
May 19 2011, 11:40
Цитата(Kikky @ May 18 2011, 21:17)

подскажите пожалуйста где почитать о зависимости полосы пропускания от значений коэффициентов фильтра?...Вот например в Матлабе в fdatool когда задаёшь полосу пропускания шире или уже, то он на выходе выдаёт разные коэффициенты, но что на счёт линии задержки, это ведь нельзя контролировать в матлабе?...может кто знает где есть такая возможность?
Я понимаю, что изменения кол-ва коэффициентов изменит форму х-ки(крутизну спадов и т.д.), а вот как повлияет изменения кол-ва регистров сдвига?
Есть понятие порядка фильтра которое связано с количеством коэффициентов. Порядок фильтра равен количеству линий задержки фильтра. Для ких фильтра порядок фильтра на единицу меньше количества коэффициентов. для расчета надо задать и полосу пропускания и порядок фильтра. Если матлаб вам вернул коэффициенты КИХ фильтра посчитайте их и порядок будет на 1 меньше. Для бих фильтра порядок как правило равен количеству к-тов знаменателя передаточной функции (к-ты "a", которые возвращает матлаб)
анатолий
May 19 2011, 13:06
Цитата(Kikky @ May 16 2011, 16:37)

Сказал, что коэффициенты можно взять одни, а длина линии задержки разная должна быть. Чем больше задержка во времени(регистров сдвига), тем уже полоса пропускания и наоборот (я так понимаю связь через прямое и обратное преобразование Фурье)....и фильтр то у меня ких - значит нерекурсивный..
Имеется в виду, если например, в КИХ - фильтре НЧ импульсную реакцию сжать вдвое,
то и частота среза увеличится вдвое.
Т.е. есть такой метод: имеется базовая импульсная реакция на фиксированную частоту,
а рабочая импульсная реакция (т.е. набор коєффициентов) получается ее интерполированием
для нужной частоты.
При этом действительно, если при интерполяции импульсная реакция сжимается,
то это значит, уменьшается число регистров сдвига, т.к. сжатая реакция дополняется нулями.
2TSerg, спасибо за книги.
2bahurin, это всё понятно.
2Анатолий, это то, что мне нужно!...вы не знаете где можно подробнее об этом методе почитать?..о том как осуществляется интерполяция базовой импульсной реакции и как это реализовать?
анатолий
May 20 2011, 09:04
Цитата(Kikky @ May 20 2011, 07:48)

2Анатолий, это то, что мне нужно!...вы не знаете где можно подробнее об этом методе почитать?..о том как осуществляется интерполяция базовой импульсной реакции и как это реализовать?
Ищите классика Константинидиса или ссылки на его методику пересчета АЧХ по базовой АЧХ.
Нашёл его книгу, но не нашёл в ней ничего на эту тему

...в поисковиках на эту методику тоже ссылок не обнаружил..может у кого есть в своих запасах?
bahurin
May 24 2011, 08:35
Цитата(Kikky @ May 22 2011, 15:42)

Нашёл его книгу, но не нашёл в ней ничего на эту тему

...в поисковиках на эту методику тоже ссылок не обнаружил..может у кого есть в своих запасах?
Если вам надо ких фнч на любую частоту среза то берете функцию h(t) = w(t*Fs)*sinc(pi*t*Fs)/(pi*t*Fs), Fs - частота дискретизации, w(t) - весовое окно и дискретизируете эту функцию с шагом 1/f0, f0 - частота среза. Если надо четное N - к-тов фильтра то дискретизируете N/2 в отрицательной области, N/2 в положительной чтобы фаза линейная оставалась. Где то так.
анатолий
May 24 2011, 10:44
Цитата(Kikky @ May 22 2011, 13:42)

Нашёл его книгу, но не нашёл в ней ничего на эту тему

См. "Частотные преобразования" , таблицу 5.1. на стр. 79.
2Анатолий, спасибо, но эти формулы предназначены для БИХ-фильтров.
2bahurin, я так понимаю, что после дискретизации этой функции я получу нужные коэффициенты фильтра?
bahurin
May 25 2011, 04:50
Цитата(Kikky @ May 24 2011, 19:19)

2bahurin, я так понимаю, что после дискретизации этой функции я получу нужные коэффициенты фильтра?
да вот пример на матлабе расчета полосового фильтра на заданную частоту с заданной полосой
Код
clear all;
Fs = 400; %частота дискретизации (Гц)
f0 = 100; %центральная частота фильтра (Гц)
band = 50; %полоса фильтра (Гц)
N = 256; %количество к-тов фильтра (число линий задержки равно N-1)
w = hamming(N)'; %окно хемминга
%моменты дискретизации для линейной ФЧХ
t = (-N/2+0.5):(N/2-0.5);
t = t*band/Fs;
h = w.*sin(pi*t)./(pi*t); %расчет ФНЧ c полосой band
h = 2*h/sum(h); %нормирую
h=h.*cos(2*pi*t*f0/band); %переношу на частоту f0
%в массиве h лежат к-ты полосового фильтра, рассчитанного на частоту f0 с полосой band
% НЕ меняя структуры фильтра (не меняя N) можно расчитать фильтр на любую частоту с любой полосой
%(разумеется чтобы он укладывался от 0 до Fs/2)
% построим АЧХ фильтра при помощи fft
f = (0:8*N-1)*Fs/(8*N);
H = 20*log10(abs(fft([h, zeros(1,7*N)])));
subplot(211), stem(1:N,h), grid;
subplot(212), plot(f,H), grid, axis([0,Fs/2,-140,10]);
анатолий
May 25 2011, 07:41
Цитата(Kikky @ May 24 2011, 18:19)

2Анатолий, спасибо, но эти формулы предназначены для БИХ-фильтров.
Значит, на более общий случай.
БИХ-фильтр задается передаточной характеристикой из числителя и знаменателя.
Числитель - то, что касается КИХ-фильтра.
Знаменатель - то, что отличает БИХ от КИХ.
Ну, взять то, что получается в числителе - и будут искомые коэффициенты.
2bahurin, спасибо Вам огромное, этот алгоритм мне очень помог, препод одобрил. Только вот сказал, что использовать его можно только если есть теоретическое обоснование...на счёт используемого окна - понятно. Подскажите пожалуйста, какие Вы формулы использовали для дискретизации, расчета ФНЧ и для переноса на заданную частоту?
bahurin
May 31 2011, 10:34
Цитата(Kikky @ May 31 2011, 12:33)

2bahurin, спасибо Вам огромное, этот алгоритм мне очень помог, препод одобрил. Только вот сказал, что использовать его можно только если есть теоретическое обоснование...на счёт используемого окна - понятно. Подскажите пожалуйста, какие Вы формулы использовали для дискретизации, расчета ФНЧ и для переноса на заданную частоту?
Все формулы в листинге. sin(x)/x - это импульсная характеристика фнч.
h=h.*cos(2*pi*t*f0/band); - перенос на частоту f0
Вот например, формула переноса на частоту f0, она у Вас просто в голове родилась?..или может получилась на основе каких-то теорем или формул?
bahurin
Jun 1 2011, 06:16
Цитата(Kikky @ May 31 2011, 14:44)

Вот например, формула переноса на частоту f0, она у Вас просто в голове родилась?..или может получилась на основе каких-то теорем или формул?
Есть такая теорема об амплитудной модуляции, которая говорит что умножение сигнала на синус или косинус некоторой частоты f0 переносит спектр сигнала на эту частоту. В данном случае спектр это частотная характеристика фильтра частота f0 - нужная центральная частота полосового фильтра. Так из фнч получился полосовой фильтр. Ну разумеется еще надо сохранить линейную фчх нашего фильтра, для этого импульсная характеристика должна подходить под один из 4-х типов в зависимости от количества к-тов импульсной характеристики, я выбрал первый тип, поэтому косинус. Более подробно читайте в книжках.
thermit
Jun 1 2011, 08:30
Теорема о запаздывании.
Грубо:
Сдвиг во времени - умножение на комплексную экспоненту в частотной области.
Сдвиг по частоте - умножение во времени на комплексную экспоненту.
Какую часть результата умножения брать (вещественную или мнимую) и начальную фазу экспоненты определяют требования к линейности ФЧХ (постоянству ГВЗ).
Спасибо большое, с этим вроде бы разобрался, ещё есть вопрос о выборе АЦП: насчет быстродействия понятно, а вот на счёт разрядности?...где-то прочитал, что разрядность зависит от допустимого уровня шума квантования...а не зависит ли от длины фильтра?..у меня длина фильтра - 63 , значит АЦП должен выдавать на выходе 64 отсчёта?...и сдвиговые регистры нужны 64-разрядные?
немного разобрался, 8-разрядный двоичный АЦП способен на выходе выдать до 256 отсчетов, значит мне такой подходит. А 8-разрядные двоичные ПЗУ могут хранить до 256 значений коэффициентов?
подскажите что значит: "8-разрядное ПЗУ ёмкостью 256 бит (32x8)"? я имею ввиду 32x8..
bahurin
Jun 3 2011, 10:01
Цитата(Kikky @ Jun 3 2011, 12:11)

немного разобрался, 8-разрядный двоичный АЦП способен на выходе выдать до 256 отсчетов, значит мне такой подходит. А 8-разрядные двоичные ПЗУ могут хранить до 256 значений коэффициентов?
подскажите что значит: "8-разрядное ПЗУ ёмкостью 256 бит (32x8)"? я имею ввиду 32x8..
эх молодежь молодежь... 8-разрядный двоичный АЦП способен на выходе выдать столько отсчетов сколько нужно (хоть бесконечное количество) но каждый отсчет будет представлен одним байтом (8 бит)
пзу емкостью 256 бит может запомнить не более 32 байт информации
Значит я могу использовать 8-разрядный АЦП и ПЗУ ёмкостью 512 бит(для хранения 64 коэффициентов)..?
bahurin
Jun 3 2011, 14:26
Цитата(Kikky @ Jun 3 2011, 14:53)

Значит я могу использовать 8-разрядный АЦП и ПЗУ ёмкостью 512 бит(для хранения 64 коэффициентов)..?
а причем тут ацп? Вам надо к-ты фильтра хранить?
ну да, ПЗУ нужно под 64 коэффициента, а сдвиговые регистры под 64 отсчёта? получается одинаковой розрядности?...или одно от другого не зависит?
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.