Эффект нарушения метастабильности в ADC Flash

Этот пример показывает, как настроить ADC флэш-памяти путем добавления вероятности метастабильности как нарушения и как измерить упомянутое нарушение. Это должно подтвердить нашу реализацию нарушения. Пример также показывает эффект метастабильности на динамических характеристиках (анализ AC) ADC флэш-памяти. Когда цифровой выход от компаратора неоднозначен (ни '1', ни '0'), вывод задан как метастабильный. Неоднозначный вывод выражается как NaN. Эта модель в качестве примера использует блок MATLAB function, чтобы добавить нарушение метастабильности в архитектуру ADC флэш-памяти. Другая подсистема сообщает о вероятности метастабильности на лету.

Настройте ADC флэш-памяти

Извлеките внутреннюю структуру ADC флэш-памяти, чтобы добавить настроенное нарушение. Добавьте блок ADC флэш-памяти от библиотеки Mixed Signal Blockset™ до холста Simulink®. Посмотрите под маской, чтобы найти плоскую структуру ADC. Вставка копии полная структура к другому новому пустому полотну.

В данном примере мы удаляем блок 'Clock Generator', когда он не используется, чтобы обеспечить часы преобразования запуска. Блок внешних стимулов используется с этой целью. При запрете блока генератора часов ADC флэш-памяти состоит из 2 главных компонентов:

  • Компараторы ADC Flash: ADC флэш-памяти использует 2^NBits компараторы параллельно. Сам блок основан на коде MATLAB. Прежде чем симуляция запускается, они вычисляют отдельные ссылочные напряжения и хранят их в векторе. На каждом заданном ребре вход сравнивается со способностью MATLAB использования ссылок сравнить векторы. Это генерирует код термометра почти таким же способом, которым действительный ADC флэш-памяти делает без задержки от отдельных блоков компаратора (NBits) в модели. Различные параметры его маски будут сконфигурированы можно следующим образом

  1. Количество битов: 10 (мы будем создавать пример для 10-битного ADC),

  2. Входной диапазон: [-1 1] (настройка по умолчанию)

  3. Вектор INL: 0 (мы хотим отключить это нарушение, чтобы видеть действительный эффект метастабильности),

  • Отказ Осведомленный Счетчик Единиц: Этот блок является нарушением и другой главной половиной архитектуры ADC флэш-памяти одновременно. Действительные ADCs обрабатывают преобразование от термометра до двоичного файла через логические схемы. Этот блок только берет сумму элементов вектора. Это затем применяет ту сумму к интерполяционной таблице, чтобы моделировать недостающие коды, в противном случае известные как пузыри. Различные параметры для этого блока похожи на упомянутый выше блок компаратора ADC флэш-памяти. Единственный дополнительный параметр является недостающими кодами, который вводится как пустой вектор.

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

Реализуйте вероятность метастабильности как нарушение к ADC Flash

Чтобы добавить нарушение метастабильности, мы помещаем блок MATLAB function вскоре после компараторов ADC флэш-памяти как показано в фигуре ниже. Этот блок устанавливает сигналы термометра кода на NaN с вероятностью, заданной в ее маске с помощью универсального генератора случайных чисел. Это сбрасывает их на следующем соответствующем ребре. Код MATLAB позади блока нарушения следующие:

%  function y = metastability(u, Probability)
%   mult = ones(size(u));
%   mult(rand(size(u)) < Probability(1)) = NaN; % metastability = NaN
%   y = u .* mult;
%  end

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

Реализуйте измеряющуюся вероятность метастабильности

Идея позади измеряющегося нарушения метастабильности очень упрощенна. Мы считаем количество NaNs столкнутым и делим это на количество общего компаратора выходные параметры, сгенерированные во время полной симуляции. Простую реализацию Simulink измерения вероятности метастабильности показывают ниже.

Инпорты: * ADC вывод: Этот порт берет в выводе цифровой код, сгенерированный ADC флэш-памяти. * Готовый сигнал: Этот порт берет в готовом сигнале, показывающем уровень, на котором происходит цифровое преобразование. в каждом возрастающем ребре Готового цифрового кода сигнала сгенерирован.

Симуляция для измерения метастабильности

Ниже модель, комбинирующая индивидуально настраиваемый ADC флэш-памяти с его выводом, соединенным с системой измерения вероятности метастабильности. В модели у нас есть 10-битный ADC флэш-памяти с вероятностью метастабильности добавленного 1e-6. блок стимулов генерирует аналоговый сигнал 100 Гц и часы преобразования запуска с частотой 100 МГц (это будет уровнем ADC операции). У нас есть осциллограф инструментальной панели, который обеспечивает поведение номера вероятности в зависимости от времени. Существует блок отображения также, чтобы обеспечить текущую вероятность, измеряемую подсистемой. Нужно запустить симуляцию в течение более длинного периода, чтобы видеть, что номер вероятности разбирается к требуемому значению (1e-6 в этом случае)

NBits=10;
model1='flashAdc_metastability.slx';
open_system(model1);
sim(model1);

Эффект метастабильности на динамических характеристиках ADC

Здесь мы наблюдаем эффект метастабильности на динамических характеристиках ADCs. Модель показывает две настройки систем ADC флэш-памяти: Один с метастабильностью и другим без него. У нас есть блок обработки сообщения, который берет в цифровом выходе, которому повреждают, и преобразовывает NaNs в 0. Это вызвано тем, что цифровой выход с NaNs не может быть распознан спектром анализатор как допустимый сигнал для спектрального анализа. Мы также блок измерения AC ADC сцепления, чтобы наблюдать различные показатели производительности как ОСШ, ENOB, уровень шума и т.д. Результаты симуляции показывают, что анализ AC приносит значительное понижение производительности для ADC с метастабильностью как показано ниже ENOB и более высокий уровень шума.

model2='flashAdc_metastability_Effect.slx';
open_system(model2);
sim(model2);