CIC фильтр

Обсуждаем цифровые устройства...
Ответить
Мучитель микросхем
Аватара пользователя
Сообщения: 479
Зарегистрирован: Вт июн 02, 2009 22:38:40
Откуда: Город-герой Москва

Сообщение Грендайзер »

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

Сообщение Леонид Иванович »

А что Вас смущает? Коэффициент передачи итегратора на постоянном токе равен бесконечности. Но CIC-фильтры состоят не только из Itegrators, но и Combs. Коэффициент передачи на DC можно сделать единичным.
Контактная информация:
Реклама
Мучитель микросхем
Аватара пользователя
Сообщения: 479
Зарегистрирован: Вт июн 02, 2009 22:38:40
Откуда: Город-герой Москва

Сообщение Грендайзер »

меня смущает то, что я не понимаю как сделать сумматор... т.е. Вы хотите сказать, что если я правильно выберу разрядность триггера, то переполнение мне не страшно, так? но вот представьте ситуацию, у меня 3-х разрядный (к примеру) регистр. И в какой то момент времени значение на нём 111, приходящий отсчёт увеличивает его до 1 000, но на шине у меня 000 => вместо 8 я получаю 0. Это ведь ошибка! Я конечно могу округлить результат на шине до 111 но я где то прочитал, что округление в данном случае неприемлемо. Как тогда быть?
Друг Кота
Аватара пользователя
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск

Сообщение Леонид Иванович »

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.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Мучитель микросхем
Аватара пользователя
Сообщения: 479
Зарегистрирован: Вт июн 02, 2009 22:38:40
Откуда: Город-герой Москва

Сообщение Грендайзер »

Ммм... мне пока сложно переводить английский текст, тем более технический, но если я прально понял, то тут говорится о том, что если в интеграторе и наступит ошибка, то в секции гребёнки, она исправится, если применит там при вычитании дополнительный код, так? Но тогда выходит, что разрядность регистров роли не играет (лишь бы она была не меньше длинны слова), а в ряде статеик буржуинских, я прочитал, что разрядность надо делать побольше, даже формула есть... И вот эта строка интересная:
...filter is (NR)M individual integrators can experience overflow.
Если правильно понял, здесь говорится что могут переполнится отдельные интеграторы... но интересно, если у меня 1 переполнился, он из запоя не выйдет уже, а остальные такт за тактом уйдут за ним... Вообщем чёт мутновато всёрано.... на уровне интуиции понимание всёравно не приходит :facepalm:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск

Сообщение Леонид Иванович »

Грендайзер писал(а):Если правильно понял, здесь говорится что могут переполнится отдельные интеграторы... но интересно, если у меня 1 переполнился, он из запоя не выйдет уже
Интеграторы в CIC-фильтре всегда работают с переполнениями. Чтобы это не нарушало работу, данные нужно представлять в дополнительном коде. Суммирование делается без учета переноса. После переполнения суммирование продолжается, никакого запоя не наступает. Разрядность выбирается исходя из коэффициента передачи всего фильтра на DC.
Контактная информация:
Реклама
Мучитель микросхем
Аватара пользователя
Сообщения: 479
Зарегистрирован: Вт июн 02, 2009 22:38:40
Откуда: Город-герой Москва

Сообщение Грендайзер »

Огромное спасибо! Если честно, Вы сильно помогли. Правда всё равно осталось некоторое недопонимание, так что если что я обязательно напишу снова. Пока попытаюсь переварить всё.
Мучитель микросхем
Аватара пользователя
Сообщения: 479
Зарегистрирован: Вт июн 02, 2009 22:38:40
Откуда: Город-герой Москва

Сообщение Грендайзер »

Мммм... такой вот ещё вопросик перед вычитанием в секции гребёнки, ведь необходимо сравнивать величины чисел... что бы не напартачить со знаком разности... так?
Друг Кота
Аватара пользователя
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск

Сообщение Леонид Иванович »

Зачем? Работаем в дополнительном коде и ни о чем не думаем.
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 479
Зарегистрирован: Вт июн 02, 2009 22:38:40
Откуда: Город-герой Москва

Сообщение Грендайзер »

