June 4th, 2021

worklog: задача-проблема-решение

Дано: ПЛИС Spartan-3
В задаче требуется: создать блок ROM с таблицей синуса на 1024 строки по 16 бит.
Предполагаемое решение: использовать BlockRAM, загрузив туда предварительно сформированную таблицу (вычисленную каким-нибудь другим способом, сейчас не важно).
Проблема: синтезатор WebPACK ISE 14.7 ругается на неподдерживаемую функция чтения целых чисел read(), несмотря на то, что в симуляторе всё работает.
Решение: добавить опцию -use_new_parser yes в команды синтезатора (нужно включить "улучшенный" вид вместо "базового").

worklog: перепиленные чипы?

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

По документации - отличные чипы, размах выходного сигнала меньше напряжения питания всего на 20мВ, входной может немного выходить за пределы питания, быстрые, малопотребляющие, малошумящие. Отличная штука для схем "рельс-к-рельсу" (rail-to-rail).

И вот запаял я их на плату. Смотрю и вижу, что верхняя часть синусоиды на выходе чипа заметно сплющивается уже при +4В на входе (при питании +5В!), а нижняя не дотягивается до нуля аж на 200 милливольт, чего не может быть в случае этого усилителя -- и дело вовсе не в нагрузке.

Похоже, это совсем не AD8032, а что-то совсем другое (навроде копеечного LM358).

Досадно.

С другой стороны, выжимать сигнал на всю шкалу всё равно смысла почти не имеет (разве что для "стресс-теста" схем), а при чуточку меньшей амплитуде синусоида выглядит вполне себе.. синусоидальной.

Это я на плате ПЛИС запустил тестовую прошивку DDS: через ЦАПы выдаёт два сигнала для проверки выходных узлов. Фильтры фильтруют, усилители усиливают. Смеситель попозже опробую, там ещё кое-что сделать надо. Сама синусоида (точнее, её четвертинка) забита в ПЗУ на SelectRAM, выборки читаются сразу с двух портов - удобно. После ПЗУ стоит умножитель (аппаратный же), как раз для регулировки амплитуды.

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