Преобразователь цифровых данных в аналоговый сигнал, ЦАП (digital to analog converter, DAC) находит широкое применение в генераторах сигналов и программируемых источниках напряжения. Для дельта-сигма ЦАП, пример которого приведен в этой статье (перевод [1]), для получения аналогового сигнала дополнительно требуется только простейший ФНЧ, состоящий из резистора и конденсатора. Описываемый ЦАП обладает следующими возможностями:
• Интерфейс PLB, основанный на спецификации PLB v4.6. • Выбираемая полоса DAC. • Выбираемый диапазон изменения сигнала на выходе. • Программируемая генерация прерывания. • Стек FIFO глубиной в 16 ячеек.
Примечание: расшифровку всех незнакомых терминов и аббревиатур см. во врезках и в [3].
ЦАП может быть реализован на микросхемах серий Spartan-3A/3A DSP, Spartan-3, Spartan-3E, Automotive Spartan 3/3E/3A/3A DSP, Spartan-6, Virtex®-4 /4Q/4QV, Virtex-5/5FX, Virtex-6/6CX, на языке VHDL в среде разработки ISE версии 11.4 или более новой [4].
Дельта-сигма ЦАП использует простую цифровую технику для преобразования цифрового числа в аналоговое напряжение. Следовательно, ЦАП не подвержен влиянию изменения температуры, и может быть реализован на программируемой логике. Дельта-сигма ЦАП в сущности это высокоскоростной однобитный ЦАП. С помощью цифровой обратной связи генерируется последовательность импульсов. Среднее значение (скважность) этих импульсов пропорциональна значению цифрового числа на входе ЦАП. Аналоговый сигнал получается путем пропускания последовательности импульсов через аналоговый ФНЧ. Глубокое обсуждение преобразования Delta-Sigma выходит за рамки этого документа, однако здесь приведено описание базовой архитектуры, реализации и проблемы выбора компромисса реализации.
[Архитектура Delta-Sigma]
На рис. 1 показана блок-диаграмма верхнего уровня типовой реализации Delta-Sigma DAC. Как показано на этой диаграмме, входы включают сброс и тактовые сигналы в дополнение к цифровой шине входных данных. Сигнал с выхода DACout поступает на внешний ФНЧ. VOUT на выходе ФНЧ может быть на уровне от 0V до VCCO, где VCCO это напряжение питания, которое подано на банк ввода/вывода FPGA (I/O bank), который управляет ФНЧ из резистора и конденсатора.
Рис. 1. Модуль DAC на микросхеме Xilinx FPGA.
Классический суммирующий ЦАП использует подходящий массив резисторов для преобразования двоичного числа в соответствующий уровень напряжения. Эта техника хорошо работает для высокоскоростных DAC, когда двоичное число имеет длину до 10 бит. Однако на такой традиционной технике для рабочего диапазона температур трудно поддерживать точность преобразования с ростом разрядности входных данных.
Преобразователи Delta-Sigma DAC широко используются в приложениях аудио (звуковые карты, плееры). Они хорошо подходят для низкочастотных приложений, которые требуют относительно высокую точность. В качестве стандартной практики используется представление входных цифровых данных в форме целого числа без знака, когда нулевое значение числа соответствует минимальному уровню напряжения. Таким образом, аналоговое напряжение на выходе может быть только положительным. Число 0 на входе дает 0V на выходе. Все единицы входного числа дает выходное напряжение, близкое к VCCO. Для сигналов переменного тока (AC) постоянное смещение не составляет проблемы, поскольку может быть устранено включением последовательно с нагрузкой разделительного конденсатора. Рис. 2 показывает подробную блок-диаграмму XPS Delta-Sigma DAC. Ширина шины входных данных реализации может конфигурироваться. Для упрощения на блок-диаграмме обозначен DAC, имеющий 8-битный цифровой вход.
Xilinx Platform Studio (XPS) это ключевой компонент системы разработки ISE Embedded Edition Design Suite, помогающий разработчику аппаратуры построить, подключить и сконфигурировать системы на основе встроенного процессора - от простых машин состояний до полноценного 32-битного микропроцессора RISC.
XPS применяет графические инструменты просмотра дизайна и продвинутые мастера, чтобы провести разработчиков через необходимые шаги для создания пользовательской процессорной системы за несколько минут.
Настоящий потенциал XPS раскрывается с его возможностью конфигурировать и интегрировать ядра plug and play IP из каталога Xilinx Embedded IP, где присутствуют пользовательские проекты и разработки сторонних поставщиков кода Verilog и VHDL.
Разработчики firmware и software получают выгоду от интеграции XPS с Xilinx SDK, так как это позволяет автоматически генерировать критическое ПО системы, такое как загрузчики (boot loaders), bare metal BSP и Linux BSPs. Эта возможность гарантирует портируемость OS и разработка приложений может начаться без задержки, связанной с разработкой firmware.
[Конфигурирование и настройка всех программируемых чипов SoC Zynq-7000]
Zynq™-7000 AP SoC предоставляет вершину функциональности программируемых чипов SoC с двухядерными микропроцессорами ARM Cortex A9 и набор периферийных устройств с такими интерфейсами, как Ethernet, I2C, SDIO, USB и CAN; все это можно реализовать вместе с программируемой логикой Xilinx. XPS ускоряет каждый аспект создания дизайна для микросхем логики Zynq с помощью простых в использовании мастеров, включая настройку домена тактирования, прерываний, каналов DMA, внешних соединений с аппаратными периферийными устройствами, а также настройку интерфейсных соединений для программных периферийных устройств в программируемой логике. Это означает, что разработчики могут немедленно начать работу со своим проектом без опаски, что будет создан несовместимый набор интерфейсов или соединений.
• Интерфейсы AXI:
- 32-битные порты общего назначения AXI Master/Slave Ports - Высокоскоростные порты High-Speed 32/64-bit AXI Slave - Порт 64-bit AXI Accelerator Coherency - Контроллеры DMA общего назначения
• Системы, периферийные устройства, тактирование трассировки и отладки
- Аппаратные периферийные интерфейсы Zynq-EPP - Quad SPI/SRAM/NOR/NAND Flash - Gigabit Ethernet - USB 2.0 - Карты Flash Secure Digital - UART - I2C - SPI - CAN - GPIO
• Прерывания
• Подключения периферийных устройств к мультиплексированному вводу/выводу
[Настройка ядер Xilinx MicroBlaze]
Xilinx Microblaze™ обладают экстраординарной масштабируемостью и потенциалом настройки, позволяя реализовать устройства от 8-разрядного конечного автомата до сложных, SoC-подобных проектов RISC 32 бита. Инженеры с помощью XPS могут создавать тысячи различных дизайнов Microblaze, чтобы интегрировать проверенные внутренние процессорные IP, такие как конвейеры, системы управления тактированием, таймеры, контроллеры прерываний. Также доступны сложные IP периферийных устройств, такие как контроллеры памяти, USB, шины CAN, I2C, Ethernet, FPU и многое другое, доступное из каталога Xilinx Embedded IP. Когда этоа стандартная возможность конфигурирования процессора комбинируется с возможностью интеграции блоков RTL сторонних разработчиков и пользовательских IP, инженеры могут создавать по-настоящему уникальные рабработки, точно удовлетворяющие их требованиям.
[Добавление периферийных устройств Plug and Play]
XPS поддерживает легкую интеграцию пользовательских процессорных разработок и ядер IP из каталога Xilinx Embedded IP. Примеры таких ядер IP включают периферийные устройства и акселераторы, такие как мост AXI, GPIO, мост PLBV4.6, BRAM и внешние контроллеры памяти, интерфейсы SPI и QuadSPI, ADC, контроллер графики, контроллер тактов и таймеры, UART, I2C, контроллер прерываний и многое другое.
[Интеграция в XPS пользовательских периферийных устройств и устройств сторонних производителей]
Хотя многие виды систем могут быть созданы из периферийных устройств, доступных в каталоге Xilinx, часто необходимо создать и импортировать пользовательское периферийное устройство для получения нового функционала. Мастер Xilinx "Create and Import Peripheral" позволяет разработчикам аппаратуры создавть периферийные устройства AXI (версии 4) на Verilog или VHDL, или на обоих этих языках (в проекте из нескольких модулей на разных языках), и затем импортировать их в проекты XPS для подключения к любому интерфейсу AXI4-Lite, AXI4 (с разрешением пакетов, Burst-enabled) и AXI4-Stream. Этот мастер позволяет Вам также интергрировать свою PLB (версии 4.6) или периферийные устройства FSL в дизайн на основе PLB. При импорте в XPS Ваше пользовательское периферийное устройство управляется как любой стандартный модуль, доступный из каталога Xilinx Embedded IP.
[Подключение периферийных устройств с XPS]
XPS делает простым подключение каждой ножки IO или конечной точки внутренней программируемой логики к другой необходимой точке. Также упрощаются соединения с внешней аппаратурой платы PC через физический вывод корпуса, или подключение к другому устройству программируемой логики, так как XPS гарантирует правильную маршрутизацию сигнала с осблюдением совместимости по уровням логики. Для семейства устройств Zynq-7000 AP SoC также XPS управляет конфигурацией встроенного мультиплексора IO, который маршрутизирует обрабатывающие системные устройства на их подходящие ножки выхода.
[Генерация критического системного ПО с помощью XPS]
Пользовательские устройства, собранные на программируемой логике Xilinx FPGA или Zynq-7000 AP SoC, требуют пользовательского ПО низкого уровня (firmware), которое должно полностью управлять пользовательской аппаратурой начиная с загрузчика первого уровня, через инстанцирование устройства (загрузка потока бит), инициализацию, и наконец подготовку специфичного для устройства интерфейса (с помощью программного стека). Создание такого firmware очень сложная задача из-за жесткой зависимости между разработкой firmware и разработкой пользовательской аппаратуры. XPS позволяет избежать этой проблемы путем предоставления в общее пользование аппаратной, проектной и специфичной для дизайна информации в Xilinx SDK, который затем можно использовать для автоматического конфигурирования, сборки и развертывания критического, привязанного с дизайну firmware:
• First stage boot loaders (загрузчики первого уровня) • Программное обеспечение защиты (boot loader, firmware) • Управление потоком бит загрузки (Bitstream Management)
Для устройств, которые получены из каталога Xilinx Embedded IP, пакет SDK также автоматически генерирует bare-metal-драйверы и BSP - для подключения к коду без операционной системы или к коду RTOS, а также драйверы Linux и BSP. Таким способом XPS позволяет разработчикам надолго игнорировать необходимость разработки firmware и низкоуровневого кода BSP, что иначе потребовалось бы для разработки загрузчика операционной системы и приложения.
[Преимущества XPS]
Учет в разработке аппаратных возможностей устройств Xilinx:
• XPS импортирует предоставленный Xilinx файл аппаратной конфигурации, который дает возможность для XPS узнать об электрических, периферийных и программируемых параметрах для каждой микросхемы Xilinx. • Эти знания об аппаратуре в комбинации инструментами мастера "Base System Builder and Processor", встроенными в XPS, гарантируют немедленное получение корректно сконфигурированного проекта для быстрого старта. • XPS может гарантировать корректность дизайна по отношению к маршрутизации сигналов на внешние выводы, конфигурации напряжения IO, требований к размеру программируемой фабрики, и т. д. • Осведомленность об аппаратуре также позволяет XPS (вместе с SDK) автоматически сгенерировать ключевое системное firmware, включая загрузчики первой ступени (first stage boot loaders), потоки бит (bit streams), bare-metal и Linux BSP.
Интеграция с каталогом Xilinx Embedded IP:
• Каталог Xilinx Embedded IP содержит десятки проверенных ядер IP с поддержкой plug and play. • Разработчики могут просто интегрировать новый функционал, включая контроллеры диска, Ethernet, USB, шины CAN, генераторы тактов, карты SD/SDIO/MMC, интерфейс UART, GPIO, контроллеры памяти, Fifo, почтовые ящики, а также системы PLL, DSP, Block RAM, SPI, видеоконтроллер, контроллер прерываний, шины PCIe.
Графический мастер настройки конфигурации: XPS содержит мастер настройки платформы (Platform Configuration Wizard) и Base System Builder, что позволяет разработчикам быстро и просто конфигурировать среду XPS для конкретного выбора микросхемы логики и платы (Target Reference Design).
Гарантируется корректность соединений:
• XPS, зная специфичные параметры аппаратуры, позволяет получить гарантию, что все соединения будут правильные и функциональные. • Не нужно беспокоиться о несоответствии напряжений IO, тактировании и т. п.
Интеграция с инструментарием разработки Xilinx: XPS работает совместно с другими инструментами Xilinx, чем обеспечивается совместное планирование проекта вместе со средой PlanAhead, автоматическая генерация программы вместе с SDK, симуляция с помощью iSim, отладка аппратуры и программы с помошью ChipScope Pro, генерация дизайна в среде ISE.
XPS Delta-Sigma DAC можно использовать в различных приложениях:
• Программируемый генератор напряжения: может быть сгенерировано изменяемое напряжение с уровнями между 0V и VCCO, с гранулярностью, определяемой шириной шины DACin. В этих приложениях напряжение обычно не должно изменяться быстро, так что постоянная времени RC может быть выбрана достаточно большой для минимизации шума. • Генератор опорного напряжения VREF: это специальное применение программируемого генератора напряжения. Для некоторых стандартов приемников требуется выбор уровней ввода вывода SelectIO, для чего необходимо опорное напряжение для каждого банка приемников. Если для этого используется DAC, то VREF можно динамически менять для проверки рабочих границ во время системных тестов соединения. Подробнее см. application note XAPP133 (с использованием ресурса Virtex SelectI/O) для дополнительной информации про selectIO. • Генератор произвольных сигналов: различные аналоговые сигналы, такие как синус, пила, треугольник, и т. д. можно создать передачей правильных значений на шину DACin в нужные моменты времени. Обычно эти значения заранее сохраняются в SRAM. Для этой цели идеальны специальные блоки памяти (Block SelectRAM+), доступные в некоторых микросхемах Xilinx. Подробнее про Block SelectRAM+ см. Xilinx application note XAPP130 (используются функции Virtex Block SelectRAM+). • Генератор звука: Delta-Sigma DAC широко используются при воспроизведении звука, синтеза речи, и т. п. Поскольку аналоговый выходной сигнал меняется быстро, должна быть соответствующим образом выбрана постоянная времени RC фильтра, с учетом компромисса между шумом и частотным откликом (воспроизводимым спектром частот). • Генератор цвета RGB: хотя Delta-Sigma DAC слишком медленные, чтобы напрямую генерировать сигналы Red-Green-Blue (красный-зеленый-синий) для растрового дисплея, они все-таки могут найти применение в некоторых системах генерации цвета, которым не нужно работать в реальном времени. • Преобразование аналогового сигнала в цифровую форму (Analog to Digital Conversion, ADC): этот DAC может использоваться как генератор опорного напряжения в ADC. Полное обсуждение этого вопроса см. в XILINX application note XAPP155 (Analog to Digital Converter).
Термин Delta-Sigma относится к арифметической разнице (дельта) и арифметической сумме (сигма) [2]. В этой реализации двоичные сумматоры используются для создания как разницы, так и суммы. Хотя входы двоичного сумматора Delta оперируют числами без знака (unsigned), выходы обоих сумматоров считаются числами со знаком (signed).
Сумматор Delta вычисляет разницу между входом DAC и текущим выходом DAC, представленным в виде двоичного числа. Поскольку выход DAC одноразрядный, то на нем может быть "все или ничего", т. е. либо все нули, либо все единицы. Как показано на рис. 2, разность получается сложением входа со значением, созданным связыванием двух копий самого старшего бита защелки Sigma Latch со всеми нулями.
Это также компенсирует тот факт, что вход ЦАП (шина DACin) беззнаковый (unsigned). Сумматор Sigma складывает предыдущие выходные значения, хранящиеся в Sigma Latch, с текущем выходом сумматора Delta.
В большинстве случаев сумматор Delta выбрасывается процессом оптимизации, когда осуществляется синтез кода языка HDL высокого уровня. Это происходит потому, что когда все входы A либо B находятся в 0, то они просто сливаются вместо сложения. Как будет отмечено далее, вход DAC может быть расширен на 1 бит, чтобы позволить передать полный аналоговый диапазон от 0V до VCCO. В этом случае сумматор Delta нужен.
Для реализации рис. 1 выходное напряжение (VOUT) как функция от входа DAC может быть выражено следующим образом:
VOUT = (DACin/(2C_NUM_DAC_BITS)) x VCCO
Например, для 8-битного DAC (C_NUM_DAC_BITS=8) самое малое напряжение VOUT составит 0V, когда на входе DACin присутствует значение 0x00. Самое большое значение VOUT равно 255/256*VCCO, когда на входе DACin значение 0xFF, т. е. напряжение будет несколько меньше максимально возможного VCCO.
Для некоторых приложений важно, чтобы изменение VOUT происходило в полном возможном диапазоне напряжений от 0V до VCCO (так называемый принцип передачи сигнала rail-to-rail). Это реализуется с использованием обычной константой C_FULL_RANGE, которая увеличивает ширину шины DACin на 1 бит, оставляя все остальные ширины шин такими же. Для 8-битного DAC со входным значением 256 будет VOUT=VCCO. Обратите внимание, что для C_NUM_DAC_BITS=8 все входные значения DAC со значениями больше 256 являются недопустимыми и не должны использоваться. Допустимый диапазон цифровых входов для имеющихся значений C_NUM_DAC_BITS и C_FULL_RANGE будут от 0x0 до 0x(2C_NUM_DAC_BITS - 1 + C_FULL_RANGE).
Обычно выгодно использовать высокую частоту тактирования. Желаемая частота тактов может быть выше чем та частота, которая может быть практически подана от внешних источников тактирования.
Демонстрация работы этого ЦАП в симуляторе iSim:
ФНЧ. Фильтр низкой частоты, показанный на рис. 1, состоит только из одного резистора и одного конденсатора, что вполне адекватно для большинства приложений. Для предоставления максимального выходного тока используется режим выходного буфера 24 mA LVTTL.
Для выбора значений резистора и конденсатора ФНЧ нужно принимать во внимание три главных обстоятельства:
• Выходной вытекающий и втекающий ток (Output Source and Sink Current): в отличие от обычных цифровых приложений, в нашем случае важно, что сигнал DACout всегда переключается в полном диапазоне напряжений от 0V до VCCO (rail-to-rail). Если значение R выбрать слишком малым, и выход DACout не сможет переключаться rail-to-rail, то аналоговый выход получится нелинейным; т. е. изменение абсолютного выходного напряжение, получающееся в результате инкремента ли декремента DACin, будет не постоянным. Самый худший случай для выходного сопротивления буфера 24 mA LVTTL, когда R выбран порядка 25 Ом. Сопротивление R должно быть 2.5 кОм или больше, чтобы гарантировать переключение rail-to-rail, с ошибкой 1% или меньше. • Сопротивление нагрузки: сохраните сопротивление R достаточном малым относительно входного сопротивления нагрузки, подключенного к выходу ФНЧ, чтобы изменение тока через конденсатор из-за подключения нагрузки было незначительным. • Постоянная времени: значение τ = RC должна быть достаточно большим, чтобы сгладить отдельные импульсы в выходной последовательности DACout. С другой стороны, слишком большая постоянная времени может также снизить уровень высокочастотных составляющих сигнала. Это потенциально конфликтующие между собой требования, которые должны быть проанализированы отдельно.
Фильтрация последовательности импульсов. В среднем диапазоне напряжений сигнал на выходе DACout будет переключаться часто, делая относительно простой фильтрацию импульсов. Когда на входе DAC присутствует 1, или самое большое возможное значение (для нашего примера 255), сигнал DACout будет иметь одинаковый уровень для всего цикла выборки, кроме одного периода CLK. Это самая сложная для фильтрации последовательность выходных импульсов, т. е. это самый худший случай сигнала для ФНЧ.
Хотя шум фильтра может быть вычислен в виде абсолютного пикового напряжения (peak-to-peak), полезнее выразить его как дробь от шагового напряжения. Шаговое напряжение (step voltage, VS) определяется как абсолютное изменение VOUT, когда вход DAC получает инкремент или декремент (изменяется на 1). Для 8-битного DAC значение VS равно (1/256) x VCCO.
Для самого плохого случая peak-to-peak шум фильтра для 8-битного DAC может быть выражен следующим образом:
PPNFS = (1-e-(1/fτ)) x ((1-e-(255/fτ))/(1-e-(256/fτ))) x 256
где:
PPNFS это пиковое значение шума фильтра (peak-to-peak filter noise) выраженный дробным значением от шагового напряжения. f это тактовая частота DAC. τ постоянная времени ФНЧ, RC.
Сравнение шумовых характеристик 6, 8 и 10 разрядных Delta-Sigma DAC. Для других значений ширины входной шины выражение шума для самого плохого случая будет таким:
PPNFS = (1-e-(1/fτ)) x ((1-e-(y/fτ))/(1-e-(z/fτ))) x z
где:
y = 2C_NUM_DAC_BITS - 1 z = 2C_NUM_DAC_BITS
Это выражение было использовано для создания графиков рис. 3, 4 и 5 (см. врезку). Эти графики могут использоваться для определения значения постоянной времени RC с учетом напряжения шума самого плохого случая и рабочей частоты. Например, для 8-битного DAC на тактовой частоте 80 МГц можно выбрать значение RC = 13.0x10-6, соответствующее пиковому напряжению шума около 0.25 VS. Это оставляет промежуток шума 0.75 VS между шагами. В выходном сигнале будут и другие источники шума, которые также следует учитывать, такие как шум на шине питания VCCO.
Все три графика ниже показывают шум пульсаций на выходе ФНЧ для самого худшего случая пульсаций, когда на входе ЦАП постоянное значение 1. График показывает значение шума от пика до пика (peak-to-peak) как дробной части от шага ЦАП VS.
Рис. 3. PPNFS как функция от RC и рабочей частоты для 10-битного DAC.
Рис. 4. PPNFS как функция от RC и рабочей частоты для 8-битного DAC.
Рис. 5. PPNFS как функция от RC и рабочей частоты для 6-битного DAC.
Ослабление сигнала на выходе. По соглашению частота среза ФНЧ определена как уровень передачи половины мощности. Частота среза простого пассивного RC-фильтра может быть выражена так:
fC = 1/(2πτ)
где:
fC частота среза фильтра. π константа pi. τ постоянная времени фильтра, RC.
Эта формула использовалась для создания графика рис. 6.
Рис. 6. Частота среза ФНЧ как функция от RC.
Рис. 6 может может использоваться вместе с рис. 3, 4 или 5 для выбора постоянной времени RC, которая будет оптимальна для конкретного приложения. На всех рисунках показано один и тот же диапазон RC.
Рис. 4 показывает, что значение RC = 13.0 x 10-6 даст шум peak-to-peak 0.25V, когда частота DAC 8-битного DAC равна 80 МГц. По рис. 6 можно определить, что частота среза фильтра с такой постоянной RC получится около 12 кГц. Если нужно получить только постоянный уровень напряжения (DC), например для программируемого генератора напряжения, то RC можно увеличить для снижения шума тактирования. С другой стороны, если основная частота аналогового выхода высокая, или у неё есть острые перепады (что в сущности одно и то же), то может понадобится уменьшить постоянную времени RC. При определении реальных значений компонентов ФНЧ нужно помнить, что R не должен быть меньше 2500 Ом.
Пользователь может сделать для своего приложения более сложный фильтр, если простой RC-фильтр имеет неадекватную частоту среза или нагрузочные характеристики.
Чтобы получить полную точность для каждой выборки DACin в Delta-Sigma DAC, скорость выборок (sample rate), т. е. скорость изменений DACin, должна быть меньше или равна 1/(2C_NUM_DAC_BITS) тактовой частоты CLK. Для некоторых приложений, таких как программируемые источники напряжения, выполнить это условие не составляет никакой проблемы.
С ростом разрядности DAC и ростом требуемой частоты выборок может стать невозможным выполнить вышеуказанный критерий. На практике частота выборки иногда превышает 1/(2C_NUM_DAC_BITS) частоты CLK. Хотя это компромисс в точности для высоких частот спектра сигнала, часто возможно допустить такое для получения удовлетворительных результатов. Например, 16-битный DAC в системе CD должен потребовать частоты тактов 2.9 ГГц для полной точности на высоких частотах. Но на практике используются намного меньшие значения тактовой частоты. Одна из причин такого решения - снижается чувствительность человеческого уха к искажениям на высоких частотах.
[Модуль интерфейса PLB]
Модуль интерфейса PLB предоставляет двунаправленный интерфейс между Delta-Sigma DAC IP core и PLB. Базовый элемент модуля интерфейса PLB - подчиненное подключение, которое предоставляет базовый функционал работы управляемого устройства (PLB slave).
IP, IP core сокращение IP означает Intellectual Property. Под этим подразумеваются цифровые блоки, защищенные копирайтом какого-то производителя (часто стороннего по отношению к Xilinx). Это может быть реализованный на логике кристалла FPGA какой-либо сложный интерфейсный блок (например контроллер USB, контроллер CAN и т. п.), или какое-то процессорное ядро (даже стандартное, например MCS-51, 8086, PowerPC или ARM).
PLB Processor Local Bus, локальная процессорная шина.
Контроллер обработки прерываний (Interrupt Service Controller). Этот блок является развитием семейства продуктов LogiCORE Xilinx, совместимых с технологией IBM CoreConnect™. Он поддерживает захват прерывания для подключенного IP-блока. Interrrupt Service Controller предоставляет следующие функции:
• Параметризованное количество прерываний, необходимое для IP. • Для пользовательского IP предоставляются функции регистра состояния прерывания (Interrupt Status Register, ISR) и регистра разрешения прерывания (Interrupt Enable Register, IER).
Ниже приведено краткое описание, как установить регистры DAC для инициирования цифро-аналогового преобразования.
1. Запишите данные, которые должны быть преобразованы, в стек Data FIFO. 2. Разрешите DAC записью 1 в регистр управления. 3. Переведите сигнал Read_en в лог. 1 для одного такта SPLB_Clk, и значение, записанное в Data FIFO, начнет преобразовываться. 4. Если нужно преобразовать новое значение, запишите его в Data FIFO.
Не используемые сигналы интерфейса подчиненного устройства PLB
P40
Sl_wrBTerm
PLB
O
0
Прекращение пакетного перемещения записи.
P41
Sl_rdWdAddr[0:3]
PLB
O
0
Чтение слова адреса.
P42
Sl_rdBTerm
PLB
O
0
Прекращение пакетного перемещения чтения.
P43
Sl_MIRQ[0:C_SPLB_NUM_MASTERS-1]
PLB
O
0
Запрос прерывания мастер.
Сигналы ЦАП
P44
Dac_clk_en
System
I
-
Разрешение тактирования ЦАП. Это позволяет сигналу SPLB_Clk тактировать защелку Sigma и D-триггер.
P45
Read_en
System
I
-
Разрешение чтения. Когда этот вход в лог. 1, новое значение считывается из FIFO.
P46
Dac_Out
System
O
0
Выход ЦАП. Здесь генерируется последовательность импульсов, поступающая на ФНЧ.
Параметры дизайна Delta-Sigma DAC. Чтобы позволить пользователю создать XPS Delta-Sigma DAC, который будет уникально удовлетворять потребностям пользовательской системы, некоторые функции управляются параметрами в проекте XPS Delta-Sigma DAC. Это позволяет получить проект, который использует для системы только необходимые ресурсы микросхемы программируемой логики, и будет работать с максимально возможной производительностью. В таблице 2 перечислены функции, которые привязаны к параметрам в XPS Delta-Sigma DAC core.
Диапазон адреса должен быть 2n-1, и больше или равен 0x1FF(3).
Нет(1,2)
std_logic_vector
G3
Базовый адрес
C_BASEADDR
Допустимый диапазон для адреса(3).
Нет(1,2)
std_logic_vector
G4
Ширина шины данных
C_SPLB_DWIDTH
32, 64, 128
32
integer
G5
Ширина шины адреса
C_SPLB_AWIDTH
32
32
integer
G6
Топология точка-точка или общая
C_SPLB_P2P
0, 1
0
integer
G7
Ширина шины идентификатора мастера PLB
C_SPLB_MID_WIDTH
log2(C_SPLB_NUM_MASTERS) с минимальным значением 1.
3
integer
G8
Количество мастеров PLB
C_SPLB_NUM_MASTERS
1..16
8
integer
G9
Ширина шины данных подчиненного устройства
C_SPLB_NATIVE_DWIDTH
32
32
integer
G10
Поддержка пакетных передач
C_SPLB_SUPPORTS_BURST
0
0
integer
Дельта-сигма ЦАП
G11
Разрядность
C_NUM_DAC_BITS
2..16
8
integer
G12
Разрешение работы выхода в полную шкалу
C_FULL_RANGE
1 работа в полной шкале 0 выход получает значение меньше на единицу веса младшего разряда
0
integer
Примечания:
(1). Значение по умолчанию не назначено. Это гарантирует, что пользователь установит актуальное значение, в противном случае компилятор выдаст ошибку. (2). Например, C_BASEADDR = 0xE0000000, C_HIGHADDR = 0xE00001FF. (3). Диапазон адресов, заданный C_BASEADDR и C_HIGHADDR, должен быть как минимум 0X200, и должен быть равен результату степени числа 2. (4). С C_FULL_RANGE, установленным в 0, выход DAC будет (2n - 1)/2n. Здесь n это количество битов DAC, равное C_NUM_DAC_BITS.
[Зависимости портов]
Зависимости между параметрами дизайна ядра XPS Delta-Sigma DAC и сигналами ввода/вывода (I/O) показаны в таблице 3. Дополнительно, когда определенные функции задействованы параметрами в дизайне, связанная с ними логика больше не будет частью дизайна. Не используемые входные сигналы и связанные с ними выходные сигналы установлены в указанное значение.
Таблица 3. Параметры зависимостей портов для XPS Delta-Sigma DAC.
Generic
Имя параметра
На что влияет
От чего зависит
Описание взаимосвязи
Параметры дизайна
G4
C_SPLB_DWIDTH
P8, P11, P34
-
Ширина шины данных PLB и шины данных подчиненного устройства PLB
G5
C_SPLB_AWIDTH
P4
-
Ширина шины адреса PLB
G7
C_SPLB_MID_WIDTH
P6
G8
log2(C_SPLB_NUM_MASTERS) с минимальным значением 1
Сигналы I/O
P4
PLB_ABus[0:C_SPLB_AWIDTH-1]
-
G5
Ширина шины адреса PLB меняется в соответствии с C_SPLB_AWIDTH
P6
PLB_masterID[0:C_SPLB_MID_WIDTH-1]
-
G7
Ширина PLB_mastedID меняется в соответствии с C_SPLB_MID_WIDTH
P8
PLB_BE[0:(C_SPLB_DWIDTH/8)-1]
-
G4
Ширина разрешения байта меняется в соответствии с C_SPLB_DWIDTH
P11
PLB_wrDBus[0:C_SPLB_DWIDTH-1]
-
G4
Ширина шины записи данных PLB меняется в соответствии с C_SPLB_DWIDTH
P34
Sl_rdBus[0:C_SPLB_DWIDTH-1]
-
G4
Ширина шины чтения данных PLB меняется в соответствии с C_SPLB_DWIDTH
P37
Sl_MBusy[0:C_SPLB_NUM_MASTERS-1]
-
G8
Ширина Sl_MBusy меняется в соответствии с C_SPLB_NUM_MASTERS
P38
Sl_MWrErr[0:C_SPLB_NUM_MASTERS-1]
-
G8
Ширина Sl_MBusy меняется в соответствии с C_SPLB_NUM_MASTERS
P39
Sl_MRdErr[0:C_SPLB_NUM_MASTERS-1]
-
G8
Ширина Sl_MRdErr меняется в соответствии с C_SPLB_NUM_MASTERS
[Описание регистров]
Внутренние регистры XPS Delta-Sigma DAC находятся по адресам смещения относительно базового адреса C_BASEADDR. Набор внутренних регистров XPS Delta-Sigma DAC описан в таблице 4.
Таблица 4. Регистры XPS Delta-Sigma DAC.
Имя регистра
Адрес
Доступ
Device Global Interrupt Enable Register (GIE)
C_BASEADDR + 0x01C
чтение/запись
IP Interrupt Status Register (IPISR)
C_BASEADDR + 0x020
чтение/запись
IP Interrupt Enable Register (IPIER)
C_BASEADDR + 0x028
чтение/запись
Control Register (CR)
C_BASEADDR + 0x100
чтение/запись
Data FIFO (FIFO)
C_BASEADDR + 0x104
чтение/запись
Data FIFO Occupancy (OCCY)
C_BASEADDR + 0x108
чтение
Data FIFO programmable depth interrupt (PIRQ)
C_BASEADDR + 0x10C
чтение/запись
Control Register (CR). Определения бит для этого регистра показаны в таблице 5. Когда бит разрешения (EN) установлен в 0, это предотвращает XPS Delta-Sigma DAC от генерации последовательности импульсов, на выходе Dac_out будет 0.
Рис. 7. Биты регистра CR.
Таблица 5. Биты регистра CR.
Биты
Имя
Доступ ядра
Значение после сброса
Описание
0..29
-
-
-
зарезервировано
30
FIFO_RST
чтение/запись
0
Сброс FIFO. 1 сбрасывает данные FIFO, 0 нормальная работа FIFO.
31
EN
чтение/запись
0
Разрешение работы ЦАП. 1 разрешает работу XPS Delta-Sigma DAC, 0 сбрасывает и запрещает XPS Delta-Sigma DAC. Выход DAC будет находиться в нулевом состоянии.
Data FIFO. Это последовательный стек из 16 ячеек, предназначенный для ввода данных в XPS Delta-Sigma DAC. Биты Data FIFO показаны в таблице 6. Чтение из этого регистра даст текущее слово, которое в настоящей момент выводится из FIFO. Попытки записи в заполненный FIFO не рекомендуется, так как это нарушит нормальную последовательность преобразования выборок и приведет к потере байта данных.
Когда Data FIFO опустошается, и DAC разрешен, то выход DAC переходит в нулевой уровень.
Рис. 8 показывает место расположения данных в PLB, когда значение C_NUM_DAC_BITS установлено в 8 и C_FULL_RANGE установлено в 0. Если C_FULL_RANGE установлено в 1, и C_NUM_DAC_BITS установлено в 8, то биты данных от 23 до 31, но любое значение, большее чем 0X100, приведет к неопределенному выходу DAC.
Рис. 8. Data FIFO.
Таблица 6. Определение бит Data FIFO.
Биты
Имя
Доступ ядра
Значение после сброса
Описание
0 .. [31 - C_NUM_DAC_BITS - C_FULL_RANGE]
-
-
-
зарезервировано
[32 - C_NUM_DAC_BITS - C_FULL_RANGE] .. 31
Данные
чтение/запись
не определено
Данные для преобразования ЦАП.
Регистр Data FIFO Occupancy (OCCY). Это поле содержит значение занятости для Data FIFO. Чтение этого регистра может использоваться для определения, пуст ли FIFO, также эту информацию передает прерывание Data FIFO Empty. Прочитанная величина это двоичное значение счетчика, так что когда прочитаны все нули, то это означает, что ни одна из ячеек FIFO не заполнена, и чтение 10000 означает, что все 16 ячеек FIFO заполнены. Определения бит этого регистра показаны в таблице 7.
Рис. 9. Data FIFO Occupancy Register (OCCY).
Таблица 7. Определения бит регистра OCCY.
Биты
Имя
Доступ ядра
Значение после сброса
Описание
0..26
-
-
-
зарезервировано
27..31
Occupancy Value
чтение
0x0
27 старший бит. Значение 10000 показывает, что заполнены все 16 ячеек FIFO.
Регистр программирования глубины срабатывания прерывания в зависимости от опустошения Data FIFO (Programmable Depth Interrupt Register, PIRQ). Это поле содержит значение, определяющее установку прерывания PIRQ. Когда это значение больше или равно OCCY, установиться прерывание PIRQ, и останется установленным, пока выполняется условие превышения или равенства. Определения бит показано в таблице 8.
Рис. 10. Data FIFO Programmable Depth Interrupt Register.
Таблица 8. Определение бит регистра PIRQ.
Биты
Имя
Доступ ядра
Значение после сброса
Описание
0..26
-
-
-
зарезервировано
27..31
Compare Value
чтение/запись
0x0
27 старший бит. Значение 00101 показывает, что когда 5 или меньше ячеек в FIFO заполнено, установится прерывание FIFO PIRQ.
[Прерывания]
Сигналы прерывания, которые генерирует XPS Delta-Sigma DAC, обрабатываются контроллером прерываний (Interrupt Service Controller, ISC). Этот узел предоставляет многие функции, обычно предоставляемые для обработки прерываний. IPIER и IPISR содержат отображения бит, как это показано на рис. 11. Пожалуйста обратитесь к руководству по Processor IP, часть 1, для получения полного описания GIE, IPISR и IPIER. У XPS Delta-Sigma DAC есть два уникальных прерывания, которые отправляются в CPU. Число в круглых скобках это номер бита прерывания.
Рис. 11. Отображение прерываний.
Таблица 9. Определение бит регистра прерываний Data FIFO.
Биты
Имя
Доступ ядра
Значение после сброса
Описание
0..29
-
-
-
зарезервировано
30
FIFO EMPTY
чтение/запись
0
Это прерывание установится и останется установленным, пока пуст FIFO.
31
FIFO PIRQ
чтение/запись
0
Это прерывание установится и останется установленным, пока PIRQ равно или больше OCCY. Очистка этого прерывания требует, чтобы Data FIFO был заполнен на значение, большее PIRQ.
[Использование]
Для установки регистров DAC и инициирования преобразования требуется выполнить следующие шаги.
1. Инициализируйте регистры прерывания GIE и IPIER, как это необходимо, если используются прерывания. Подробное описание регистров прерывания см. в IP Reference Guide. 2. Запишите в Data FIFO данные, которые должны быть преобразованы в аналоговую форму. 3. Установите PIRQ для генерации прерывания до опустошения FIFO. 4. Разрешите DAC записью лог. 1 в регистр управления CR. 5. Переведите сигнал Read_en в лог. 1 для одного периода такта SPLB_Clk. Первое значение, которое было записано в Data FIFO, начнет преобразовываться после прохождения двух Dac_Clk_en. 6. После подходящего количества DAC_Clk_en переведите Read_en в лог. 1 на один такт и следующее значение начнет преобразовываться после двух Dac_Clk_en. 7. Если сигнал Read_en в лог. 1, и Data FIFO опустошился, то DACout перейдет в лог. 0. DACout останется в нуле, пока не будут записаны данные в Data FIFO, и при этом будет активен Read_en.
Диаграммы сигналов. Следующая диаграмма показывает генерацию управляющих сигналов для преобразования.
Рис. 12. Генерация для DAC управляющих сигналов преобразования.
Примечание 1: перевод сигнала Read_en в лог. 1 на 1 такт SPLB_Clk. Первое значение, записанное в Data FIFO, запустит его преобразование после двух импульсов Dac_Clk_en. Read_en должно быть сгенерировано, если FIFO не пуст.
[Реализация дизайна, использование ресурсов микросхемы логики и тесты производительности]
Производительность ядра. Поскольку ядро XPS Delta-Sigma DAC будет использоваться в FPGA вместе с другими модулями проекта, утилизация и интервалы времени, сообщаемые в этой секции, можно использовать только для общей, приблизительной оценки. Когда ядро XPS Delta-Sigma DAC комбинируется с другими узлами в системе, утилизация ресурсов FPGA и тайминг XPS Delta-Sigma DAC будет отличаться от результатов, приведенных здесь.
Утилизация ресурсов модулем XPS Delta-Sigma DAC для различных комбинаций параметров, измеренная на Virtex-4 FPGA, показана в таблице 10.
Таблица 10. Производительность и утилизация ресурсов на Virtex-4 FPGA (микросхема xc4vlx25-ff668-11).
Значения параметров
Ресурсы устройства
Производительность
Слайсов
Триггеров слайсов
LUT-ов
fMAX (МГц)
2
0
1
1
32
1
165
143
175
198
4
0
4
0
64
2
240
237
170
198
8
0
8
0
128
3
287
295
200
186
8
1
8
0
128
3
271
302
203
167
16
0
8
0
64
3
323
346
222
166
16
1
16
0
128
4
401
411
241
203
Утилизация ресурсов модулем XPS Delta-Sigma DAC для различных комбинаций параметров, измеренная на Virtex-5 FPGA, показана в таблице 11.
Таблица 11. Производительность и утилизация ресурсов на Virtex-5 FPGA (микросхема xc5vlx30-ff676-2).
Значения параметров
Ресурсы устройства
Производительность
Триггеров слайсов
LUT-ов
fMAX (МГц)
2
0
1
1
32
1
143
102
229
4
0
4
0
64
2
237
129
225
8
0
8
0
128
3
295
149
214
8
1
8
0
128
3
301
151
225
16
0
8
0
64
3
343
173
236
16
1
16
0
128
4
48
199
204
Утилизация ресурсов модулем XPS Delta-Sigma DAC для различных комбинаций параметров, измеренная на Spartan-3A DSP FPGA, показана в таблице 12.
Таблица 12. Производительность и утилизация ресурсов на Spartan-3A DSP FPGA (xc3sd3400a-fg676-4).
Значения параметров
Ресурсы устройства
Производительность
Слайсов
Триггеров слайсов
LUT-ов
fMAX (МГц)
2
0
1
1
32
1
125
143
120
118
4
0
4
0
64
2
269
237
143
115
8
0
8
0
128
3
319
295
165
103
8
1
8
0
128
3
339
301
168
102
16
0
8
0
64
3
368
346
185
112
16
1
16
0
128
4
457
411
221
102
Утилизация ресурсов модулем XPS Delta-Sigma DAC для различных комбинаций параметров, измеренная на Virtex-6 FPGA, показана в таблице 13.
Таблица 13. Производительность и утилизация ресурсов на Virtex-6 FPGA (микросхема xc6vlx195t-1-ff1156).
Значения параметров
Ресурсы устройства
Производительность
Слайсов
Триггеров слайсов
LUT-ов
fMAX (МГц)
2
0
1
1
32
1
61
88
123
168
4
0
4
0
64
2
75
161
176
206
8
0
8
0
128
3
89
192
217
219
8
1
8
0
128
3
95
196
220
168
16
0
8
0
64
3
98
232
253
197
16
1
16
0
128
4
108
262
288
204
Утилизация ресурсов модулем XPS Delta-Sigma DAC для различных комбинаций параметров, измеренная на Spartan-6 FPGA, показана в таблице 14.
Таблица 14. Производительность и утилизация ресурсов на Spartan-6 FPGA (xc6slxt100-2-fgg676).
Значения параметров
Ресурсы устройства
Производительность
Слайсов
Триггеров слайсов
LUT-ов
fMAX (МГц)
2
0
1
1
32
1
53
88
110
100
4
0
4
0
64
2
82
161
155
110
8
0
8
0
128
3
95
192
185
110
8
1
8
0
128
3
95
196
186
100
16
0
8
0
64
3
99
232
206
100
16
1
16
0
128
4
100
262
218
100
Производительность системы. Для измерения производительности системы (FMAX) этого ядра, оно было добавлено к системе Virtex-4 FPGA, Virtex-5 FPGA и Spartan-3A DSP FPGA как "устройство на тесте" (Device Under Test, DUT), что показано на рис. 13, 14 и 15.
Рис. 13. Virtex-4 FX FPGA System.
Рис. 14. Virtex-5 FX FPGA System.
Рис. 15. Spartan-3A DSP FPGA System.
Целевая микросхема FPGA была затем заполнена логикой для утилизации загрузки LUT и BRAM приблизительно на 70%, и утилизации I/O приблизительно на 80%. Использовались инструментальные опции по умолчанию и самая низкая по скорости (slowest speed grade) классификация для целевой микросхемы FPGA, и результирующие значения FMAX показаны в таблице 15.
Таблица 15. XPS Delta-Sigma DAC System Performance.
Целевой FPGA
FMAX (МГц)
S3D3400-4
100
V4LX25-11
125
V5FXT70-1
150
Еще раз напомним, что на приведенные результаты FMAX влияют общие параметры синтезированной системы, по поэтому приведенные данные предоставлены только как оценочные. Их значения не гарантируются на всех вариантах реализации систем.
1. DS516 Interrupt Control 2. XAPP154 Virtex Synthesizable Delta-Sigma DAC 3. Analog Devices Data Converter Reference Manual, Volume I, 1992. 4. High Performance Stereo Bit-Stream DAC with Digital Filter, R. Finck, IEEE Transactions on Consumer Electronics, Vol. 35, No. 4,Nov. 1989 5. IBM CoreConnect 128-Bit Processor Local Bus: Architecture Specifications version 4.6.
Поддержка. Xilinx предоставляет техническую поддержку для этого продукта LogiCORE, когда он используется так, как описано в его документации. Xilinx не гарантирует тайминг, функционал или поддержку продукта, если он реализован в устройствах, которые не определены в документации, если он настроен на параметры, выходящие за границы, разрешенные в документации, или если были сделаны изменения в любой секции дизайна, которая помечена "DO NOT MODIFY".