Ясненько... т. е. в секции comb просто преобразуем вычитаемое и складываем с уменьшаемым, а там хоть не рассветай... кажется начинаю понимать, спасибо :)
Мучитель микросхем
Аватара пользователя
Сообщения: 479
Зарегистрирован: Вт июн 02, 2009 22:38:40
Откуда: Город-герой Москва

Сообщение Грендайзер »

Леонид Иванович, спасибо, всё получилось. Не сказать, что б я понял сокральный смысл CIC фильтров, но берега уже показались :))
Друг Кота
Аватара пользователя
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск

Сообщение Леонид Иванович »

Так весь смысл в отсутствии умножений :)
Контактная информация:
Родился
Сообщения: 19
Зарегистрирован: Пт фев 15, 2013 14:43:06

Сообщение yusmat »

спасибо, всё получилось
а можно пример того что получилось
Мучитель микросхем
Аватара пользователя
Сообщения: 479
Зарегистрирован: Вт июн 02, 2009 22:38:40
Откуда: Город-герой Москва

Сообщение Грендайзер »

Ух ну ты и спросил... сколько уж воды утекло... Но тебе повезло... щас точно не помню что рабочее что нет, но если чего могу поискать, если не заработает, напиши... там сам фильтр и тест бенч... возможно правда у файлов названия перепутаны...
Вложения
Xilinx.rar
(4.02 КБ) 321 скачивание
Родился
Сообщения: 19
Зарегистрирован: Пт фев 15, 2013 14:43:06

Сообщение yusmat »

спасибо за ответ
если не лень будет попробуй написать статью по данной теме
типа такой http://bsvi.ru/cordic-dlya-chajnikov/
мне реально помогла несмотря на то что она на англиском
Мучитель микросхем
Аватара пользователя
Сообщения: 479
Зарегистрирован: Вт июн 02, 2009 22:38:40
Откуда: Город-герой Москва

Сообщение Грендайзер »

Не думою, что моя статья кому то поможет... Я так до конца и не понял сокральной сути работы фильтров... А жизнь так сложилась, что сейчас я к сожалению не ЦОСом занимаюсь (хотя именно это у меня всегда интерес и вызывало) а скорей системами управления и работой с некоторыми интерфейсами и в ближайшее время ситуация скорей всего не изменится, свободного же время остаётся немного и разбираться с вопросами не касающимися нынешней деятельности остаётся или мало или совсем нет :? Так что о том что там конкретно в коде написано и как он работает я бы мог написать но вот о теории работы данных фильтров к сожалению не ко мне... я ж ведь VHDL-ем фактически просто структурную схему этого фильтра описал это не сложно, сумматоры, щётчик, и опять сумматоры (только со знаком минус) :(
Родился
Сообщения: 19
Зарегистрирован: Пт фев 15, 2013 14:43:06

Сообщение yusmat »

у меня альтера а не xilinx
поетому твой пример вряд ли заработает
вот еслиб он в графическом виде был
квартус кстати умеет показывать в графическом виде VHDL код но после того как он его скомпилит
Мучитель микросхем
Аватара пользователя
Сообщения: 479
Зарегистрирован: Вт июн 02, 2009 22:38:40
Откуда: Город-герой Москва

Сообщение Грендайзер »

От тебе графический вариант. Именно схему описанную в данном даташите я и описывал (правда кол-во интеграторов и дифференциаторов могут отличаться от количества на картинке). Код не содержит специализированных софтовых ядер и подключённых аппаратных ресурсов конкретной микросхемы (говоря нормальным языком код полностью синтезируем) мне просто в своё время довелось поработать с ПЛИС ф. Xilinx писал поэтому в ISE там автоматически создаётся шаблон... и да ISE тоже умеет схему рисовать (и может ещё много чего, как собсно и квартус). Сейчас работаю с сыклонами III и также компилил проект под них.. в коде ничего не менял....
Родился
Сообщения: 19
Зарегистрирован: Пт фев 15, 2013 14:43:06

Сообщение yusmat »

вход R это величина децимации ?
то есть чем он больше тем сильнее грубо говоря фильтрация
Мучитель микросхем
Аватара пользователя
Сообщения: 479
Зарегистрирован: Вт июн 02, 2009 22:38:40
Откуда: Город-герой Москва

Сообщение Грендайзер »

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

Вернуться в «Цифровая техника»