adddd_f 0 29 сентября, 2011 Опубликовано 29 сентября, 2011 (изменено) · Жалоба Как с помощью 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 Изменено 29 сентября, 2011 пользователем adddd_f Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hobgoblin 0 1 октября, 2011 Опубликовано 1 октября, 2011 · Жалоба С 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adddd_f 0 3 октября, 2011 Опубликовано 3 октября, 2011 · Жалоба Спасибо за Ваши ответы. Сейчас скомпилировал mega core FIR Compiler II задал что входные данные имеют разрядность 12 бит, количество каналов 1. После компиляции mega core ast_sink_data - имеют 12 бит переключатель на каналы отсутствует. Но почему-то выходные данные ast_source_data - имеют 32 бита, Может это сделано для более высокой точности после умножения на коэффициенты? Как это округлять до 12 бит? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hobgoblin 0 3 октября, 2011 Опубликовано 3 октября, 2011 · Жалоба Сейчас скомпилировал 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, и посмотрев результаты в симуляторе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adddd_f 0 5 октября, 2011 Опубликовано 5 октября, 2011 · Жалоба В последней версии FIR Compiler II можно задавать количество отбрасываемых разрядов слева и справа из Mega Wizard. Проще всего определить количество разрядов, которые необходимо отбросить слева, подав на фильтр сигнал, который преедставляет собой ступенчатое изменение из -1 в +1, и посмотрев результаты в симуляторе. Спасибо. Буду пробовать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться