Проектирование элементов микросистемной техники
4. Проектирование элементов микросистемной техники
4.1. Язык описания элементов микросистем VHDL-AMS
Расширение стандарта языка VHDL (VHDL-AMS - Very High Speed Integrated Circuits Hardware Description Language Analog-Mixed Signals) предназначено для описания и моделирования как цифровых, так и аналоговых приборов, причем использующих не только электрические сигналы, но также оптические, химические, механические и др. Это является важным шагом на пути создания универсальных САПР, осуществляющих автоматическую компиляцию проектных решений на основе высокоуровневых текстовых описаний элементов ИС и компонентов МСТ.
Основной язык VHDL-1076-1993 разработан организацией IEEE для описания и моделирования цифровых быстродействующих электронных систем. Однако развитие микросистемной техники вызвало необходимость принятия IEEE нового стандарта - VHDL Std 1076.1-1999, который принято неформально называть VHDL-AMS.
Этот стандарт основного языка и расширений предназначен для описания и моделирования схем и систем:
• консервативных и неконсервативных;
• непрерывных и непрерывно-дискретных;
• цифровых, аналоговых и цифроаналоговых;
• электрических и неэлектрических;
Рекомендуемые материалы
• во временном, частотном и операторном представлениях с учетом характеристик шума.
Перечисленные возможности важны при моделировании многих компонентов МСТ, представляющих собой смешанно-сигнальные электронные или смешанные электрические/неэлектрические системы.
Особенности языка VHDL-AMS Std 1076.1-1999:
1) расширенная структурная семантика языка предполагает: консервативность в моделях физических систем и допускает не консервативность для абстрактных моделей; совмещение цифровых и аналоговых портов, т.е. смешанно-сигнальных интерфейсов;
2) в моделирующее ядро добавлены: новая имитационная модель, поддерживающая непрерывное поведение на основе дифференциально-алгебраических уравнений (ДАУ); подсистема моделирования аналоговых схем; предусмотрена оптимальность решения систем ДАУ аналоговым моделирующим ядром;
3) язык поддерживает моделирование малосигнального режима в частотном представлении, статистическое моделирование, построение шумовых моделей и их имитацию;
4) по сравнению со стандартом языка VHDL введены новые положения в поведенческое описание схем и систем; новые интерфейсные объекты и новые типы объектов; цикл имитации поддерживает смешанный режим, а среда моделирования дополнена новыми атрибутами.
Язык VHDL-AMS поддерживает все типы данных, определенныех в языке VHDL. Эти типы можно использовать в VHDL-AMS без каких-либо дополнительных ссылок:
• real - действительные числа;
• integer - целые числа;
• natural - неотрицательные целые числа;
• positiv - положительные целые числа;
• bit-битовый тип {0, 1};
• boolean - логический тип данных {false, true};
• vector - массив типа real;
• bit_vector - массив типа bit;
• time - физический тип "время".
Кроме того, для моделирования аналоговых систем в VHDL-AMS предусмотрены дополнительные типы данных, описывающих различные физические параметры (domain): electrical_systems; mechanical_systems; fluidic_systems; radiant_systems; thermal_systems; chemical_systems.
Дополнительные типы данных располагаются в отдельных пакетах.
В языке VHDL-AMS предопределены следующие классы данных.
1. Constant - константы. Значение константы определяется при ее объявлении и не может быть изменено. Константы могут иметь любой из поддерживаемых типов данных, включая пользовательские.
2. Variable - переменные. Значение переменной изменяется столько раз, сколько встречается присваивание данной переменной. Переменные могут иметь любой из поддерживаемых типов данных.
3. Signal - сигналы. Сигналы представляют значения, передаваемые по проводам и определяемые присвоением сигналов (отличным от присвоения переменных).
4. Quantity - неизвестные. Значения неизвестным присваиваются в результате решения дифференциальных и алгебраических уравнений. Система моделирования аналоговой части схемы выполняет предварительно для всех зависящих от времени неизвестных в различных уравнениях дифференциальной части ДАУ начальное преобразование их в специфические величины времени, используя подходящие методы дискретизации.
Quantity могут иметь только скалярный тип с плавающей точкой.
Рассмотрим характеристики quantity. Характеристики составных quantity являются просто совокупностью характеристик своих скалярных субэлементов. Поведение каждого скалярного субэлемента не зависит от других.
Неизвестные могут быть объявлены там же, где может объявляться сигнал, за исключением пакетов. Quantity могут также быть объявлены как элементы интерфейса в списке портов. Интерфейсным элементом quantity называется порт quantity, аналогичный сигнальным портам. Интерфейсные quantity имеют режим, подобный режиму сигнала интерфейса (IN, OUT, INOUT).
Дополнительно предопределены следующие quantity:
• Q'dot - производная quantity Q по времени;
• Q'integ - интеграл от quantity Q по времени от нуля до текущего момента;
• Q'delayed(t) - значение quantity Q в прошедший момент времени, отстоящий от настоящего на фиксированный интервал (идеальная задержка t^O);
• ANOW - представление текущего времени моделирования;
• Q'slew (max_rising_slope, max_falling_slope) -quantity Q, производная по времени которого (крутизна фронтов) ограничена сверху указанными значениями;
• Qfltf(num,den) -функция интегрального преобразования по Лапласу от скалярного quantity Q как функции времени. Здесь num - константа типа REAL_VECTOR, являющаяся коэффициентом полинома числителя; den -константа типа REAL_VECTOR, являющаяся коэффициентом полинома знаменателя. Функция преобразования по Лапласу ставит в соответствие функции времени Q функцию частоты в виде отношения полиномов по степеням операторной переменной s. Во временной области это соответствует ДАУ с постоянными коэффициентами. В расширении языка функция преобразования по Лапласу определена как атрибут quantity, подобный атрибутам Q'Dot или Q'integ;
• Q'zoh (T,initial_delay) -дискретный эквивалент quantity Q. Тип результата совпадает с типом Q. Т - положительное значение вещественного типа, задающее период дискретизации; initial_delay - неотрицательное значение вещественного типа, задающее начальный момент дискретизации в секундах (по умолчанию устанавливается значение 0.0);
• S'ramp (tr,tf) - quantity, повторяющее сигнал S, но с заданными длительностями переднего и заднего фронтов;
• S'slew (max_rising_slope, max_falling_slope) - quantity, повторяющее сигнал S, но с производными по времени (крутизной фронтов), ограниченными сверху указанными значениями;
• Q'ztf (num, den, Т, initialdelay) -функция интегрального Z-преобразования quantity Q как функции времени. Здесь num - константа типа REAL_VECTOR, являющаяся коэффициентом полинома числителя; den - константа типа REAL_VECTOR, являющаяся коэффициентом полинома знаменателя; Т - положительная константа типа real, задающая период дискретизации; initial_delay— неотрицательная константа типа real, определяющая задержку начала дискретизации (по умолчанию устанавливается 0.0). Функция Z-преобразования ставит в соответствие функции времени Q с задержкой на константу Т отношение двух полиномов от переменной 1/z. Подобно функции преобразования по Лапласу, функция Z-преобразования определена как атрибут quantity. Первый скалярный элемент массива знаменателя должен быть ненулевым. Тип числителя и знаменателя определен в пакете STANDARD как неограниченный массив с натуральным индексом.
5. Terminal (терминал) описывает переменные составных типов nature со скалярными элементами, для которых должны выполняться законы консервативности. Branch_quantity (неизвестная ветви) объявляется между двумя терминалами.
Каждый простой тип nature представляется как определенные физические параметры - electrical_systems, mechanical_systems и т.д. Существует два типа branch_quantity:
• across quantity - воздействие, подобное, например, напряжению, температуре или давлению;
• through quantity - потоковое воздействие, подобное, например, току, потоку тепла или потоку жидкости.
Простой тип nature определяет свойство терминала быть представленным парой скалярных типов с плавающей точкой (рис.4.1). Например:
SUBTYPE voltage IS real; SUBTYPE current IS real;
NATURE electrical IS voltage ACROSS; current THROUGH; TERMINAL plus, minus: electrical;
QUANTITY v ACROSS il, i2 THROUGH plus TO minus;
(v - across-величина представляет разность напряжений на терминалах tl и t2: v = vtl - vt2; il, i2 - through-величины, представляют токи в двух параллельных ветвях, текущие от plus к minus).
Приведенное описание объявляет:
- два подтипа - подтип voltage (напряжение) и подтип current (ток);
- простой тип nature electrical;
- два терминала типа nature electrical и два quantity across и through между
двумя терминалами.
Рис.4.1. Тип nature electrical
Across quantity представляют разность потенциалов между двумя терминалами, a quantity through описывают различные параллельные ветви с током (токи текут от терминала plus к терминалу minus).
Тип branch_quantity явно не объявлен. Чаще всего он отражает nature ее терминалов. Он может быть составным типом. В примере quantity across v - тип напряжения, а тип quantity through il и i2 - ток. Как и в случае скалярного quantity, характеристики составного являются поименованным агрегатом характеристик его скалярных элементов. Терминалы должны иметь элементы того же простого типа nature и должны быть согласованы в других специфических особенностях. Терминалы quantity характеризуют терминал "плюс" и терминал "минус" и направление ветви от плюса к минусу (в электрической системе это направление положительного течения тока).
Терминал может быть объявлен там же, где допущено объявление сигналов. В конкретном случае терминал может быть элементом интерфейса в списке объявления портов. Тогда он называется терминальным портом;
PORT (TERMINAL anode, cathode: electrical);
Связывание терминальных портов используется для создания узлов в иерархических описаниях.
Объявление простого типа nature создает так называемый опорный терминал, который распространяется на все терминалы с элементами этой простой nature.
Опорный терминал Т природы N определен как N'Reference. Само объявление Т создает два quantity (рис.4.2):
Рис.4.2. Опорный терминал
- эталонная величина T'Reference является quantity across между плюсовым терминалом Т природы N и минусовым терминалом N'Reference (т.е. потенциалом относительно "земли");
-суммарное quantity T'Contribution является quantity through, величина которой равняется сумме всех through quantity, приложенных к Т (с соответствующим знаком). Если терминал Т появляется как фактический, то суммарные branch_quantity соответствующей природы добавляются к сумме.
Как T'Reference, так и T'Contribution являются составными, если Т составной. В этом случае правила относятся к каждому скалярному элементу Т.
Величина каждого скаляра across quantity ограничена разницей опорных (referance) quantity своих терминалов. Узел является комплектом скалярных терминалов, созданных деревом терминальных соединений. Все опорные quantity терминалов узла ограниченны и равны между собой, а суммарное quantity терминала в корне дерева равно нулю.
Из приведенного выше следует, что переменные класса quantity могут быть как «свободными» переменными, т.е. не связанными непосредственно с терминалами (портами и узлами) схемы, так и переменными состояния схемы (branch_quantity), т.е. в электрическом контексте - токами и напряжениями ветвей схемы. Для branch_quantity должны выполняться законы консервативности схемы (законы Кирхгофа).
В разделе операторов архитектурного тела VHDL-AMS описания могут присутствовать два типа параллельных операторов: simultaneous_statement и concurrent_statement.
Операторы simultaneous_statement появились лишь в последней версии языка и предназначены специально для описания аналоговой части модели.
Совокупность всех simultaneous_statement - это система алгебраических и дифференциальных уравнений, возможно с управляющими операторами. Неизвестными этой системы являются переменные класса quantity. Система должна быть совместной: число уравнений, решаемых в каждый момент времени моделирования, должно равняться числу неизвестных переменных класса quantity. Кроме уравнений, явно записываемых в разделе операторов архитектурного тела, существуют неявные уравнения, поддерживающие законы консервативности системы. Эти уравнения формируются автоматически при трансляции VHDL-AMS описания для переменных классов terminal.
В разделе операторов описания architecture_body допускается использовать следующие типы simultaneous_statement.
1. Операторы simple_simultaneous_statement - это простые уравнения, в правой и левой части которых записываются выражения. Операндами выражений могут быть переменные классов quantity или signal, константы, декларированные в архитектурном теле, или в области видимости архитектурного тела, а также функции и атрибуты переменных. Все операнды выражений, входящих в simple_simultaneous_statement, должны иметь базовый тип real или integer. Oneраторами в этих выражениях могут быть обычные арифметические операторы: +, -, *, /, **. Для изменения порядка выполнения действий в выражениях можно применять круглые скобки.
2. Операторы simultaneous_if_statement и simultaneous_case_statement применяются для модификации системы уравнений в зависимости от значений управляющих переменных в условиях. В качестве управляющих переменных могут использоваться как переменные класса quantity, так и signal. Это открывает возможность влияния цифровой части модели на ее аналоговую часть и наоборот.
Concurrent_statement предназначены для описания цифровой части модели. Они служат для формирования значений дискретных сигналов и для формирования иерархических описаний. Также операторы concurrent_statement являются средством взаимодействия аналоговой и цифровой частей модели.
К concurrent_statement относятся следующие операторы.
Информация в лекции "2 Место здравоохранения в общей системе государственных органов управления" поможет Вам.
1. Оператор процесса (process) определяет независимый последовательный процесс, представляющий поведение некоторой части модели цифро-аналогового устройства. Выполнение оператора процесса состоит из повторяющегося выполнения последовательности операторов, записанных в нем.
2. Оператор selected_signal_assignment является одним из операторов, в котором аналоговые переменные оказывают влияние на цифровые сигналы. Основным способом изменения значения цифрового сигнала в зависимости от значения аналоговой переменной является использование атрибута 'ABOVE. Значение атрибута q'ABOVE(v) переменной q класса quantity есть неявный сигнал типа boolean, который принимает значение TRUE, если q > v, и FALSE, если q < v, где v - постоянное значение.
3. Оператор concurrent_break_statement также является средством взаимодействия аналоговой и цифровой частей модели.
Язык VHDL-AMS поддерживает два стиля описания моделей компонентов микросистемной техники:
1. Структурное моделирование (structural modeling) непрерывных систем производится с помощью переменных составных типов nature, причем каждый простой тип nature представляется как определенные физические параметры -electrical_systems, mechanical_systems и т.д. При структурном описании модель представляется в виде иерархии связанных компонентов, в которой каждый компонент представляет собой определенный физический параметр.
2. Поведенческое моделирование (behavioral modeling) непрерывных систем производится с помощью наборов ДАУ, описывающих взаимосвязь различных физических параметров. Поведенческое описание модели позволяет разработчику избежать операции декомпозиции модели по физическим параметрам и сосредоточить основное внимание на одной физической величине.