Перейти к содержанию
    

Кора CIC Compiler в ISE на 6-м Спартане

Хочу с помощью данной коры выполнить децимацию сигнала. Возник следующий вопрос: сгенерил агрегат со следующими параметрами:

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 это и есть константа которую я подаю,, что представляют из себя остальные биты?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подаю на неё константу, к примеру 10000001, на выходе получаю 11100000010000, как я понял биты с 4-го по 11-ый т.е. 10000001 это и есть константа которую я подаю,, что представляют из себя остальные биты?

Выход должен быть произведением входа на величину усиления фильтра.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

на выходе - это уже после прохода всех 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.

У меня на выходе моя константа и коэффициент усиления?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

тут как бы нет совсем явного усиления/ослабления при изменении частоты,

 

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

 

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

 

я бы переводил filter gain как "изменения фильтра"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Простите мне мою толстолобость, но какую бы константу я не посылал я её получаю, при этом в последних 2-ух разрядах лезут 2 единицы, это что? "Изменение фильтра"?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

на выходе - это уже после прохода всех 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 насколько я понял, на форуме мало народу именно в этой теме, может конечно ошибаюсь...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за посильную помощь, посижу пока почитаю.

 

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

 

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за посильную помощь, посижу пока почитаю.

Ну что за мода на эти cic фильтры с плохими характеристиками, когда в S-6 полно умножителей? Читайте xapp на DDC, там же пишут как на ких фльтрах отличные дециматоры можно сделать максимум на 4 умножителях.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну что за мода на эти cic фильтры с плохими характеристиками, когда в S-6 полно умножителей? Читайте xapp на DDC, там же пишут как на ких фльтрах отличные дециматоры можно сделать максимум на 4 умножителях.

 

не против умножений, только не понял где читать, "xapp на DDC"? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не против умножений, только не понял где читать, "xapp на DDC"? :)

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Самурай, спасибо большущее))

 

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

 

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

 

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

 

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

 

00011111110000 после того как прибавили единицу, и это получается -2032, а не -8128, с чем это связано?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

00011111110000 после того как прибавили единицу, и это получается -2032, а не -8128, с чем это связано?

 

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

 

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

 

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...