Аналоговые модули для ПЛИС

Опубликовано в рубрике "ПЛИС", 20.06.2012.
Тэги: , , , автор:

Бывает так, что в схеме, основанной на ПЛИС нужны АЦП и ЦАПы. В отличии от микроконтроллеров, в большинстве ПЛИСин нет встроенной аналоговой периферии. И тут приходится выкручиваться.

Общепринятый выход – поставить внешнюю микросхему. Но внешняя микросхема – это дополнительные затраты, которые хотелось бы избежать.

Сначала я думал рассказать только про то, что применял сам, но, в итоге, получилась обзорная статья о том, как вообще работать с аналоговыми сигналами на ПЛИС.

image

 

ЦАПы

Оказывается, способов сделать ЦАП на ПЛИС – хоть отбавляй. Естественно, у каждого есть свои достоинства и недостатки.

 

ШИМ

Довольно очевидное решение. Я думаю, рассказывать про него в очередной раз смысла нет. Гугль знает множество ответов на это вопрос. Разве что, могу посоветовать неплохой калькулятор, аналога которого я пока не написал.

 

Сигма-дельта модулятор

В моем текущем домашнем проекте UTC нужно было выдавать напряжение для ограничителя тока. Естественно, я заложил самый очевидный ЦАП – ШИМ с фильтром, но шум, который получился при малых выдаваемых напряжениях оказался совсем неприемлем. Я догадывался, что можно сделать сигма-дельта модулятор на ПЛИСины, и, таки, да!

Чем отличается модулятор от ШИМа? У ШИМа – фиксирована частота. Независимо от того, сигнал с каким заполнением он выдает, поэтому при маленькой скважности пульсации будут очень велики.

Сигма-дельта модулятор выдает такой сигнал, чтобы средняя плотность импульсов была такой как нужно. Для этого, его частота “дрожит”. На картинке два соседних периода выхода модулятора:

image

Такая хитрость позволяет сильно задрать частоту.

К примеру, представим, что нам нужен 10 битный ЦАП, выдающий число 200. Входная частота 5МГц. Частота ШИМа получается около 5кГц, а средняя частота сигма-дельта модулятора – 830кГц. Понятно, что модулятор даст намного меньше шума с тем-же фильтром.

Разница еще больше усиливается, если нужно выдавать число не 200, а 2 или 1021.

 

Ссылки на сигма-дельта ЦАПы:

Appnote от xilinx с ЦАПом, который я использовал.

Тот-же модулятор, но подключаемый к шине PLB

 

R2R

Это решение самое очевидное и на его основе можно получить большую частоту преобразования, но требует много компонентов, много ножек и много пайки. Еще одно достоинство в том, что в статических режимах, он абсолютно не шумит. Недостаток – у R2R бывают проблемы с монотонностью – следующий отсчет может быть меньше предыдущего.

image

Кроме того, для 8-битного ЦАПа уже нужны минимум 0.5% резисторы, а они – не дешевы.

 

АЦП

С АЦП все немного похуже, потому, как на ПЛИС принципиально невозможно сделать узел выборки-хранения, но для совсем медленно меняющихся сигналов есть несколько решений.

 

Сигма-дельта модулятор

Итак, опять модулятор. Смысл в том, что RC фильтр заряжается до тех пор, пока суммарное напряжение входного сигнала и RC фильтра не стало больше опорного, потом RC фильтр разряжается. По полученному сигналу восстанавливается напряжение.

В качестве компаратора можно использовать приемник диф. сигнала, который есть в каждой FPGA:

image

Приемники диф. сигнала – не лучшие компараторы, поэтому у них есть ошибки, да и ошибки эти зависят от температуры.

Собственно, у Altera есть хороший документ с примером такого АЦП, не буду пересказывать, читайте:

Документ от Lattice 

 

АЦП на времени заряда RC цепочки

Схема примерно та-же, но в этот раз мы просто замеряем время заряда RC цепочки до того, как напряжение на ней сравняется с входным сигналом. Такой прием раньше широко использовался для 8-битных микроконтроллеров без АЦП. Достоинство в том, что нужно довольно мало ресурсов для реализации такой штуковины, а обработку полученного времени можно делать процессором.

Компаратором опять может работать LVDS приемник.

image

Atmel о таком преобразователе

Microchip о том-же

 

Параллельный АЦП

Единственное упоминание такого АЦП я нашел под названием hackdac. Уж не знаю, почему dac, но речь там про АЦП.

image

Смысл простой – куча диф. приемников используется как компараторы, а сигнал подается на резистивный делитель. Количество отсчетов такого такого АЦП равна количеству компараторов, и для 4-битного результата их нужно будет аж 16 штук.

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

Описание такого АЦП

 

R2R АЦП

File:SA ADC block diagram.png

Типичный случай АЦП последовательного приближения. Берем R2R ЦАП, подключаем его к компаратору, а потом, двоичным поиском ищем совпадение. Относительно быстрый способ, но обладает всеми недостатками R2R ЦАПа.

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *


Срок проверки reCAPTCHA истек. Перезагрузите страницу.