|
Прошу оценить стоимость разработки, DDC |
|
|
|
Jun 10 2016, 18:00
|
Знающий
   
Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741

|
Прошу оценить стоимость разработки цифрового приёмника (DDC) на VHDL без использования сторонних ip-ядер. Состав приёмника – NCO, комплексный смеситель, каскады дециматоров на КИХ фильтрах, управление по AXI шине. Приёмник умеет перестраивать все или выбранные фазы (смесителя и дециматоров) по синхросигналу. Также умеет перестраивать коэффициенты децимации на лету, по командам с axi. Работает на максимальной для выбранного кристалла частоте. К IP ядру прилагается gui для расчёта фильтров со встроенной мат. оптимизацией по критерию полоса/подавление. Схема не классическая – CIC + корректор, а на основе КИХ с симметричной реализацией фильтров, в результате довольно компактный приёмник - при прореживании в 256 раз довольно двух каскадов, 6 умножителей, 700 триггеров, 500 LUT, 6 BRAM на 2 кбайт. АЧХ как на картинке.  Рад услышать любое мнение!
Эскизы прикрепленных изображений
|
|
|
|
|
 |
Ответов
|
Jun 11 2016, 14:29
|
Знающий
   
Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741

|
Цитата(rloc @ Jun 11 2016, 12:53)  По стоимости не подскажу. Напишите по пунктам ключевые особенности, чего нельзя реализовать (по ресурсам, быстродействию, структуре) с помощью стандартных средств и дополнительных программ (Matlab например). Для NCO Вы используете только табличное преобразование или есть алгоритмы аппроксимации? Сколько на него в отдельности уходит ресурсов? Какая разрядность NCO по фазе? Какие используются алгоритмы оптимизации при нахождении коэффициентов фильтра? Каким образом эти алгоритмы учитывают фиксированную разрядность коэффициентов? В Xilinx ip нет перестройки децимации/усиления на лету, например, нет синхронизации. NCO табличный, хотя раньше был с коррекцией в ряд Тейлора на 20 бит, за ненадобностью отвалился в пользу менее ресурсоёмкого. Оптимизация идёт по эффективной шумовой полосе, затем по полосе пропускания/ослаблению в полосе запирания, там есть всегда точка оптимума для конечной разрядности умножителей. Фиксированная разрядность не учитывается, там КИХ, а не БИХ фильтры, особой нужды нет. Округление результата симметричное для простоты, хотя сейчас уже, как слышал, используют комплексное. iprium что-то подобное продаёт за 3K евро в нетлистах, разработка с нуля, думаю дороже должна быть.
|
|
|
|
|
Jun 11 2016, 18:17
|
Узкополосный широкополосник
     
Группа: Свой
Сообщений: 2 316
Регистрация: 13-12-04
Из: Moscow
Пользователь №: 1 462

|
Цитата(dmitry-tomsk @ Jun 11 2016, 18:29)  нет синхронизации. Сигналы готовности нельзя использовать для синхронизации? Или есть какие-то особенности? Цитата(dmitry-tomsk @ Jun 11 2016, 18:29)  Фиксированная разрядность не учитывается, там КИХ, а не БИХ фильтры, особой нужды нет. Нет, речь конечно не о БИХ, а об алгоритме оптимизации целевой функции при нахождении коэффициентов КИХ фильтра. Понятно, что она будет сильно нелинейной, при ограничении разрядности. Цитата(des00 @ Jun 11 2016, 19:46)  Сложность вот в этом "Работает на максимальной для выбранного кристалла частоте" - это подразумевает по сути создание RPM макроса ну или широкое использование примитивов целевой ПЛИС. Присоединяюсь к вопросу об оптимизации по максимальной частоте: примитивы, RPM или Hard Macros? На vhdl согласен, разработчик в области ЦОС должен иметь в запасе набор своих ядер, позволяющий реализовать приемник с каскадной децимацией.
|
|
|
|
|
Jun 11 2016, 19:16
|
Знающий
   
Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741

