Jump to content
    

MAC FIR Filter 5.1

Здравствуйте!

 

Возникла проблема при применении корегенератора MAC FIR Filter 5.1 от Xilinx. После фильтрации возникают какие-то нелинейные эффекты: post-26933-1205405030_thumb.jpg.

Не могу понять в чем дело. Коэффициенты генерил в 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 на выходе фильтра при всех остальных одинаковых условиях появляется нужный сигнал (красивый симметричный синус). И это настораживает.

 

Может быть уже кто-нибудь сталкивалься с такой проблемой?

Share this post


Link to post
Share on other sites

Здравствуйте!

 

Возникла проблема при применении корегенератора MAC FIR Filter 5.1 от Xilinx. После фильтрации возникают какие-то нелинейные эффекты: post-26933-1205405030_thumb.jpg.

Не могу понять в чем дело. Коэффициенты генерил в 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 на выходе фильтра при всех остальных одинаковых условиях появляется нужный сигнал (красивый симметричный синус). И это настораживает.

 

Может быть уже кто-нибудь сталкивалься с такой проблемой?

 

Пришли проект кора и файл с коэффициентами. Мож помогу

Share this post


Link to post
Share on other sites

Да.... чувствую что никто с таким не сталкивался. А мне по зарез нужен фильтр 112 МГц с децимацией в 4 раза на Spartan3_2000-4. Может кто что посоветует.

 

Вот кстати коэффициенты фильтра, забыл включить в предыдущий пост.

 

f32_eq_7m_14m.rar

Share this post


Link to post
Share on other sites

:( Тогда я задам вопрос по-другому... У кого-нибудь вообще работала эта корка, или я один такой, наблюдаю нелинейные эффекты на выходе линейного фильтра?

Share this post


Link to post
Share on other sites

Вообще нелинейные эффекты при фильтрации можно получить либо при переполнении, либо когда в линию задержу данные поступают неравномерно. Тут скорее всего как раз последнее. Т.е. сигнал ND как-то неправельно обслуживается.

Я пользовался всеми фильтрами Coregen - они все работают и работают именно на тех частотах которые заявлены. Очень хорошие фильры.

Share this post


Link to post
Share on other sites

Вообще нелинейные эффекты при фильтрации можно получить либо при переполнении, либо когда в линию задержу данные поступают неравномерно. Тут скорее всего как раз последнее. Т.е. сигнал ND как-то неправельно обслуживается.

Я пользовался всеми фильтрами Coregen - они все работают и работают именно на тех частотах которые заявлены. Очень хорошие фильры.

 

Думаю вы правы. Сегодня я уже подумал, что мой фильтр работает на пределе возможностей, а именно, системная частота и частота входных выборок у меня совпадает(112МГц), а сигнал ND вообще всегда в единице. Уверен здесь самое разумное будет умножить частоту в 1,5-2 раза и регулировать поступление выборок сигналом ND. Завтра приду на работу попробую.

Share this post


Link to post
Share on other sites

Нет. Я имел ввиду совсем другое. 112МГц на 3-м спартане - нормально. То что сигнал ND в единице тоже нормально - делал такое. Похоже что у вас фильтр не считает все умножения за такт (не так сконфигурирован фильтр при генерации)

Ну и проверяйте временные диаграммы. У фирмы Xilinx бывают проблемы, но они не в фильтрах :)

Share this post


Link to post
Share on other sites

Здесь файлы проекта Coregen'a.

 

filt.rar

 

Посмотрел. Похоже действительно какой-то глюк. Вообще, сильно в этом коре не разбирался, но мне кажется странно, что для MAC фильтра частота дискретизации входного сигнала, может быть равна частоте синхры. Если например указать, что на вход данные идут с частотой в 100 раз меньше, то все работает. А так - нет. Рекомендую использовать FIR Compiler. Он все делает правильно.

Share this post


Link to post
Share on other sites

Посмотрел. Похоже действительно какой-то глюк. Вообще, сильно в этом коре не разбирался, но мне кажется странно, что для MAC фильтра частота дискретизации входного сигнала, может быть равна частоте синхры. Если например указать, что на вход данные идут с частотой в 100 раз меньше, то все работает. А так - нет. Рекомендую использовать FIR Compiler. Он все делает правильно.

 

Сталкивался с этим. Почему то это ядро (MAC FIR) не хочет глотать данные на полной скорости - какой-то баг или возможно фича - ядро построено так, что требуются такты передышки - на симуляции проскакивают неопределенности на выходе, в железе тоже не работает. Если использовать ядро FIR Compiler последних версий CoreGena и собрать там аналогичный фильтр, то все работает корректно и полнофункционально.

Share this post


Link to post
Share on other sites

Всем спасибо. Решил все-таки не использовать MAC FIR. Добился требуемых для моей задачи характеристик с помощью ядра Distributed Arithmetic FIR Filter 9.0.

 

К сожалению не имею возможности использовать FIR Compiler для Spartan3 2000, но буду иметь ввиду на будующее.

 

Пытался умножать частоту в два раза для MAC FIR, в моем проекте это не заработало, сигнал на выходе получился волосатый. Возможно нужно было задать констрэйнты, для частоты 224МГц на третьем спартане думаю это существенно, но не было времени разобраться.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...