2.5.4. Особенности языка VHDL-AMS В язык VHDL-AMS по сравнению с базовой версией VHDL введен ряд дополнений, позволяющих использовать VHDL-AMS цля многоаспектного моделирования непрерывных процессов. Концепция многоаспектного моделирования была сформулирована более 20 лет назад [69]. Она основана на аналогиях компонентных и топологических уравнений, составляющих математические модели объектов во многих предметных областях на макроуровне. При этом под макроуровнем моделирования понимается совокупность моделей с сосредоточенными параметрами (т.е. описываемых системами обыкновенных дифференциальных уравнений) и методов их решения. Зависимыми переменными в этих моделях являются фазовые переменные, которые могут быть двух типов -переменными типа потенциала или переменными типа потока. В VHDL-AMS первые из них называются переменными across quantity, вторые - through quantity. Компонентные уравнения выражают связи между across и through переменными в отдельных элементах моделируемых объектов, а топологические уравнения - между однотипными фазовыми переменными разных элементов. Так, в случае электрических систем примерами компонентных уравнений могут быть уравнения закона Ома, а топологических - уравнения законов Кирхгофа. Фазовые переменные, используемые в моделях разных предметных областей (energy domains), перечислены в табл. 2.13. Введение в язык VHDL-AMS средств аналогового, многоаспектного и смешанного моделирования потребовало реализации следующих возможностей [70]. Во-первых, это появление средств описания дифференциальных и алгебраических уравнений. При этом подразумевается наличие в интерпретаторе языка VHDL-AMS Таблица 2.13 Физическая система Электрическая across quantity Электрическое напряжение (electrical) Механическая поступательная (voltage) Перемещение или скорость (displacement) through Электрический quantity ток (current) Сила (force) (translational) Механическая Угол (angle) или вращательная (rotational) скорость угловая Гидравлическая (fluidic) Давление (pressure) Температура Тепловая Вращательный момент (torque) Объемный поток (flow rate) Тепловой поток (temperature) (thermal) (heat flux) средств для численного решения уравнений, хотя сами методы решения в стандарте не определяются. Во-вторых, компоненты общей модели могут быть аналоговыми или дискретными, взаимодействие компонентов происходит через порты, а порты могут быть как дискретного, так и аналогового типов. В-третьих, предусматривается синхронизация событий в дискретной части с временными характеристиками процессов в непрерывной части модели. В-четвертых, имеется возможность моделирования не только во временной, но и в частотной областях. Наряду с такими объектами, как компоненты, сигналы, константы, в язык введены непрерывные переменные quantity, имеющие тип real. Производная dX/dt непрерывной переменной X обозначается как X'Dot, а интеграл от переменной X от 0 до текущего момента времени - X'Integ. Появляется новый тип операторов для записи уравнений (simultaneous statement), в которых фигурируют переменные quantity. Примером simultaneous statement может служить следующая запись: х' dot = а*х + Ь*у; Эти операторы могут появиться везде, где допускается запись операторов присваивания значений сигналам <=. Порядок записи этих операторов не имеет значения, т.е. они выполняются параллельно. Указание природы приложения (energy domain) выполняется с помощью ссылки на запись общих для приложения свойств, которая должна быть сделана в специальном пакете (package). На каждое приложение составляется один пакет. В этом пакете, в частности, в конструкции nature вводятся идентификаторы для фазовых переменных типа потенциала и типа потока. Например, в пакете для электрических систем записывается Nature electrical is voltage across current through electrical_ref reference; To есть voltage - это переменная типа потенциала, a current -переменная типа потока. Последняя строка в этом фрагменте служит для указания физической природы системы. Для тепловой подсистемы идентификаторами для across, through и reference соответственно будут temperature, heatflow, termal_ref и т.п. Каждому приложению при многоаспектном моделировании конкретного объекта соответствует своя эквивалентная схема, представленная в декларациях entity своими внешними портами. Например, описания внешних портов в некоторой электрогидравлической системе могут выглядеть следующим образом: entity unit is port (terminal x 1 ,x2: electrical; terminal gl,g2,g3: fluidic); end unit; Здесь x1, x2 - узлы в электрической подсистеме, g1, g2, g3 - узлы в гидравлической подсистеме. Входными и/или выходными переменными в моделях, описывающих потоки сигналов, могут быть переменные quantity. Тогда описание портов может быть следующим: port (quantity input: in real; quantity output: out real); Внутренние переменные quantity декларируются в архитектурных телах, например: quantity v across i 1, i2 through node_a to node_d; Эта запись в электрической подсистеме означает, что переменная v есть разность потенциалов между узлами node_a и node_d, эквивалентной схемы, а переменные il и i2 суть токи в ветвях, инцидентных этим узлам. Начальные условия для переменных задаются в архитектурных телах с помощью оператора break. Атрибутами некоторого узла Т называют переменные T'Reference и T'Contribution. Переменная T'Reference есть across quantity относительно общего узла (ground). Переменная T'Contribution - сумма переменных through quantity в ветвях, инцидентных узлу Т. При этом за положительное направление для T'Reference принято направление от узла Т к общему узлу. Поскольку численное решение является приближенным, то вводится понятие допусковой группы, каждая непрерывная величина и simultaneous statement принадлежат к определенной допусковой группе. Поэтому для переменных quantity наряду с записью их типа (real) обычно указывается допуск.