Влияние метастабильности на работу параллельного АЦП
Влияние метастабильности на работу параллельного аналого-цифрового преобразователя (Flash ADC)
В данном примере рассматривается модель аналого-цифрового преобразователя параллельного типа, в которой реализована вероятность ошибочной работы за счет состояния метастабильности.
Параллельный аналого-цифровой преобразоваетль (АЦП) - это устройство, преобразующее входной аналоговый сигнал (напряжение) в соответствующий ему цифровой код с помощью ряда параллельно включенных компараторов, которые сравнивают входное напряжение с собственными опорными. За счет параллельной работы схемы, оцифровка происходит крайне быстро - время задержки работы T = Tк + Tкп, Тк - время задержки компаратора, Tкп - премя задержки кодопреобразователя. За счет этого параллельные АЦП могут оцифровывать высокочастотные сигналы напрямую без использования преобразователей частоты, и при этом не будет происходить потерь информации.
Описание работы параллельного АЦП
На рисунке ниже представлена схема трехразрядного параллельного АЦП.
С помощью трех двоичных разрядов можно представить 8 чисел от нуля до семи - соответственно необходимо использовать 7 компараторов. В общем случае число компараторов Nc = 2 ^ (N - 1), N - разрядность АЦП. Это является главной проблемой параллельного АЦП, т.к. для реализации, например, 10-и разярдного преобразователя понадобится 1023 компаратора, для 16-и разрядного - 65535 и т.д.
Опорное напряжение устанавливается на инвертирующих входах каждого из компараторов через делитель напряжения. Пусть k = VDD / Nc (в данном случае k = VDD / 7). Тогда на инвертирующем входе компаратора устанавливается напряжение Uопi = k/2 + k * (i-1), i - номер компаратора (начиная с 1).
Когда появляется напряжение Vin, оно одновременно устанавливается на неинвертирующих входах и каждым компаратором сравнивается с ранее заданным опорным напряжением. Если Vin > Uопi, то на выходе компаратора устанавливается логическая едиинца, иначе - логический ноль. Выходы компараторов подключены к кодопреобразователю DD1, на выходе которого формируется двоичный код, соответствующий напряжению на входе АЦП.
|
Vin / k |
A6 |
A5 |
A4 |
A3 |
A2 |
A1 |
A0 |
D2 |
D1 |
D0 |
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
|
2 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
|
3 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
|
4 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
|
5 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
|
6 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
|
7 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
Для обеспечаения стабильности работы запись цифрового сигнала происходят синхронно по тактовому сигналу. Как правило между выходами кодопреобразователя и оконечным устройством обработки ставятся синхронные D-триггеры.
Иногда значение напряжения на входе компаратора оказывается близким к опорному в момент тактирования схемы. В таком случае компаратор может застрять в неустойчивом состоянии, называемом метастабильностью - ситуации, при которой компаратор не может однозначно установить на выходе логический ноль или единицу. Для демонстрации вероятности попадания АЦП (точнее как минимум одного из его компараторов) в состояние метастабильности предлагается следующая структурная схема:
Генератор тестового сигнала представляет собой генератор синуса с амплитудой U = 1 В и частотой F = 100 Гц. Сигнал поступает на вход АЦП, где происходит циклическое сравнение текущего уровня сигнала с заранее расчитанными 1024 значениями амплитуд сигнала от -1 В до 1 В. Таким образом моделируется 10-и разрядный АЦП с опорным напряжением ±1 В. На выходе блока параллельных компараторов получается массив из 1024 значений типа "Boolean", которые в свою очередь поступаю на вход блока, моделирующего метастабильность. Этот блок с некоторой заданной вероятнстью заменяет логическое значение в массиве на NaN. Так как вероятность метастабильности это параметр компараторов, то это значение предоставляется возможным к вычислению и, соответственно, к тому, чтобы быть указаным как константа в модели. Далее в блоке обработки данных происходит считывание количества состояний NaN в массиве и их суммирование с ранее считанным количеством. Из общего количества состояний NaN и тактовых импульсов можно рассчитать получившуюся вероятность метастабильности и сравнить ее с целевым значением.
Изучаемая модель в Engee представлена на рисунке ниже:
Аналого-цифровое преобразование происходит в блоке "Параллельные компараторы", представляющем собой модель компараторов параллельного АЦП. Блоки, моделирующие метастабильность выделены зеленым цветом - "Реализация метстабильности" с вероятностью, задаваемой константой, заменяет входное логическое значение на NaN, а "Выходная логика" и "Установка типа выходного сигнала" согласуют значения и массивы для использования дальнейшими блоками. Желтым цветом выделены блоки обработки данных - оператор сравнения провереят является ли значение NaN'ом, и если является, то счетчик увеличивает значение на единицу. Нижние блоки считают общее количество тактовых импльсов.
Настройка окружения и запуск модели
Перед началом необходимо проинициализировать необходимые переменные и константы, а также подключить библиотеку для построения графиков:
engee.clear()
using Plots;
plotlyjs();
targetProbability = 2e-6; # @param {type: "number"}
# Следующие параметры влияют на длительность выполнения модели. При слишком больших значениях
# может произойти переполнение стека, что приведет к потере данных и, соответственно, к ошибочному ответу
Freq = 1e6; # @param {type: "number"}
Tsim = 1e-1 # @param {type: "number"}
# Следующие параметры описывают внутреннюю работу АЦП и их не рекомендуется изменять
Max = 1; # верхняя амплитуда оцифровываемого сигнала (изменение требует пересчет массива transitions)
Min = -1; # нижняя амплитуда оцифровываемого сигнала (изменение требует пересчет массива transitions)
delay = 1e-7; # средняя задержка импульсов, с
minDelay = 1.3878e-17; # мин. задержка импульсов, с
RmsJitt = 4e-11; # @param {type: "number"}
ic = 1; # начальный вход (не рекомендуется к изменению)
NBuffer = 10; # размер буффера (не рекомендуется к изменению)
NBits = 10; # разрядность АЦП (изменение требует пересчет массива transitions)
InputRange = [-1 1]; # диапазон входных напряжений (изменение требует пересчет массива transitions)
BubbleCodes = []; #
ScaleDownOutput = 0; #
# Компараторы реализованы путем сравнения "напряжения" генератора с 1024-ю значениями, представленными ниже
transitions = collect([-0.999023437500000 -0.997070312500000 -0.995117187500000 -0.993164062500000 -0.991210937500000 -0.989257812500000 -0.987304687500000 -0.985351562500000 -0.983398437500000 -0.981445312500000 -0.979492187500000 -0.977539062500000 -0.975585937500000 -0.973632812500000 -0.971679687500000 -0.969726562500000 -0.967773437500000 -0.965820312500000 -0.963867187500000 -0.961914062500000 -0.959960937500000 -0.958007812500000 -0.956054687500000 -0.954101562500000 -0.952148437500000 -0.950195312500000 -0.948242187500000 -0.946289062500000 -0.944335937500000 -0.942382812500000 -0.940429687500000 -0.938476562500000 -0.936523437500000 -0.934570312500000 -0.932617187500000 -0.930664062500000 -0.928710937500000 -0.926757812500000 -0.924804687500000 -0.922851562500000 -0.920898437500000 -0.918945312500000 -0.916992187500000 -0.915039062500000 -0.913085937500000 -0.911132812500000 -0.909179687500000 -0.907226562500000 -0.905273437500000 -0.903320312500000 -0.901367187500000 -0.899414062500000 -0.897460937500000 -0.895507812500000 -0.893554687500000 -0.891601562500000 -0.889648437500000 -0.887695312500000 -0.885742187500000 -0.883789062500000 -0.881835937500000 -0.879882812500000 -0.877929687500000 -0.875976562500000 -0.874023437500000 -0.872070312500000 -0.870117187500000 -0.868164062500000 -0.866210937500000 -0.864257812500000 -0.862304687500000 -0.860351562500000 -0.858398437500000 -0.856445312500000 -0.854492187500000 -0.852539062500000 -0.850585937500000 -0.848632812500000 -0.846679687500000 -0.844726562500000 -0.842773437500000 -0.840820312500000 -0.838867187500000 -0.836914062500000 -0.834960937500000 -0.833007812500000 -0.831054687500000 -0.829101562500000 -0.827148437500000 -0.825195312500000 -0.823242187500000 -0.821289062500000 -0.819335937500000 -0.817382812500000 -0.815429687500000 -0.813476562500000 -0.811523437500000 -0.809570312500000 -0.807617187500000 -0.805664062500000 -0.803710937500000 -0.801757812500000 -0.799804687500000 -0.797851562500000 -0.795898437500000 -0.793945312500000 -0.791992187500000 -0.790039062500000 -0.788085937500000 -0.786132812500000 -0.784179687500000 -0.782226562500000 -0.780273437500000 -0.778320312500000 -0.776367187500000 -0.774414062500000 -0.772460937500000 -0.770507812500000 -0.768554687500000 -0.766601562500000 -0.764648437500000 -0.762695312500000 -0.760742187500000 -0.758789062500000 -0.756835937500000 -0.754882812500000 -0.752929687500000 -0.750976562500000 -0.749023437500000 -0.747070312500000 -0.745117187500000 -0.743164062500000 -0.741210937500000 -0.739257812500000 -0.737304687500000 -0.735351562500000 -0.733398437500000 -0.731445312500000 -0.729492187500000 -0.727539062500000 -0.725585937500000 -0.723632812500000 -0.721679687500000 -0.719726562500000 -0.717773437500000 -0.715820312500000 -0.713867187500000 -0.711914062500000 -0.709960937500000 -0.708007812500000 -0.706054687500000 -0.704101562500000 -0.702148437500000 -0.700195312500000 -0.698242187500000 -0.696289062500000 -0.694335937500000 -0.692382812500000 -0.690429687500000 -0.688476562500000 -0.686523437500000 -0.684570312500000 -0.682617187500000 -0.680664062500000 -0.678710937500000 -0.676757812500000 -0.674804687500000 -0.672851562500000 -0.670898437500000 -0.668945312500000 -0.666992187500000 -0.665039062500000 -0.663085937500000 -0.661132812500000 -0.659179687500000 -0.657226562500000 -0.655273437500000 -0.653320312500000 -0.651367187500000 -0.649414062500000 -0.647460937500000 -0.645507812500000 -0.643554687500000 -0.641601562500000 -0.639648437500000 -0.637695312500000 -0.635742187500000 -0.633789062500000 -0.631835937500000 -0.629882812500000 -0.627929687500000 -0.625976562500000 -0.624023437500000 -0.622070312500000 -0.620117187500000 -0.618164062500000 -0.616210937500000 -0.614257812500000 -0.612304687500000 -0.610351562500000 -0.608398437500000 -0.606445312500000 -0.604492187500000 -0.602539062500000 -0.600585937500000 -0.598632812500000 -0.596679687500000 -0.594726562500000 -0.592773437500000 -0.590820312500000 -0.588867187500000 -0.586914062500000 -0.584960937500000 -0.583007812500000 -0.581054687500000 -0.579101562500000 -0.577148437500000 -0.575195312500000 -0.573242187500000 -0.571289062500000 -0.569335937500000 -0.567382812500000 -0.565429687500000 -0.563476562500000 -0.561523437500000 -0.559570312500000 -0.557617187500000 -0.555664062500000 -0.553710937500000 -0.551757812500000 -0.549804687500000 -0.547851562500000 -0.545898437500000 -0.543945312500000 -0.541992187500000 -0.540039062500000 -0.538085937500000 -0.536132812500000 -0.534179687500000 -0.532226562500000 -0.530273437500000 -0.528320312500000 -0.526367187500000 -0.524414062500000 -0.522460937500000 -0.520507812500000 -0.518554687500000 -0.516601562500000 -0.514648437500000 -0.512695312500000 -0.510742187500000 -0.508789062500000 -0.506835937500000 -0.504882812500000 -0.502929687500000 -0.500976562500000 -0.499023437500000 -0.497070312500000 -0.495117187500000 -0.493164062500000 -0.491210937500000 -0.489257812500000 -0.487304687500000 -0.485351562500000 -0.483398437500000 -0.481445312500000 -0.479492187500000 -0.477539062500000 -0.475585937500000 -0.473632812500000 -0.471679687500000 -0.469726562500000 -0.467773437500000 -0.465820312500000 -0.463867187500000 -0.461914062500000 -0.459960937500000 -0.458007812500000 -0.456054687500000 -0.454101562500000 -0.452148437500000 -0.450195312500000 -0.448242187500000 -0.446289062500000 -0.444335937500000 -0.442382812500000 -0.440429687500000 -0.438476562500000 -0.436523437500000 -0.434570312500000 -0.432617187500000 -0.430664062500000 -0.428710937500000 -0.426757812500000 -0.424804687500000 -0.422851562500000 -0.420898437500000 -0.418945312500000 -0.416992187500000 -0.415039062500000 -0.413085937500000 -0.411132812500000 -0.409179687500000 -0.407226562500000 -0.405273437500000 -0.403320312500000 -0.401367187500000 -0.399414062500000 -0.397460937500000 -0.395507812500000 -0.393554687500000 -0.391601562500000 -0.389648437500000 -0.387695312500000 -0.385742187500000 -0.383789062500000 -0.381835937500000 -0.379882812500000 -0.377929687500000 -0.375976562500000 -0.374023437500000 -0.372070312500000 -0.370117187500000 -0.368164062500000 -0.366210937500000 -0.364257812500000 -0.362304687500000 -0.360351562500000 -0.358398437500000 -0.356445312500000 -0.354492187500000 -0.352539062500000 -0.350585937500000 -0.348632812500000 -0.346679687500000 -0.344726562500000 -0.342773437500000 -0.340820312500000 -0.338867187500000 -0.336914062500000 -0.334960937500000 -0.333007812500000 -0.331054687500000 -0.329101562500000 -0.327148437500000 -0.325195312500000 -0.323242187500000 -0.321289062500000 -0.319335937500000 -0.317382812500000 -0.315429687500000 -0.313476562500000 -0.311523437500000 -0.309570312500000 -0.307617187500000 -0.305664062500000 -0.303710937500000 -0.301757812500000 -0.299804687500000 -0.297851562500000 -0.295898437500000 -0.293945312500000 -0.291992187500000 -0.290039062500000 -0.288085937500000 -0.286132812500000 -0.284179687500000 -0.282226562500000 -0.280273437500000 -0.278320312500000 -0.276367187500000 -0.274414062500000 -0.272460937500000 -0.270507812500000 -0.268554687500000 -0.266601562500000 -0.264648437500000 -0.262695312500000 -0.260742187500000 -0.258789062500000 -0.256835937500000 -0.254882812500000 -0.252929687500000 -0.250976562500000 -0.249023437500000 -0.247070312500000 -0.245117187500000 -0.243164062500000 -0.241210937500000 -0.239257812500000 -0.237304687500000 -0.235351562500000 -0.233398437500000 -0.231445312500000 -0.229492187500000 -0.227539062500000 -0.225585937500000 -0.223632812500000 -0.221679687500000 -0.219726562500000 -0.217773437500000 -0.215820312500000 -0.213867187500000 -0.211914062500000 -0.209960937500000 -0.208007812500000 -0.206054687500000 -0.204101562500000 -0.202148437500000 -0.200195312500000 -0.198242187500000 -0.196289062500000 -0.194335937500000 -0.192382812500000 -0.190429687500000 -0.188476562500000 -0.186523437500000 -0.184570312500000 -0.182617187500000 -0.180664062500000 -0.178710937500000 -0.176757812500000 -0.174804687500000 -0.172851562500000 -0.170898437500000 -0.168945312500000 -0.166992187500000 -0.165039062500000 -0.163085937500000 -0.161132812500000 -0.159179687500000 -0.157226562500000 -0.155273437500000 -0.153320312500000 -0.151367187500000 -0.149414062500000 -0.147460937500000 -0.145507812500000 -0.143554687500000 -0.141601562500000 -0.139648437500000 -0.137695312500000 -0.135742187500000 -0.133789062500000 -0.131835937500000 -0.129882812500000 -0.127929687500000 -0.125976562500000 -0.124023437500000 -0.122070312500000 -0.120117187500000 -0.118164062500000 -0.116210937500000 -0.114257812500000 -0.112304687500000 -0.110351562500000 -0.108398437500000 -0.106445312500000 -0.104492187500000 -0.102539062500000 -0.100585937500000 -0.098632812500000 -0.096679687500000 -0.094726562500000 -0.092773437500000 -0.090820312500000 -0.088867187500000 -0.086914062500000 -0.084960937500000 -0.083007812500000 -0.081054687500000 -0.079101562500000 -0.077148437500000 -0.075195312500000 -0.073242187500000 -0.071289062500000 -0.069335937500000 -0.067382812500000 -0.065429687500000 -0.063476562500000 -0.061523437500000 -0.059570312500000 -0.057617187500000 -0.055664062500000 -0.053710937500000 -0.051757812500000 -0.049804687500000 -0.047851562500000 -0.045898437500000 -0.043945312500000 -0.041992187500000 -0.040039062500000 -0.038085937500000 -0.036132812500000 -0.034179687500000 -0.032226562500000 -0.030273437500000 -0.028320312500000 -0.026367187500000 -0.024414062500000 -0.022460937500000 -0.020507812500000 -0.018554687500000 -0.016601562500000 -0.014648437500000 -0.012695312500000 -0.010742187500000 -0.008789062500000 -0.006835937500000 -0.004882812500000 -0.002929687500000 -0.000976562500000 0.000976562500000 0.002929687500000 0.004882812500000 0.006835937500000 0.008789062500000 0.010742187500000 0.012695312500000 0.014648437500000 0.016601562500000 0.018554687500000 0.020507812500000 0.022460937500000 0.024414062500000 0.026367187500000 0.028320312500000 0.030273437500000 0.032226562500000 0.034179687500000 0.036132812500000 0.038085937500000 0.040039062500000 0.041992187500000 0.043945312500000 0.045898437500000 0.047851562500000 0.049804687500000 0.051757812500000 0.053710937500000 0.055664062500000 0.057617187500000 0.059570312500000 0.061523437500000 0.063476562500000 0.065429687500000 0.067382812500000 0.069335937500000 0.071289062500000 0.073242187500000 0.075195312500000 0.077148437500000 0.079101562500000 0.081054687500000 0.083007812500000 0.084960937500000 0.086914062500000 0.088867187500000 0.090820312500000 0.092773437500000 0.094726562500000 0.096679687500000 0.098632812500000 0.100585937500000 0.102539062500000 0.104492187500000 0.106445312500000 0.108398437500000 0.110351562500000 0.112304687500000 0.114257812500000 0.116210937500000 0.118164062500000 0.120117187500000 0.122070312500000 0.124023437500000 0.125976562500000 0.127929687500000 0.129882812500000 0.131835937500000 0.133789062500000 0.135742187500000 0.137695312500000 0.139648437500000 0.141601562500000 0.143554687500000 0.145507812500000 0.147460937500000 0.149414062500000 0.151367187500000 0.153320312500000 0.155273437500000 0.157226562500000 0.159179687500000 0.161132812500000 0.163085937500000 0.165039062500000 0.166992187500000 0.168945312500000 0.170898437500000 0.172851562500000 0.174804687500000 0.176757812500000 0.178710937500000 0.180664062500000 0.182617187500000 0.184570312500000 0.186523437500000 0.188476562500000 0.190429687500000 0.192382812500000 0.194335937500000 0.196289062500000 0.198242187500000 0.200195312500000 0.202148437500000 0.204101562500000 0.206054687500000 0.208007812500000 0.209960937500000 0.211914062500000 0.213867187500000 0.215820312500000 0.217773437500000 0.219726562500000 0.221679687500000 0.223632812500000 0.225585937500000 0.227539062500000 0.229492187500000 0.231445312500000 0.233398437500000 0.235351562500000 0.237304687500000 0.239257812500000 0.241210937500000 0.243164062500000 0.245117187500000 0.247070312500000 0.249023437500000 0.250976562500000 0.252929687500000 0.254882812500000 0.256835937500000 0.258789062500000 0.260742187500000 0.262695312500000 0.264648437500000 0.266601562500000 0.268554687500000 0.270507812500000 0.272460937500000 0.274414062500000 0.276367187500000 0.278320312500000 0.280273437500000 0.282226562500000 0.284179687500000 0.286132812500000 0.288085937500000 0.290039062500000 0.291992187500000 0.293945312500000 0.295898437500000 0.297851562500000 0.299804687500000 0.301757812500000 0.303710937500000 0.305664062500000 0.307617187500000 0.309570312500000 0.311523437500000 0.313476562500000 0.315429687500000 0.317382812500000 0.319335937500000 0.321289062500000 0.323242187500000 0.325195312500000 0.327148437500000 0.329101562500000 0.331054687500000 0.333007812500000 0.334960937500000 0.336914062500000 0.338867187500000 0.340820312500000 0.342773437500000 0.344726562500000 0.346679687500000 0.348632812500000 0.350585937500000 0.352539062500000 0.354492187500000 0.356445312500000 0.358398437500000 0.360351562500000 0.362304687500000 0.364257812500000 0.366210937500000 0.368164062500000 0.370117187500000 0.372070312500000 0.374023437500000 0.375976562500000 0.377929687500000 0.379882812500000 0.381835937500000 0.383789062500000 0.385742187500000 0.387695312500000 0.389648437500000 0.391601562500000 0.393554687500000 0.395507812500000 0.397460937500000 0.399414062500000 0.401367187500000 0.403320312500000 0.405273437500000 0.407226562500000 0.409179687500000 0.411132812500000 0.413085937500000 0.415039062500000 0.416992187500000 0.418945312500000 0.420898437500000 0.422851562500000 0.424804687500000 0.426757812500000 0.428710937500000 0.430664062500000 0.432617187500000 0.434570312500000 0.436523437500000 0.438476562500000 0.440429687500000 0.442382812500000 0.444335937500000 0.446289062500000 0.448242187500000 0.450195312500000 0.452148437500000 0.454101562500000 0.456054687500000 0.458007812500000 0.459960937500000 0.461914062500000 0.463867187500000 0.465820312500000 0.467773437500000 0.469726562500000 0.471679687500000 0.473632812500000 0.475585937500000 0.477539062500000 0.479492187500000 0.481445312500000 0.483398437500000 0.485351562500000 0.487304687500000 0.489257812500000 0.491210937500000 0.493164062500000 0.495117187500000 0.497070312500000 0.499023437500000 0.500976562500000 0.502929687500000 0.504882812500000 0.506835937500000 0.508789062500000 0.510742187500000 0.512695312500000 0.514648437500000 0.516601562500000 0.518554687500000 0.520507812500000 0.522460937500000 0.524414062500000 0.526367187500000 0.528320312500000 0.530273437500000 0.532226562500000 0.534179687500000 0.536132812500000 0.538085937500000 0.540039062500000 0.541992187500000 0.543945312500000 0.545898437500000 0.547851562500000 0.549804687500000 0.551757812500000 0.553710937500000 0.555664062500000 0.557617187500000 0.559570312500000 0.561523437500000 0.563476562500000 0.565429687500000 0.567382812500000 0.569335937500000 0.571289062500000 0.573242187500000 0.575195312500000 0.577148437500000 0.579101562500000 0.581054687500000 0.583007812500000 0.584960937500000 0.586914062500000 0.588867187500000 0.590820312500000 0.592773437500000 0.594726562500000 0.596679687500000 0.598632812500000 0.600585937500000 0.602539062500000 0.604492187500000 0.606445312500000 0.608398437500000 0.610351562500000 0.612304687500000 0.614257812500000 0.616210937500000 0.618164062500000 0.620117187500000 0.622070312500000 0.624023437500000 0.625976562500000 0.627929687500000 0.629882812500000 0.631835937500000 0.633789062500000 0.635742187500000 0.637695312500000 0.639648437500000 0.641601562500000 0.643554687500000 0.645507812500000 0.647460937500000 0.649414062500000 0.651367187500000 0.653320312500000 0.655273437500000 0.657226562500000 0.659179687500000 0.661132812500000 0.663085937500000 0.665039062500000 0.666992187500000 0.668945312500000 0.670898437500000 0.672851562500000 0.674804687500000 0.676757812500000 0.678710937500000 0.680664062500000 0.682617187500000 0.684570312500000 0.686523437500000 0.688476562500000 0.690429687500000 0.692382812500000 0.694335937500000 0.696289062500000 0.698242187500000 0.700195312500000 0.702148437500000 0.704101562500000 0.706054687500000 0.708007812500000 0.709960937500000 0.711914062500000 0.713867187500000 0.715820312500000 0.717773437500000 0.719726562500000 0.721679687500000 0.723632812500000 0.725585937500000 0.727539062500000 0.729492187500000 0.731445312500000 0.733398437500000 0.735351562500000 0.737304687500000 0.739257812500000 0.741210937500000 0.743164062500000 0.745117187500000 0.747070312500000 0.749023437500000 0.750976562500000 0.752929687500000 0.754882812500000 0.756835937500000 0.758789062500000 0.760742187500000 0.762695312500000 0.764648437500000 0.766601562500000 0.768554687500000 0.770507812500000 0.772460937500000 0.774414062500000 0.776367187500000 0.778320312500000 0.780273437500000 0.782226562500000 0.784179687500000 0.786132812500000 0.788085937500000 0.790039062500000 0.791992187500000 0.793945312500000 0.795898437500000 0.797851562500000 0.799804687500000 0.801757812500000 0.803710937500000 0.805664062500000 0.807617187500000 0.809570312500000 0.811523437500000 0.813476562500000 0.815429687500000 0.817382812500000 0.819335937500000 0.821289062500000 0.823242187500000 0.825195312500000 0.827148437500000 0.829101562500000 0.831054687500000 0.833007812500000 0.834960937500000 0.836914062500000 0.838867187500000 0.840820312500000 0.842773437500000 0.844726562500000 0.846679687500000 0.848632812500000 0.850585937500000 0.852539062500000 0.854492187500000 0.856445312500000 0.858398437500000 0.860351562500000 0.862304687500000 0.864257812500000 0.866210937500000 0.868164062500000 0.870117187500000 0.872070312500000 0.874023437500000 0.875976562500000 0.877929687500000 0.879882812500000 0.881835937500000 0.883789062500000 0.885742187500000 0.887695312500000 0.889648437500000 0.891601562500000 0.893554687500000 0.895507812500000 0.897460937500000 0.899414062500000 0.901367187500000 0.903320312500000 0.905273437500000 0.907226562500000 0.909179687500000 0.911132812500000 0.913085937500000 0.915039062500000 0.916992187500000 0.918945312500000 0.920898437500000 0.922851562500000 0.924804687500000 0.926757812500000 0.928710937500000 0.930664062500000 0.932617187500000 0.934570312500000 0.936523437500000 0.938476562500000 0.940429687500000 0.942382812500000 0.944335937500000 0.946289062500000 0.948242187500000 0.950195312500000 0.952148437500000 0.954101562500000 0.956054687500000 0.958007812500000 0.959960937500000 0.961914062500000 0.963867187500000 0.965820312500000 0.967773437500000 0.969726562500000 0.971679687500000 0.973632812500000 0.975585937500000 0.977539062500000 0.979492187500000 0.981445312500000 0.983398437500000 0.985351562500000 0.987304687500000 0.989257812500000 0.991210937500000 0.993164062500000 0.995117187500000 0.997070312500000]');
targetProbability - целевая вероятность попадания компараторов в состояние метастабильности
Freq - частота тестового сигнала, Гц
Tsim - длительность симуляции, с
RmsJitt - среднеквадратичное значение джиттера
Запуск модели:
function run_model( name_model, path_to_folder ) # определение функции для прогона модели
Path = path_to_folder * "/" * name_model * ".engee"
if name_model in [m.name for m in engee.get_all_models()] # Проверка условия загрузки модели в ядро
model = engee.open( name_model ) # Открыть модель
out = engee.run( model, verbose=true ); # Запустить модель
engee.close( name_model, force=true ); # Закрыть модель
else
model = engee.load( Path, force=true ) # Загрузить модель
out = engee.run( model, verbose=true ); # Запустить модель
engee.close( name_model, force=true ); # Закрыть модель
end
return out;
end;
name = "FLASH_ADC"
path = @__DIR__
results = run_model(name, path) # Запуск модели
График зависимости вероятности попадания в состояние метастабильности от времени:
t = results["probability"].time;
p = results["probability"].value;
Plots.plot(t, p, label="P", linewidth=3)
Plots.plot!(title = "Зависимость вероятности метастабильности от времени работы", xlabel = "Время, с", ylabel = "Вероятность метастабильности")
Из графика выше можно сделать вывод, что со временем вероятность попадания компаратора АЦП в состояние метастабильности стремится к целевому. Если итоговое значение далеко от указанного в переменной targetProbability, попробуйте увеличить длительность симуляции.
Далее расчитаем разницу целевой вероятности и конечной (на момент окончания работы модели):
println("Вероятность метастабильности после ", Tsim, " секунд работы:")
pExp = p[end]
println(pExp, "\n")
println("Разница с целевой вероятностью:")
println("|", targetProbability, " - ", pExp, "| = ", abs(targetProbability - pExp))
Заключение
В данном примере была продемонстрирована временная зависимость попадания компараторов в параллельном АЦП в состояние метастабильности.
Со временем вероятность метастабильности старается установиться к целевому значению, которое после подобного исследования может быть указано в техническом паспорте микросхемы АЦП. В данном примере целевое значение заранее известно для того, чтобы продемонстрировать достижение схемой этой вероятности.
Список использованной литературы
- Walt Kester. Mixed-signal and DSP design techniques. ISBN-0-916550-23-0
- Walt Kester, Dan Sheingold, James Bryant. Fundamentals of sampled data systems.
- James Bryant, Walt Kester. Data converter architectures.
- С.И. Рембеза, В.С. Кононов. Высокоскоростные аналого-цифровые преобразователи на КМОП-транзисторах и подложках "Кремний на изоляторе". УДК 681.324.687