Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Кора CIC Compiler в ISE на 6-м Спартане
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
евгенийкочин
Хочу с помощью данной коры выполнить децимацию сигнала. Возник следующий вопрос: сгенерил агрегат со следующими параметрами:
Filter Type: Decimation
Number of stages: 3
Delay: 1
Channels:1
Sample Rate Change: Fixed
Rate Supported: 4
Input Sample Frequency: 0.001
Clock Frequency:200
Input Data Width: 8
Output Data Width: 14
Quantization Mode: Full Precision
Latency: 11
Bits Per Stage: 14,14,14,14,14,14
Подаю на неё константу, к примеру 10000001, на выходе получаю 11100000010000, как я понял биты с 4-го по 11-ый т.е. 10000001 это и есть константа которую я подаю,, что представляют из себя остальные биты?
Timmy
Цитата(евгенийкочин @ Jun 18 2012, 14:13) *
Подаю на неё константу, к примеру 10000001, на выходе получаю 11100000010000, как я понял биты с 4-го по 11-ый т.е. 10000001 это и есть константа которую я подаю,, что представляют из себя остальные биты?

Выход должен быть произведением входа на величину усиления фильтра.
евгенийкочин
Но когда я создавал фильтр в визарде, нигде коэффициент усиления я не видел
DevL
на выходе - это уже после прохода всех stages и по сигналу READY/RDY?

вообще, я бы смотрел тут для как бы единственного и оригинального описания по расширению бит,
как бы сейчас - filter gain

смотреть
Output Width and Gain
из
http://www.xilinx.com/support/documentatio...piler_ds613.pdf
евгенийкочин
Это что же получается?
Цитата
When the output width is equal to the maximum register width, the core outputs the full precision result and the magnitude of the core output reflects the filter gain.

У меня на выходе моя константа и коэффициент усиления?
DevL
насколько я себе представляю - СIC, это interpolator or decimator ( вообщем изменение частоты/rate change )
тут как бы нет совсем явного усиления/ослабления при изменении частоты,

однако важно понимать что, в силу того, что CIC имеет low pass frequency characteristics - кое что по сигналу теряется.

если не доверяеш IP-Core, проверь в Matlab.

я бы переводил filter gain как "изменения фильтра"
евгенийкочин
Простите мне мою толстолобость, но какую бы константу я не посылал я её получаю, при этом в последних 2-ух разрядах лезут 2 единицы, это что? "Изменение фильтра"?
DevL
на выходе - это уже после прохода всех CIC pipeline stages и по сигналу READY/RDY?

дальше - надо почитать мат часть, http://en.wikipedia.org/wiki/Downsampling

и далее :
Цитата
CIC filters have a low-pass filter characteristic. There are only three parameters (the
rate change factor R, the number of stages N, and the differential delay M) that can be
modified to alter the passband characteristics and aliasing/imaging rejection.

However, due to their drooping passband gains and wide transition regions, CIC
filters alone cannot provide the flat passband and narrow transition region filter
performance that is typically required in decimation or interpolation filtering
applications.

This problem can be alleviated by connecting the decimation or interpolation CIC
filter to a compensation FIR filter which narrows the output bandwidth and flattens
the passband gain.


http://www.altera.com/literature/ug/ug_cic.pdf

посмотри Figure 4–10. CIC and Compensation Filter Responses

Итог:
есть изменения фильтра
проще и быстрее это все проверять, IMHO в Matlab'e


PS насколько я понял, на форуме мало народу именно в этой теме, может конечно ошибаюсь...
евгенийкочин
Спасибо за посильную помощь, посижу пока почитаю.
Самурай
Цитата(евгенийкочин @ Jun 19 2012, 14:51) *
Спасибо за посильную помощь, посижу пока почитаю.


У Вас Full Precision, это значит, что CIC корка от хилых не использует округлени/усечение всех внутренних регистров, а так как усиление CIC равно (R*M)^N, то на выходе Вы получите бонусом дополнительных N*log2(R*M) разрядов. Читайте внимательно cic_compiler_ds613.pdf, ссылка выше была. Ну и теорию CIC тоже не лишним было бы знать, все-таки самая простая DSP фишкаsm.gif

Далее, Вы подаетет на вход CIC-а 10000001, это -127 в дополнительном коде, усиление CIC для ваших данных (4*1)^3 = 64, т.е. на выходе Вы получаете -127*64 = -8128, а это и есть 11100000010000 в дополнительном коде.

dmitry-tomsk
Цитата(евгенийкочин @ Jun 19 2012, 14:51) *
Спасибо за посильную помощь, посижу пока почитаю.

Ну что за мода на эти cic фильтры с плохими характеристиками, когда в S-6 полно умножителей? Читайте xapp на DDC, там же пишут как на ких фльтрах отличные дециматоры можно сделать максимум на 4 умножителях.
DevL
Цитата(dmitry-tomsk @ Jun 19 2012, 14:14) *
Ну что за мода на эти cic фильтры с плохими характеристиками, когда в S-6 полно умножителей? Читайте xapp на DDC, там же пишут как на ких фльтрах отличные дециматоры можно сделать максимум на 4 умножителях.


не против умножений, только не понял где читать, "xapp на DDC"? sm.gif
dmitry-tomsk
Цитата(DevL @ Jun 19 2012, 16:10) *
не против умножений, только не понял где читать, "xapp на DDC"? sm.gif

xap1018. Да собственно, там и читать нечего, логикорный fir умеет прореживать и за счёт этого повышать порядок. Рекомендую только двух или трёхкаскадный фильтр, выгода значительно больше, чем повышать порядок однокаскадного.
евгенийкочин
Самурай, спасибо большущее))

Цитата(Самурай @ Jun 19 2012, 15:13) *
У Вас Full Precision, это значит, что CIC корка от хилых не использует округлени/усечение всех внутренних регистров, а так как усиление CIC равно (R*M)^N, то на выходе Вы получите бонусом дополнительных N*log2(R*M) разрядов. Читайте внимательно cic_compiler_ds613.pdf, ссылка выше была. Ну и теорию CIC тоже не лишним было бы знать, все-таки самая простая DSP фишкаsm.gif

Далее, Вы подаетет на вход CIC-а 10000001, это -127 в дополнительном коде, усиление CIC для ваших данных (4*1)^3 = 64, т.е. на выходе Вы получаете -127*64 = -8128, а это и есть 11100000010000 в дополнительном коде.


Одно только не понимаю, если это в дополнительном, то получается

00011111101111 после инверсии, а затем

00011111110000 после того как прибавили единицу, и это получается -2032, а не -8128, с чем это связано?
Самурай
Цитата(евгенийкочин @ Jun 20 2012, 16:03) *
Одно только не понимаю, если это в дополнительном, то получается
00011111101111 после инверсии, а затем
00011111110000 после того как прибавили единицу, и это получается -2032, а не -8128, с чем это связано?


С тем, что это я не туда посмотрел и не то сказалsm.gif))

В общем, как оно должно быть (и как оно действительно есть на самом деле): подаем -127 (10000001), получаем на выходе CIC -8128 (10000001000000), т.е. -127*64. Сейчас вот проверил в ISE 13.3, все так и естьsm.gif Настройки почти как у Вас, только взял Input Sample Frequency: 1 и Clock Frequency: 1, что бы сильно не заморачиваться с тестбенчом.

Откуда у Вас на выходе 11100000010000 сказать сложно, скорее всего из-за того, что неправильно формируются входные сигналы, возможно, что данные поступают слишком часто.

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.