Перейти к содержанию
    

Как с помощью DSP Builder через компонент SingleRateFIR реализовать ФНЧ

Как с помощью DSP Builder через компонент SingleRateFIR реализовать ФНЧ

 

Fдискретизации = 5e5 Hz

Fpass = 10.5e3 Hz

Fstop = 12e3 Hz

Apass = 1 dB

Astop = 20 dB

//--------------

Вопросы по компоненту SingleRateFIR в библиотеке

(Altera DSP Builder Advansed Blockset->Filters)

 

Параметр: Number of channels

Specifies the number of unique channels to process.

Вопрос : Для чего нужен этот параметр. Зачем нужны каналы в фильтре и как они связаны с параметрами фильтра, от чего зависят?

 

//-------

Параметр: Coefficients

You can specify the filter coefficients using a Simulink fixed-point object fi(0). The data type of the fixed-point object determines the width and format of the coefficients. The length of the array determines the length of the filter. For example, fi(fir1(49, 0.3),1,18,19)

 

функция Matlab a = fi(v,s,w,f) returns a fixed-point object with value v, Signed property value s, word length w, and fraction length f.

 

Вопрос : word length w - длина слова, если 18, то это означает 18 цифр до запятой?

fraction length f - длина плавающей части, если 19 то это означает 19 цифр после запятой?

 

//-------

 

функция Matlab b = fir1(n,Wn) returns row vector b containing the n+1 coefficients of an order n lowpass FIR filter. This is a Hamming-window based, linear-phase filter with normalized cutoff frequency Wn. The output filter coefficients, b, are ordered in descending powers of z.

 

Wn is a number between 0 and 1, where 1 corresponds to the Nyquist frequency.

Wn - Nyquist frequency lowpass FIR filter

Вопрос : Как расчитать Wn - правильно ли я понимаю Wn = Fstop/(Fдискретизации/2)

Что такое нормализированная частота и как ее расчитывать?

 

//-------

Пробовал реализовывать по примеру demo_firs

 

Не понятно для компонента компонент SingleRateFIR

 

как рассчитывать входной сигнал V

в примере [ones(1,ChanCycleCount) zeros(1,Period-ChanCycleCount)]

 

и входной сигнал C

в примере [0:ChanCycleCount-1 zeros(1,Period-ChanCycleCount)]

 

Если есть свободное время подскажите пожалуйста. Я в этом новичек и в теории цифровой обработки не очень разбираюсь.

 

Привожу мою программу на Simulink DspBuilder

filtr_low_pass.zip

Изменено пользователем adddd_f

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С DSP-Builder не работал тыщу лет и у меня он сейчас не установлен, но кое по каким вопросам ответить наверно смогу.

 

 

Параметр: Number of channels

Specifies the number of unique channels to process.

Вопрос : Для чего нужен этот параметр. Зачем нужны каналы в фильтре и как они связаны с параметрами фильтра, от чего зависят?

 

Сдается, что аналогично альтеровскому ядру FIR Compiler, вы можете запустить фильтр на большей частоте, и использовать его для обработки нескольких мультиплексированных во времени потоков данных (каналов). Например, если у Вас частота работы FPGA в 10 раз больше частоты следования данных, то Вы можете обработать при помощи одного и того же железа до 10 мультиплексированных во времени потоков.

 

 

//-------

Параметр: Coefficients

You can specify the filter coefficients using a Simulink fixed-point object fi(0). The data type of the fixed-point object determines the width and format of the coefficients. The length of the array determines the length of the filter. For example, fi(fir1(49, 0.3),1,18,19)

 

функция Matlab a = fi(v,s,w,f) returns a fixed-point object with value v, Signed property value s, word length w, and fraction length f.

 

Вопрос : word length w - длина слова, если 18, то это означает 18 цифр до запятой?

fraction length f - длина плавающей части, если 19 то это означает 19 цифр после запятой?

 

//-------

 

Нет w - общее количество разрядов (в данном случае 18) , f - вес младшего разряда (в данном случае 2^-19)

 

функция Matlab b = fir1(n,Wn) returns row vector b containing the n+1 coefficients of an order n lowpass FIR filter. This is a Hamming-window based, linear-phase filter with normalized cutoff frequency Wn. The output filter coefficients, b, are ordered in descending powers of z.

 

Wn is a number between 0 and 1, where 1 corresponds to the Nyquist frequency.

Wn - Nyquist frequency lowpass FIR filter

Вопрос : Как расчитать Wn - правильно ли я понимаю Wn = Fstop/(Fдискретизации/2)

Что такое нормализированная частота и как ее расчитывать?

 

Вы понимаете абсолютно правильно. Все частоты фильтра (в случае функции fir1 - частота среза) задаются через нормированные (к Найквисту) единицы от 0 до 1.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за Ваши ответы.

 

Сейчас скомпилировал mega core FIR Compiler II задал что входные данные имеют разрядность 12 бит, количество каналов 1.

После компиляции mega core

ast_sink_data - имеют 12 бит

 

переключатель на каналы отсутствует.

 

Но почему-то выходные данные

ast_source_data - имеют 32 бита,

 

Может это сделано для более высокой точности после умножения на коэффициенты?

 

Как это округлять до 12 бит?

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сейчас скомпилировал mega core FIR Compiler II задал что входные данные имеют разрядность 12 бит, количество каналов 1.

После компиляции mega core

ast_sink_data - имеют 12 бит

 

переключатель на каналы отсутствует.

 

Но почему-то выходные данные

ast_source_data - имеют 32 бита,

 

Может это сделано для более высокой точности после умножения на коэффициенты?

 

Если у Вас данные идут в формате (1,12,11), а коэффициенты, например, имеют формат (1,16,15), то дробная часть результата будет иметь разрядность 26 бит. Тут надо быть осторожным, поскольку Mega Wizard при определенных настройках выбирает разрядность дробной части коэффициентов автоматически, и, например, если все коэффициенты меньше 0.25, то вместо формата (1,16,15), коэффициенты будут преобразованы в формат (1,16,17). Соответственно изменится и разрядность дробной части в результате.

 

Количество дополнительных разрядов слева определяется порядком фильтра, поскольку на каждой стадии сложения для защиты от переполнения добавляется один дополнительный разряд.

 

Как это округлять до 12 бит?

В последней версии FIR Compiler II можно задавать количество отбрасываемых разрядов слева и справа из Mega Wizard. Проще всего определить количество разрядов, которые необходимо отбросить слева, подав на фильтр сигнал, который преедставляет собой ступенчатое изменение из -1 в +1, и посмотрев результаты в симуляторе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В последней версии FIR Compiler II можно задавать количество отбрасываемых разрядов слева и справа из Mega Wizard. Проще всего определить количество разрядов, которые необходимо отбросить слева, подав на фильтр сигнал, который преедставляет собой ступенчатое изменение из -1 в +1, и посмотрев результаты в симуляторе.

 

Спасибо. Буду пробовать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...