реклама на сайте
подробности

 
 
> Как с помощью DSP Builder через компонент SingleRateFIR реализовать ФНЧ, освоение Simulink DSP Builder
adddd_f
сообщение Sep 29 2011, 06:13
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 12-07-09
Пользователь №: 51 162



Как с помощью 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


Сообщение отредактировал adddd_f - Sep 29 2011, 06:15
Прикрепленные файлы
Прикрепленный файл  filtr_low_pass.zip ( 1.43 мегабайт ) Кол-во скачиваний: 16
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
hobgoblin
сообщение Oct 1 2011, 08:22
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 202
Регистрация: 2-10-06
Из: Петербург
Пользователь №: 20 881



С 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.

Go to the top of the page
 
+Quote Post
adddd_f
сообщение Oct 3 2011, 09:36
Сообщение #3





Группа: Новичок
Сообщений: 3
Регистрация: 12-07-09
Пользователь №: 51 162



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

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

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

Но почему-то выходные данные
ast_source_data - имеют 32 бита,

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

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

Go to the top of the page
 
+Quote Post
hobgoblin
сообщение Oct 3 2011, 10:05
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 202
Регистрация: 2-10-06
Из: Петербург
Пользователь №: 20 881



Цитата
Сейчас скомпилировал 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, и посмотрев результаты в симуляторе.
Go to the top of the page
 
+Quote Post
adddd_f
сообщение Oct 5 2011, 05:28
Сообщение #5





Группа: Новичок
Сообщений: 3
Регистрация: 12-07-09
Пользователь №: 51 162



Цитата(hobgoblin @ Oct 3 2011, 14:05) *
В последней версии FIR Compiler II можно задавать количество отбрасываемых разрядов слева и справа из Mega Wizard. Проще всего определить количество разрядов, которые необходимо отбросить слева, подав на фильтр сигнал, который преедставляет собой ступенчатое изменение из -1 в +1, и посмотрев результаты в симуляторе.


Спасибо. Буду пробовать.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 08:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01379 секунд с 7
ELECTRONIX ©2004-2016