|
Цитата(rloc @ Jun 11 2016, 22:17)  Сигналы готовности нельзя использовать для синхронизации? Или есть какие-то особенности?
Нет, речь конечно не о БИХ, а об алгоритме оптимизации целевой функции при нахождении коэффициентов КИХ фильтра. Понятно, что она будет сильно нелинейной, при ограничении разрядности.
Присоединяюсь к вопросу об оптимизации по максимальной частоте: примитивы, RPM или Hard Macros? На vhdl согласен, разработчик в области ЦОС должен иметь в запасе набор своих ядер, позволяющий реализовать приемник с каскадной децимацией. Под синхронизацией подразумевается сигнал, который устанавливает начальную фазу DDS и (или) перезапускает прореживание, то есть если прореживаем в 256 раз, 255 точек выкидываются, вот он и определяет с какой точки начинаем выкидывать лишнее, грубо говоря. Для частоты сделано на примитивах, если каналов много и кристалл сильно заполнен добавляются area constraint, но не всегда обязательно.
|
|
|
|
|
Jun 11 2016, 20:35
|
Узкополосный широкополосник
     
Группа: Свой
Сообщений: 2 316
Регистрация: 13-12-04
Из: Moscow
Пользователь №: 1 462

|
Цитата(dmitry-tomsk @ Jun 11 2016, 23:16)  Под синхронизацией подразумевается сигнал, который устанавливает начальную фазу DDS и (или) перезапускает прореживание Для NCO достаточно сброса, для фильтра можно сделать пропуск нескольких отсчетов данных, чтобы подогнать фазу выходного сигнала под требуемую (чтобы избежать звона фильтра). Цитата(dmitry-tomsk @ Jun 10 2016, 22:00)  Схема не классическая – CIC + корректор, а на основе КИХ с симметричной реализацией фильтров, в результате довольно компактный приёмник - при прореживании в 256 раз довольно двух каскадов, 6 умножителей, 700 триггеров, 500 LUT, 6 BRAM на 2 кбайт. На CIC давно никто не делает, КИХ - классика. Правильно ли я понимаю: Аккумулятор фазы - на распределенной логике 1 BRAM - преобразователь из угла в sin/cos 2 DSP - квадратурный смеситель 4 BRAM - память на данные для двух фильтров 1 BRAM - память на коэфф. для двух фильтров 4 DSP - MAC в двух фильтрах
|
|
|
|
|
Jun 12 2016, 12:09
|
Знающий
   
Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741

|
Цитата(rloc @ Jun 12 2016, 14:19)  Хорошо оптимизировано. Память коэффициентов под разные степени децимации? Чем определяется необходимость во входном FIFO? На усиление тратится отдельный такт в ущерб порядка? Какова необходимость в смене усиления на лету? Память коэффициентов грузится со второго порта для смены коэффициента децимации. FIFO потому что приёмник работает на своей частоте (макс для кристалла), а данные приходят с АЦП напрямую на частоте АЦП. То есть смена клокового домена + джиттер компенсатор. Сделано для удобства пользования. Фильтр всегда усиливает в зависимости от коэффициента децимации, т.к. масштаб коэффициентов выбирается исходя из разрядности умножителей, так что нужен баррел шифтер для сдвига выхода при смене коэффициента децимации (у меня это называется изменением усиления фильтра). Такт тратится только в Spartan-6 для симметричного округления, в S6 нет его поддержки в DSP слайсах.
|
|
|
|
Сообщений в этой теме
dmitry-tomsk Прошу оценить стоимость разработки Jun 10 2016, 18:00      rloc Цитата(dmitry-tomsk @ Jun 12 2016, 00... Jun 14 2016, 14:08 des00 5-7K Jun 11 2016, 10:43 des333 Цитата(des00 @ Jun 11 2016, 13:43) 5-7K
А... Jun 11 2016, 14:58  des00 Цитата(des333 @ Jun 11 2016, 21:58) А, ес... Jun 11 2016, 15:46   dmitry-tomsk Цитата(des00 @ Jun 11 2016, 18:46) NCO ил... Jun 11 2016, 18:13   dm.pogrebnoy Цитата(des00 @ Jun 11 2016, 18:46) NCO ил... Jun 11 2016, 22:00 des00 Цитата(dmitry-tomsk @ Jun 12 2016, 01... Jun 13 2016, 05:02
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|