Выходной сигнал с ЦАПа, по-определению, содержит множество
гармоник (теоретически, их бесконечный ряд) т.к. каждое изменение сигнала на выходе происходит, в идеале, ступенькой. Реально же там не ступенька, а наклонная практически прямая линия. Её наклон задаётся в спецификации и называется slew rate, обычно он указан в В/мкс.
Я щас вожусь с ЦАПами MCP4921 - их прелесть в том, что у них есть отдельный строб загрузки "Load DAC", это несколько удобнее, чем ещё более простой подход, когда новое значение на выходе ЦАП появляется поле снятия строба "Chip Select" (в случае SPI-интерфейса, разумеется). Невысокая цена и маленький корпус тоже роляют - дешевле было бы собрать R-2R ЦАП на 74HC595, но это много места на плате займёт и точность неважнецкая.
Короче, нафигачил несложный VHDL-код, который выщёлкивает 16 бит данных и на месте 17-го выдаёт строб загрузки, всё замечательно, но я заметил, что в одном канале выходной размах от 0 до примерно 5 вольт (щас в качестве референса используется напряжение питания), а вот во втором почему-то всего до 4.4 вольт.. искал причину недолго, впрочем. Подсказка в самом значении - 4.4 вольта это (5 - 0.6): когда паял чип, капля припоя налипла на ножку питания, но к плате не прикоснулась и ЦАП получал "паразитное" питание через вход референса (а там - защитный диод, вот 0.6В и потерялось). Пропаял чип и эффект исчез.
По результатам экспериментов могу сказать, что Microchip слишком осторожно указал 0.55 В/мкс - судя по всему, выходной драйвер этих ЦАПов всё-таки помощнее, но поднять частоту обновления это поможет несильно, т.к. всё равно она ограничена производительностью собственно SPI - там всего лишь 20 МГц тактовой максимум, а на одну выборку нужно 16 битовых интервалов и ещё 100 нс для загрузки. К тому же, у меня щас оптронная развязка, она 10 мегабит по паспорту. Вощем, как изначально и предполагал, ЦАП шарашит на 480 кГц частоте обновления, тактовая на SPI 9.5 МГц, развязка пашет на отлично, всё работает.
Но "пилообразный" выходной сигнал, разумеется, надо подчистить. Поставил на выходе простенький однокаскадный ФНЧ, Саллен-Кей, чебышевская характеристика, срез 16кГц, неравномерность в полосе 0.5дБ; стоп-банд 240 кГц, затухание 40дБ. Характеристики не ахти, но зато это всё делается на одном сдвоенном - ибо два ЦАПа - операционнике и работает, в теории, достаточно хорошо за счёт огромного запаса по частоте: на частоте Найквиста всё-таки 40дБ, сойдёт для сельской местности.
Так вот, этот операционник-то меня и подвёл. В кубышке давно уже лежат AD8302, и всё никак не находил им применения, а тут смотрю - вроде идеально ложится, рельс-к-рельсу выход-выход, запас по gain bandwidth в пару порядков, не самый хилый выход... но надо было читать даташит внимательнее. Он хоть и "с низкими искажениями", хоть и "рельс-к-рельсу", но всё это действительно только когда входное напряжение менее 3.9В. Потому что когда оно выше, внутри там переключается смещение входных транзисторов и вместо пары pnp начинает работать пара npn - да, чип продолжает усиливать сигнал, всё малощумяще и линейно, НО НЕ В ТОЧКЕ ПЕРЕКЛЮЧЕНИЯ. И я на гладкой аккуратной синусоиде вижу вполне явственный горбыль в районе 4 вольт. Бля.
Впрочем, похер - в итоговой системе референс для ЦАПов будет 4.096 вольта, а амплитуду всё равно придётся уменьшать, так что до этого "горбыля" я не дойду и эти не самые плохие чипы, наконец-то, найдут своё применение...
..а пока что поставлю там копеечные операционники TS922
Да, с этого года будет новый тэг для таких записей. Почему я до этого раньше не догадался - х.з.