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

Здравствуйте.

 

Подскажите, как реализован ЦАП в ПЛИС. Стоит задача преобразовать данные из IP-Core генератора, который синтезирует функцию синуса в виде кодов во времени, в ШИМ последовательность и выдать ее через одну ногу ПЛИС. Конкретно реализовать нужно дельта-сигма ЦАП. Подскажите алгоритм работы.

 

Заранее благодарю.

 

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


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

Термин "дельта-сигма" чаще относится к АЦП, а не к ЦАПам. Хотя внутри этого АЦП есть точка, из которой можно отфильтровать аналоговый сигнал. В общем-то в этой точке как раз присутствует что-то похожее на ШИМ (относительное содержание единиц в фиксированном промежутке времени пропорционально уровню аналогового сигнала, как и в обычной ШИМ).

А ШИМ реализуется с помощью счетчика и цифрового компаратора, сравнивающего выходы счетчика с кодом, который нужно преобразовать в аналоговый вид.

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


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

Делали такую лабораторку в Бауманском :).

Кажется, даже на графическом вводе, но тут могу врать :).

 

Алгоритм очень простой - согласно амплитуде выдаете период соответствующей скважности.

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


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

Алгоритм очень простой - согласно амплитуде выдаете период соответствующей скважности.

Это просто ШИМ будет.

Aleksandr_KPI, полагаю, имел ввиду что-то вроде этого.

E[i] = E[i-1] + X[i-1] - Y[i-1] * FS;
Y[i] = E[i] > X[i] ? 1 : 0;

где FS - диапазон изменения данных X(не сильно быстро меняющихся за время t - t[i-1]), Y - однобитный выход.

E - переменная где накапливается интеграл разницы между входом и выходом ЦАПа.

Радость от сигма-дельта модулятора по сравнению с ШИМом, в переносе ошибок квантования в более высокочастотную область.

то есть, например если надо вывести число 127 при 8 разрядах входных данных, то на выходе будет чередование 0 и 1 с максимальной частотой, в случае ШИМа для 8 бит это всегда будет сигнал с частотой в 256 раз меньше, соответственно и фильтровать сложнее.

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


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

Алгоритм очень прост. Регистр задания(управляющего воздейсвия), сумматор, аккумулятор. По тактовой управляющее воздействие суммируем к аккумулятору. Переполнение и есть выходной сигнал. Перенос с сумматора и есть нужный выход.

 

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


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

Здравствуйте.

 

Подскажите, как реализован ЦАП в ПЛИС. Стоит задача преобразовать данные из IP-Core генератора, который синтезирует функцию синуса в виде кодов во времени, в ШИМ последовательность и выдать ее через одну ногу ПЛИС. Конкретно реализовать нужно дельта-сигма ЦАП. Подскажите алгоритм работы.

 

Заранее благодарю.

 

Посмотрите приложенный документ, там вначале коротко и с картинками рассказывается про однобитные АЦП/ЦАП. А дальше про более сложные, в том числе и про сигма-дельта преобразователи.

chap14_slides.pdf

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


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

Не надо путать ШИМ и сигма-дельта модулятор.

Делал сигма-дельта (2-го порядка, более высокий порядок - может неустойчиво получиться и будут ограничения по амплитуде входного сигнала) ЦАП на лапе MOSI SPI порта микроконтроллера. Очень красивый синус вышел после фильтрации.

 

Материал брал в Матлабовском Централе: http://www.mathworks.com/matlabcentral/fileexchange/19 - тулбокс для разработки сигма-дельта модуляторов и анализа чего получилось.

 

Ищите в архиве файл "OnePageStory.pdf" - там описано как просто сделать сигма-дельта модулятор 1-го и 2-го порядка.

delsig.zip

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


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

Всем спасибо за ответы ))).

 

Алгоритм очень прост. Регистр задания(управляющего воздейсвия), сумматор, аккумулятор. По тактовой управляющее воздействие суммируем к аккумулятору. Переполнение и есть выходной сигнал. Перенос с сумматора и есть нужный выход.

 

Возникли вопросы.

 

К примеру я имею ряд чисел выдаваемых генератором, по каждому такту опорной частоты (CLK) : 512, 512, 537, 537, 562, 562, 587, 587 ...., числа имеют диапазон от 1 до 1023.

1) Если суммировать числа по CLK, то какой величины должен быть аккумулятор?

2) Как выбирается его разрядность?

3) При переполнении двоичного аккумулятора на выходе появляется единица, а как быть с остатком. К примеру десяти разрядный аккумулятор переполнился значением: 11001001011, что дальше? Его обнулить или добавлять следующий число к 1001001011.

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


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

В дельта-сигма модуляторе помимо аккумулятора имеетсяеще отрицательная обратная связь (ООС) от квантователя (знак (MSB) результата последнего интегратора). Из-за нее при грамотно построенном модуляторе бесконечно сигнал в интеграторах, даже при высоком порядке модулятора, нарастать не будет. Разрядность аккумулятора обычно выбирается путем моделирования - смотрится максимальный размах сигнала.

Я делал в железе только модуляторы высокого порядка - там запас в первом интеграторе берется 4-5 бит, а в каждом последующем интеграторе - обычно на один бит меньше, чем в предыдущем.

 

В закромах есть полезная книга "Understanding Delta-Sigma Data Converters" - в ней есть глава про сигма-дельта ЦАПы. Написано весьма понятно, и есть даже готовый пример ЦАПа пятого порядка.

 

Небольшая поправка - в обратной связи будет +1 или -1, в зависимости от того, положительный или отрицательный результат в интеграторе, а MSB результата будет выдаваться на выход модулятора.

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


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

В закромах есть полезная книга "Understanding Delta-Sigma Data Converters" - в ней есть глава про сигма-дельта ЦАПы. Написано весьма понятно, и есть даже готовый пример ЦАПа пятого порядка.

Что-то я этого на ftp ("в закромах") не нахожу, может уточните названия ?

Нужен респектабельный пример для студентов.

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


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

К примеру я имею ряд чисел выдаваемых генератором, по каждому такту опорной частоты (CLK) : 512, 512, 537, 537, 562, 562, 587, 587 ...., числа имеют диапазон от 1 до 1023.

1) Если суммировать числа по CLK, то какой величины должен быть аккумулятор?

2) Как выбирается его разрядность?

3) При переполнении двоичного аккумулятора на выходе появляется единица, а как быть с остатком. К примеру десяти разрядный аккумулятор переполнился значением: 11001001011, что дальше? Его обнулить или добавлять следующий число к 1001001011.

1. Суммирование желательно производить не на тактовой выдающей задание а на существенно большей, в идеале на CLK*2**(разрядность аакумулятора)

2.Акумулятор должен быть больше либо равен самому большому числу задания. отсюда выбирается его разрядность. В вашем случае 10 бит

3 Остаток остается в аккумуляторе и к нему происходит следующее суммирование

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


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

Что-то я этого на ftp ("в закромах") не нахожу, может уточните названия ?

Нужен респектабельный пример для студентов.

BOOKS/ADC&DAC/Delta-Sigma%20Data%20Converters%20(Norsworthy,Schreier,Temes-1997).pdf

Я ошибся книги Understanding Delta-Sigma Data Converters там нет, но я имел в виду именно ту книгу, которая указана выше. Если кому нужна Understanding... могу залить куда-нибудь.

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


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

Термин "дельта-сигма" чаще относится к АЦП, а не к ЦАПам. Хотя внутри этого АЦП есть точка, из которой можно отфильтровать аналоговый сигнал. В общем-то в этой точке как раз присутствует что-то похожее на ШИМ (относительное содержание единиц в фиксированном промежутке времени пропорционально уровню аналогового сигнала, как и в обычной ШИМ).

Так модулятор сигма-дельта ЦАП и представляет собой не что иное, как полностью цифровую модель "входной части" сигма-дельта АЦП, сделанную именно для получения этого самого малоразрядного потока.

BOOKS/ADC&DAC/Delta-Sigma%20Data%20Converters%20(Norsworthy,Schreier,Temes-1997).pdf

Я так и думал.

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


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

Если кому нужна Understanding... могу залить куда-нибудь.

Мне нужна. Залейте, пожалуйста куда-нибудь или мне на почту: duhn(coбaка)visom.ru

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


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

BOOKS/ADC&DAC/Delta-Sigma%20Data%20Converters%20(Norsworthy,Schreier,Temes-1997).pdf

Я ошибся книги Understanding Delta-Sigma Data Converters там нет, но я имел в виду именно ту книгу, которая указана выше. Если кому нужна Understanding... могу залить куда-нибудь.

 

тоже интересно.

можно попросить Understanding залить на FTP?

 

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


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

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

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

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

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

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

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

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

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

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