Jump to content

    

ЦАП в ПЛИС

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

 

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

 

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

 

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

 

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

Share this post


Link to post
Share on other sites
Алгоритм очень простой - согласно амплитуде выдаете период соответствующей скважности.

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

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 раз меньше, соответственно и фильтровать сложнее.

Share this post


Link to post
Share on other sites

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

 

Share this post


Link to post
Share on other sites
Здравствуйте.

 

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

 

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

 

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

chap14_slides.pdf

Share this post


Link to post
Share on other sites

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

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

 

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

 

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

delsig.zip

Share this post


Link to post
Share on other sites

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

 

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

 

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

 

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

 

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

 

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

Share this post


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

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

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

Share this post


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

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

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

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

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

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

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

Share this post


Link to post
Share on other sites
Что-то я этого на ftp ("в закромах") не нахожу, может уточните названия ?

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

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

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

Share this post


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

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

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

Я так и думал.

Share this post


Link to post
Share on other sites
Если кому нужна Understanding... могу залить куда-нибудь.

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

Share this post


Link to post
Share on other sites
BOOKS/ADC&DAC/Delta-Sigma%20Data%20Converters%20(Norsworthy,Schreier,Temes-1997).pdf

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

 

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

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

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this