Jump to content

    

Recommended Posts

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

 

Подскажите, как реализован ЦАП в ПЛИС. Стоит задача преобразовать данные из 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
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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this