ZED 0 12 января, 2011 Опубликовано 12 января, 2011 · Жалоба корректировка параметров фильтра происходит в vhdl коде Именно так! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xponuk 0 13 января, 2011 Опубликовано 13 января, 2011 · Жалоба Тогда последний вопрос) Собственно если мне нужно получить полосовой фильтр, то vhdl код тоже надо подкорректировать?)) А потом туда загонять уже расчитаные коэффициенты из матлаба? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ZED 0 13 января, 2011 Опубликовано 13 января, 2011 · Жалоба Собственно если мне нужно получить полосовой фильтр, то vhdl код тоже надо подкорректировать?)) А потом туда загонять уже расчитаные коэффициенты из матлаба? Зачем? Изменяй m-файл! Я же тебе даже примерно написал, что нужно изменять всообщении. И нажимай Run. Далее пихай VHDL-файл в свой проект, предварительно протестив. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xponuk 0 13 января, 2011 Опубликовано 13 января, 2011 · Жалоба С матлабом все нормально) Переписал согласно форуму, чтоб было для полосового фильтра, параметры я подобрал для фильтра полосового, ачх получил требуемое) Беда в том что он не создает потом vhdl файл. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ZED 0 14 января, 2011 Опубликовано 14 января, 2011 · Жалоба Беда в том что он не создает потом vhdl файл. Как вы это определили? Matlab в командном окне выводит какое-нибудь сообщение? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xponuk 0 17 января, 2011 Опубликовано 17 января, 2011 · Жалоба ??? No appropriate method, property, or field Numerator for class dfilt.df1sos. Error in ==> Filter_FIR at 58 b_q = round(Hd.Numerator*2^(coef_size-1)); Собственно эту ошибку выдает. Хотя ачх строит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xponuk 0 19 января, 2011 Опубликовано 19 января, 2011 · Жалоба Всем спасибо! Разобрался заработало все отлично) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bArtwin 0 29 июля, 2014 Опубликовано 29 июля, 2014 · Жалоба Доброго времени суток. Написал тестбенч для бих фильтра,а на выходе фильтра 0. Может есть у вас свой тестбенч? Короче, прилагаю свои реализации БИХ и КИХ фильтров. Там два файла Matlab/ В каждом из них сначала задаются параметры фильтра, потом вычисляются коэффициенты, далее генерируется VHDL-код. Выходной файл имеет название Filter.vhdl Откроете его и посмотрите как все реализовано. Замечание: БИХ-фильтр реализован в виде секций 2-ого порядка. Еще одно важное замечание, фильтры не полосовые, а ФНЧ! Чтобы получить полосовой фильтр, нужно изменить Matlab'овский файл, а именно его начало на: clear all clc Fs = 500*1000; % Частота дискретизации data_size = 16; % Разрядность данных coef_size = 16; % Разрядность коэффициентов Fstop1 = 5*10; % Начало полосы задерживания Fpass1 = 1*1000; % Начало полосы пропускания Fpass2 = 50*1000; % Конец полосы пропускания Fstop2 = 51*1000; % Конец полосы задерживания Astop1 = 60; % Ослабление в полосе задерживания (дБ) Apass = 1; % Уровень пульсаций в полосе пропускания (дБ) Astop2 = 60; % Ослабление в полосе задерживания (дБ) match = 'both'; % Оптимизация по уровню пульсаций (Оптимизировать в полосе пропускания и в полосе задерживания) % Синтез Фильтра: h = fdesign.bandpass(Fstop1, Fpass1, Fpass2, Fstop2, Astop1, Apass, Astop2, Fs); Hd = design(h, 'ellip', 'MatchExactly', match); % Преобразование в секции второго порядка: Hd = convert(Hd, 'df1sos'); % Установка свойств арифметики с фиксированной запятой set(Hd, 'Arithmetic', 'fixed', ... 'CoeffWordLength', coef_size, ... 'CoeffAutoScale', true, ... 'ProductMode', 'Fullprecision', ... 'AccumMode', 'KeepMSB', ... 'AccumWordLength', 40, ... 'NumStateWordLength', data_size, ... 'DenStateWordLength', data_size, ... 'NumStateFracLength', data_size - 1, ... 'DenStateFracLength', data_size - 1, ... 'InputWordLength', data_size, ... 'inputFracLength', data_size - 1, ... 'OutputWordLength', data_size, ... 'OutputMode', 'AvoidOverflow', ... 'signed', true, ... 'RoundMode', 'convergent', ... 'OverflowMode', 'Saturate', ... 'CastBeforeSum', false); denormalize(Hd); %% АЧХ фильтра [b_sos, a_sos] = sos2tf(Hd.sosMatrix, Hd.ScaleValues); % Преобразование секций второго порядка в коэффициенты числителя и знаменателя [h_sos, f_sos] = freqz(b_sos, a_sos, 2048); % Построение АЧХ фильтра по коффициентам числителя и знаменателя Важно! Мои примеры не претендуют на роль единственно верных. Просто мне особо никто не бодсказывал и до всего этого я дошел сам, ковыряясь с примерами от Simulink'a. В итоге получилось это. Надо сказать, что моя реализация работает быстрее, чем реализация от Simulink. Если кто-то сделал лучше, пусть не только заявит об этом, но и приведет пример своей реализации. Надеюсь Вам будет полезна моя работа, успехов! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться