Страница 1 из 3

CIC фильтр

Добавлено: Сб янв 14, 2012 21:28:13
Грендайзер
Здорово, котяры :)) Хочу реализовать CIC фильтр на ПЛИС. Его вход, как известно, состоит из цепочки каскадно включённых интеграторов, которые охвачены положительной обратной связью, что рано или поздно вызовет их переполнение. Всязи с чем вопрос: В РЯДЕ ИСТОЧНИКОВ НАПИСАНО, ЧТО ПЕРЕПОЛНЕНИЯ НЕ НАСТУПИТ, ЕСЛИ РАЗРЯДНОСТЬ РЕГИСТРОВ ВЫБРАТЬ ДОСТАТОЧНО БОЛЬШОЙ, НО Я НЕ МОГУ ЭТОГО ПОНЯТЬ, ВЕДЬ СКОЛЬКОБ Я ТУДА РАЗРЯДОВ НЕ ПИХАЛ, СУММАТОРЫ СУММИРУЮТ И РАНО ИЛИ ПОЗДНО ЭТО ПРИВЕДЁТ К ТОМУ, ЧТО РАЗРЯДНОЙ СЕТКИ НЕ ХВАТИТ :evil: . Кто нибудь, может сказать что нибудь конкретное по этому вопросу, был бы очень признателен. На рисунке показаны 2 интегратора, состоящие из сумматоров и триггеров, выполняющих задержку отсчёта на 1 такт.

Re: CIC фильтор

Добавлено: Сб янв 14, 2012 21:45:21
Леонид Иванович
А что Вас смущает? Коэффициент передачи итегратора на постоянном токе равен бесконечности. Но CIC-фильтры состоят не только из Itegrators, но и Combs. Коэффициент передачи на DC можно сделать единичным.

Re: CIC фильтор

Добавлено: Сб янв 14, 2012 22:06:47
Грендайзер
меня смущает то, что я не понимаю как сделать сумматор... т.е. Вы хотите сказать, что если я правильно выберу разрядность триггера, то переполнение мне не страшно, так? но вот представьте ситуацию, у меня 3-х разрядный (к примеру) регистр. И в какой то момент времени значение на нём 111, приходящий отсчёт увеличивает его до 1 000, но на шине у меня 000 => вместо 8 я получаю 0. Это ведь ошибка! Я конечно могу округлить результат на шине до 111 но я где то прочитал, что округление в данном случае неприемлемо. Как тогда быть?

Re: CIC фильтор

Добавлено: Вс янв 15, 2012 01:56:24
Леонид Иванович
Although the gain of an Mth-order CIC decimation filter is (NR)M individual integrators can experience overflow. (Their gain is infinite at DC.) As such, the use of two's complement arithmetic resolves this overflow situation just so long as the integrator word width accommodates the maximum difference between any two successive samples (in other words, the difference causes no more than a single overflow). Using the two's complement binary format, with its modular wrap-around property, the follow-on comb filter will properly compute the correct difference between two successive integrator output samples.

Re: CIC фильтор

Добавлено: Вс янв 15, 2012 14:37:50
Грендайзер
Ммм... мне пока сложно переводить английский текст, тем более технический, но если я прально понял, то тут говорится о том, что если в интеграторе и наступит ошибка, то в секции гребёнки, она исправится, если применит там при вычитании дополнительный код, так? Но тогда выходит, что разрядность регистров роли не играет (лишь бы она была не меньше длинны слова), а в ряде статеик буржуинских, я прочитал, что разрядность надо делать побольше, даже формула есть... И вот эта строка интересная:
...filter is (NR)M individual integrators can experience overflow.

Если правильно понял, здесь говорится что могут переполнится отдельные интеграторы... но интересно, если у меня 1 переполнился, он из запоя не выйдет уже, а остальные такт за тактом уйдут за ним... Вообщем чёт мутновато всёрано.... на уровне интуиции понимание всёравно не приходит :facepalm:

Re: CIC фильтор

Добавлено: Вс янв 15, 2012 15:34:30
Леонид Иванович
Грендайзер писал(а):Если правильно понял, здесь говорится что могут переполнится отдельные интеграторы... но интересно, если у меня 1 переполнился, он из запоя не выйдет уже


Интеграторы в CIC-фильтре всегда работают с переполнениями. Чтобы это не нарушало работу, данные нужно представлять в дополнительном коде. Суммирование делается без учета переноса. После переполнения суммирование продолжается, никакого запоя не наступает. Разрядность выбирается исходя из коэффициента передачи всего фильтра на DC.

Re: CIC фильтор

Добавлено: Вс янв 15, 2012 16:29:17
Грендайзер
Огромное спасибо! Если честно, Вы сильно помогли. Правда всё равно осталось некоторое недопонимание, так что если что я обязательно напишу снова. Пока попытаюсь переварить всё.

Re: CIC фильтор

Добавлено: Вт янв 17, 2012 09:27:53
Грендайзер
Мммм... такой вот ещё вопросик перед вычитанием в секции гребёнки, ведь необходимо сравнивать величины чисел... что бы не напартачить со знаком разности... так?

Re: CIC фильтор

Добавлено: Вт янв 17, 2012 11:25:59
Леонид Иванович
Зачем? Работаем в дополнительном коде и ни о чем не думаем.

Re: CIC фильтор

Добавлено: Вт янв 17, 2012 19:22:03
Грендайзер
Ясненько... т. е. в секции comb просто преобразуем вычитаемое и складываем с уменьшаемым, а там хоть не рассветай... кажется начинаю понимать, спасибо :)

Re: CIC фильтор

Добавлено: Пн фев 13, 2012 17:24:47
Грендайзер
Леонид Иванович, спасибо, всё получилось. Не сказать, что б я понял сокральный смысл CIC фильтров, но берега уже показались :))

Re: CIC фильтор

Добавлено: Пн фев 13, 2012 18:32:43
Леонид Иванович
Так весь смысл в отсутствии умножений :)

Re: CIC фильтор

Добавлено: Пт фев 15, 2013 14:46:51
yusmat
спасибо, всё получилось

а можно пример того что получилось

Re: CIC фильтор

Добавлено: Пт фев 15, 2013 17:12:41
Грендайзер
Ух ну ты и спросил... сколько уж воды утекло... Но тебе повезло... щас точно не помню что рабочее что нет, но если чего могу поискать, если не заработает, напиши... там сам фильтр и тест бенч... возможно правда у файлов названия перепутаны...

Re: CIC фильтр

Добавлено: Пт фев 15, 2013 18:12:36
yusmat
спасибо за ответ
если не лень будет попробуй написать статью по данной теме
типа такой http://bsvi.ru/cordic-dlya-chajnikov/
мне реально помогла несмотря на то что она на англиском

Re: CIC фильтр

Добавлено: Сб фев 16, 2013 08:55:57
Грендайзер
Не думою, что моя статья кому то поможет... Я так до конца и не понял сокральной сути работы фильтров... А жизнь так сложилась, что сейчас я к сожалению не ЦОСом занимаюсь (хотя именно это у меня всегда интерес и вызывало) а скорей системами управления и работой с некоторыми интерфейсами и в ближайшее время ситуация скорей всего не изменится, свободного же время остаётся немного и разбираться с вопросами не касающимися нынешней деятельности остаётся или мало или совсем нет :? Так что о том что там конкретно в коде написано и как он работает я бы мог написать но вот о теории работы данных фильтров к сожалению не ко мне... я ж ведь VHDL-ем фактически просто структурную схему этого фильтра описал это не сложно, сумматоры, щётчик, и опять сумматоры (только со знаком минус) :(

Re: CIC фильтр

Добавлено: Сб фев 16, 2013 20:19:32
yusmat
у меня альтера а не xilinx
поетому твой пример вряд ли заработает
вот еслиб он в графическом виде был
квартус кстати умеет показывать в графическом виде VHDL код но после того как он его скомпилит

Re: CIC фильтр

Добавлено: Сб фев 16, 2013 20:55:05
Грендайзер
От тебе графический вариант. Именно схему описанную в данном даташите я и описывал (правда кол-во интеграторов и дифференциаторов могут отличаться от количества на картинке). Код не содержит специализированных софтовых ядер и подключённых аппаратных ресурсов конкретной микросхемы (говоря нормальным языком код полностью синтезируем) мне просто в своё время довелось поработать с ПЛИС ф. Xilinx писал поэтому в ISE там автоматически создаётся шаблон... и да ISE тоже умеет схему рисовать (и может ещё много чего, как собсно и квартус). Сейчас работаю с сыклонами III и также компилил проект под них.. в коде ничего не менял....

Re: CIC фильтр

Добавлено: Сб фев 16, 2013 21:58:14
yusmat
вход R это величина децимации ?
то есть чем он больше тем сильнее грубо говоря фильтрация

Re: CIC фильтр

Добавлено: Сб фев 16, 2013 22:42:17
Грендайзер
Грубо говоря... да. Я в тест бенче ЛЧМ сигнал сформировал (правда уж не момню что там надо раскомментировать а что закоментировать чтоб понеслось), очень наглядно выходит, если поставить большой R, то когда частота на входе высокая то на выходе ничего нет... но с уменьшением частоты на выходе начинает появляться сигнал... В моделсиме очень всё наглядно выходит...