|
Прошу оценить стоимость разработки, 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 14 2016, 14:08
|
Узкополосный широкополосник
     
Группа: Свой
Сообщений: 2 316
Регистрация: 13-12-04
Из: Moscow
Пользователь №: 1 462

|
Цитата(dmitry-tomsk @ Jun 12 2016, 00:45)  1 BRAM - таблица, 1 BRAM - входное FIFO, 2 BRAM - память данных с сим. выходом, 2 BRAM - память коэффициентов. Вспомнил, sin/cos таблицу можно (нужно) расшарить на два параллельных DDC, без потери разрядности аккумулятора угла, с аппроксимацией и без. Что касается входного FIFO, по моим требованиям всегда хватало 16 тактовой глубины на распределенной памяти. А вот в старом софте, старше ISE 14.7, были ошибки, не позволяющие в vhdl реализовать ядро, работающее на полной скорости (V4 или V5 до 550 МГц), переходил на родной язык описания.
|
|
|
|
Сообщений в этой теме
dmitry-tomsk Прошу оценить стоимость разработки Jun 10 2016, 18:00      rloc Цитата(dmitry-tomsk @ Jun 12 2016, 00... Jun 12 2016, 10:19       dmitry-tomsk Цитата(rloc @ Jun 12 2016, 14:19) Хорошо ... Jun 12 2016, 12:09        rloc Хорошо сделанная работа, со своей стороны мог бы р... Jun 12 2016, 16:25 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
|
|
|