Dimidrol 0 March 13, 2008 Posted March 13, 2008 · Report post Здравствуйте! Возникла проблема при применении корегенератора MAC FIR Filter 5.1 от Xilinx. После фильтрации возникают какие-то нелинейные эффекты: . Не могу понять в чем дело. Коэффициенты генерил в MATLAB. Входной сигнал представляет собой низкочастотный синус перемежающийся нулями с частотой Fдискр/2. Нужно его загладить ФНЧ с децимацией в 4 раза. Входной сигнал представлен в дополнительном коде. Настройки фильтра: # BEGIN Project Options SET flowvendor = Foundation_iSE SET vhdlsim = True SET verilogsim = True SET workingdirectory = C:\filters SET speedgrade = -4 SET simulationfiles = Behavioral SET asysymbol = True SET addpads = False SET device = xc3s2000 SET implementationfiletype = Edif SET busformat = BusFormatAngleBracketNotRipped SET foundationsym = False SET package = fg456 SET createndf = False SET designentry = VHDL SET devicefamily = spartan3 SET formalverification = False SET removerpms = False # END Project Options # BEGIN Select SELECT MAC_FIR_Filter family Xilinx,_Inc. 5.1 # END Select # BEGIN Parameters CSET create_rpm=False CSET filter_type=Polyphase_Decimator CSET coefficient_file=C:\Filters\f4\f32_eq_7m_14m.coe CSET input_sample_rate=112 CSET coefficient_buffer_type=Block_Memory CSET taps=33 CSET performance_optimization=Maximum_Speed CSET impulse_response=Symmetric CSET data_width=12 CSET decimation_factor=4 CSET coefficient_type=Signed CSET system_clock_rate=112 CSET number_of_coefficient_sets=1 CSET registered_output=True CSET component_name=f32_eq_7m_14m CSET interpolation_factor=1 CSET coefficient_width=16 CSET channels=1 CSET data_buffer_type=Block_RAM CSET data_type=Signed # END Parameters GENERATE Интересно то, что при использовании корки Distributed Arithmetic FIR Filter 9.0 на выходе фильтра при всех остальных одинаковых условиях появляется нужный сигнал (красивый симметричный синус). И это настораживает. Может быть уже кто-нибудь сталкивалься с такой проблемой? Quote Share this post Link to post Share on other sites More sharing options...
kuzis 0 March 13, 2008 Posted March 13, 2008 · Report post Здравствуйте! Возникла проблема при применении корегенератора MAC FIR Filter 5.1 от Xilinx. После фильтрации возникают какие-то нелинейные эффекты: . Не могу понять в чем дело. Коэффициенты генерил в MATLAB. Входной сигнал представляет собой низкочастотный синус перемежающийся нулями с частотой Fдискр/2. Нужно его загладить ФНЧ с децимацией в 4 раза. Входной сигнал представлен в дополнительном коде. Настройки фильтра: # BEGIN Project Options SET flowvendor = Foundation_iSE SET vhdlsim = True SET verilogsim = True SET workingdirectory = C:\filters SET speedgrade = -4 SET simulationfiles = Behavioral SET asysymbol = True SET addpads = False SET device = xc3s2000 SET implementationfiletype = Edif SET busformat = BusFormatAngleBracketNotRipped SET foundationsym = False SET package = fg456 SET createndf = False SET designentry = VHDL SET devicefamily = spartan3 SET formalverification = False SET removerpms = False # END Project Options # BEGIN Select SELECT MAC_FIR_Filter family Xilinx,_Inc. 5.1 # END Select # BEGIN Parameters CSET create_rpm=False CSET filter_type=Polyphase_Decimator CSET coefficient_file=C:\Filters\f4\f32_eq_7m_14m.coe CSET input_sample_rate=112 CSET coefficient_buffer_type=Block_Memory CSET taps=33 CSET performance_optimization=Maximum_Speed CSET impulse_response=Symmetric CSET data_width=12 CSET decimation_factor=4 CSET coefficient_type=Signed CSET system_clock_rate=112 CSET number_of_coefficient_sets=1 CSET registered_output=True CSET component_name=f32_eq_7m_14m CSET interpolation_factor=1 CSET coefficient_width=16 CSET channels=1 CSET data_buffer_type=Block_RAM CSET data_type=Signed # END Parameters GENERATE Интересно то, что при использовании корки Distributed Arithmetic FIR Filter 9.0 на выходе фильтра при всех остальных одинаковых условиях появляется нужный сигнал (красивый симметричный синус). И это настораживает. Может быть уже кто-нибудь сталкивалься с такой проблемой? Пришли проект кора и файл с коэффициентами. Мож помогу Quote Share this post Link to post Share on other sites More sharing options...
Dimidrol 0 March 13, 2008 Posted March 13, 2008 · Report post Пришли проект кора и файл с коэффициентами. Мож помогу Здесь файлы проекта Coregen'a. filt.rar Quote Share this post Link to post Share on other sites More sharing options...
Dimidrol 0 March 14, 2008 Posted March 14, 2008 · Report post Да.... чувствую что никто с таким не сталкивался. А мне по зарез нужен фильтр 112 МГц с децимацией в 4 раза на Spartan3_2000-4. Может кто что посоветует. Вот кстати коэффициенты фильтра, забыл включить в предыдущий пост. f32_eq_7m_14m.rar Quote Share this post Link to post Share on other sites More sharing options...
Dimidrol 0 March 15, 2008 Posted March 15, 2008 · Report post :( Тогда я задам вопрос по-другому... У кого-нибудь вообще работала эта корка, или я один такой, наблюдаю нелинейные эффекты на выходе линейного фильтра? Quote Share this post Link to post Share on other sites More sharing options...
AsJohnAs 0 March 16, 2008 Posted March 16, 2008 · Report post Вообще нелинейные эффекты при фильтрации можно получить либо при переполнении, либо когда в линию задержу данные поступают неравномерно. Тут скорее всего как раз последнее. Т.е. сигнал ND как-то неправельно обслуживается. Я пользовался всеми фильтрами Coregen - они все работают и работают именно на тех частотах которые заявлены. Очень хорошие фильры. Quote Share this post Link to post Share on other sites More sharing options...
Dimidrol 0 March 16, 2008 Posted March 16, 2008 · Report post Вообще нелинейные эффекты при фильтрации можно получить либо при переполнении, либо когда в линию задержу данные поступают неравномерно. Тут скорее всего как раз последнее. Т.е. сигнал ND как-то неправельно обслуживается. Я пользовался всеми фильтрами Coregen - они все работают и работают именно на тех частотах которые заявлены. Очень хорошие фильры. Думаю вы правы. Сегодня я уже подумал, что мой фильтр работает на пределе возможностей, а именно, системная частота и частота входных выборок у меня совпадает(112МГц), а сигнал ND вообще всегда в единице. Уверен здесь самое разумное будет умножить частоту в 1,5-2 раза и регулировать поступление выборок сигналом ND. Завтра приду на работу попробую. Quote Share this post Link to post Share on other sites More sharing options...
AsJohnAs 0 March 16, 2008 Posted March 16, 2008 · Report post Нет. Я имел ввиду совсем другое. 112МГц на 3-м спартане - нормально. То что сигнал ND в единице тоже нормально - делал такое. Похоже что у вас фильтр не считает все умножения за такт (не так сконфигурирован фильтр при генерации) Ну и проверяйте временные диаграммы. У фирмы Xilinx бывают проблемы, но они не в фильтрах :) Quote Share this post Link to post Share on other sites More sharing options...
kuzis 0 March 17, 2008 Posted March 17, 2008 · Report post Здесь файлы проекта Coregen'a. filt.rar Посмотрел. Похоже действительно какой-то глюк. Вообще, сильно в этом коре не разбирался, но мне кажется странно, что для MAC фильтра частота дискретизации входного сигнала, может быть равна частоте синхры. Если например указать, что на вход данные идут с частотой в 100 раз меньше, то все работает. А так - нет. Рекомендую использовать FIR Compiler. Он все делает правильно. Quote Share this post Link to post Share on other sites More sharing options...
Singer 0 March 19, 2008 Posted March 19, 2008 · Report post Посмотрел. Похоже действительно какой-то глюк. Вообще, сильно в этом коре не разбирался, но мне кажется странно, что для MAC фильтра частота дискретизации входного сигнала, может быть равна частоте синхры. Если например указать, что на вход данные идут с частотой в 100 раз меньше, то все работает. А так - нет. Рекомендую использовать FIR Compiler. Он все делает правильно. Сталкивался с этим. Почему то это ядро (MAC FIR) не хочет глотать данные на полной скорости - какой-то баг или возможно фича - ядро построено так, что требуются такты передышки - на симуляции проскакивают неопределенности на выходе, в железе тоже не работает. Если использовать ядро FIR Compiler последних версий CoreGena и собрать там аналогичный фильтр, то все работает корректно и полнофункционально. Quote Share this post Link to post Share on other sites More sharing options...
Dimidrol 0 March 20, 2008 Posted March 20, 2008 · Report post Всем спасибо. Решил все-таки не использовать MAC FIR. Добился требуемых для моей задачи характеристик с помощью ядра Distributed Arithmetic FIR Filter 9.0. К сожалению не имею возможности использовать FIR Compiler для Spartan3 2000, но буду иметь ввиду на будующее. Пытался умножать частоту в два раза для MAC FIR, в моем проекте это не заработало, сигнал на выходе получился волосатый. Возможно нужно было задать констрэйнты, для частоты 224МГц на третьем спартане думаю это существенно, но не было времени разобраться. Quote Share this post Link to post Share on other sites More sharing options...