СистемаC АМС
SystemC AMS — это расширение SystemC для аналоговых, смешанных сигналов и радиочастотных функций. [1] Стандарт SystemC AMS 2.0 был выпущен 6 апреля 2016 года как IEEE Std 1666.1-2016.
Спецификация языка
[ редактировать ]ToDo: description
Особенности языка
[ редактировать ]ToDo: description
MoC — модель вычислений
[ редактировать ]Модель вычислений (MoC) — это набор правил, определяющих поведение и взаимодействие между примитивом SystemC AMS. модули. SystemC AMS определяет следующие модели вычислений: синхронизированный поток данных (TDF), линейный поток сигналов. (LSF) и электрические линейные сети (ELN).
TDF — синхронизированный поток данных
[ редактировать ]В модели временного потока данных (TDF) компоненты обмениваются друг с другом аналоговыми значениями. периодически с выбранной частотой дискретизации, например каждые 10 микросекунд. По теореме выборки этого было бы достаточно, чтобы передать сигналы с полосой пропускания до 50 МГц без артефактов наложения спектров. Модель TDF определяет метод под названием «processing()», который вызывается с соответствующей скоростью по мере продвижения времени моделирования. Так называемый кластер моделей имеет статический график того, когда им следует общаться. Это устанавливает относительный порядок вызовов методов обработки(). каждого экземпляра TDF в кластере. Периодическое поведение TDF позволяет ему работать независимо от основного Ядро SystemC, управляемое событиями, используемое для цифровой логики.
ЭЛН - Электрические линейные сети
[ редактировать ]Библиотека электрических линейных сетей (ELN) SystemC предоставляет набор стандартные электрические компоненты, которые позволяют использовать SPICE-подобные симуляции, которые нужно запустить. Три основных компонента: резисторы, конденсаторы и индукторы, конечно, имеются. Другие варианты, управляемые напряжением, такие как преобразователь крутизны. усилитель (генератор тока, управляемый напряжением) позволяет использовать большинство полевых транзисторов и других полупроводниковые модели, которые можно легко создавать.
Ток, протекающий в сетях резисторов ELN, можно решить с помощью подходящего средства одновременного решения уравнений. Они называются узловыми уравнениями. Если включены изменяющиеся во времени компоненты, такие как конденсаторы и катушки индуктивности, метод Эйлера обычно реализуется для их моделирования. Метод Эйлера — это простой подход к решению задач во временной области с конечной разностью (FDTD). Например, для моделирования проблемы заряда конденсатора (слева ниже) выбирается временной шаг delta\_t, который обычно равен около одного процента от постоянной времени, и выполняется итерация в правом нижнем углу.
Ошибка в методе Эйлера уменьшается квадратично при меньших шагах по времени, но слишком малом времени. Шаг приводит к медленному моделированию сложной модели методом конечных элементов. Но это не является проблемой во многих ситуациях, когда часть сложной SoC или Контроллер объекта работает вместе с моделью предприятия, которая имеет всего несколько переменных состояния, например, с системой трансмиссии автомобиля, поскольку существует разница в константах времени на несколько порядков (например, тактовая частота 100 МГц по сравнению с самой короткой инерционной постоянной времени 1 ~ мс). Тогда имеет смысл моделировать аналоговую подсистему внутри симулятора RTL. Более того, в большинстве ситуаций управления предприятием используется отрицательная обратная связь с обратной связью, при этом контроллер так же хорошо справляется с управлением. модель растения с небольшими ошибками выдает себя за реальную модель.
В соответствии с формализмом ELN циклы инициализации и моделирования SystemC расширены для поддержки решения узлового потока. уравнения. Решение узлового уравнения обычно решается итеративно. вместо использования прямых методов, таких как метод исключения по Гауссу или основанный на на обратных матрицах. Итеративные методы, как правило, имеют большую стабильность. и быстры, когда государство лишь немного продвинулось от предыдущий временной шаг. Когда ядро удаляет из очереди событие с опережением времени из очереди событий время моделирования увеличивается. Аналог часть симулятора поддерживает квант времени, за пределами которого узловой уравнения необходимо пересчитать. Этот квант динамически корректируется в зависимости от поведения уравнений. Если уравнения «бенди», что означает, что линейная экстраполяция с использованием метода Эйлера по квант приведет к слишком большой ошибке, шаг по времени уменьшится, в противном случае его можно постепенно увеличивать на каждом этапе. В целом, два необходимы формы итерации: первая — это итерация по времени для решения узловые уравнения с достаточной точностью. Второй находится между временные шаги. В простой реализации, как только время моделирования истечет продвинутая за пределы кванта Эйлера, аналоговая подсистема решено повторно. Если ошибки экстраполяции слишком велики, симулятор необходимо вернуться к последнему временному шагу и снова смоделировать движение вперед, используя меньший аналоговый квант. Этот механизм также является основой SPICE. симуляции. Каждая аналоговая переменная, являющаяся аргументом «перекрестия», или другая аналоговая чувствительность, затем проверяется, есть ли новые цифровые работа домена запущена. Если да, то новые события вводятся в дискретное событие. очередь на текущее время симуляции.
LSF — линейный поток сигналов
[ редактировать ]Библиотека линейного потока сигналов (LSF) SystemC предоставляет набор примитивов. аналоговые операторы, такие как сумматоры и дифференциаторы, которые позволяют все основные структуры, встречающиеся в дифференциальных уравнениях, являются построен в самодокументируемой и исполняемой форме. преимущество построения системы из стандартной библиотеки операторов возможно ли «отражение»: другой код может анализировать структуру и выполнять аналитическое дифференцирование, суммирование, интегрирование и другие формы анализа, такие как анализ чувствительности для определения хороший временной шаг. Это было бы невозможно для реализации, использующей специальное кодирование. В общем программировании под рефлексией понимается программа, способная читать собственный исходный код.
Порты
[ редактировать ]Определение входа/выхода TDF:
sca_tdf::sca_in<PortType> sca_tdf::sca_out<PortType>
Определение входа/выхода преобразователя TDF:
sca_tdf::sc_in<PortType> // DE → TDF inport sca_tdf::sc_out<PortType> // TDF → DE outport
Определение терминала ELN:
sca_eln::sca_terminal
Узлы
[ редактировать ]sca_eln::sca_node // ELN node sca_eln::sca_node_ref // ELN reference node
Кластер
[ редактировать ]ToDo: description
Отслеживание
[ редактировать ]sca_trace_file *tf = sca_create_tabular_trace_file("trace_file_name.dat");
sca_trace(tf, <PORT|SIGNAL|NODE>, "name");
Пример кода
[ редактировать ]ИВС
[ редактировать ]Модель нижних частот временного потока данных 1-го порядка:
#include <systemc-ams>
using namespace sca_util; // introduced for convenience: sca_util::sca_vector<TYPE> → sca_vector<TYPE>
using namespace sca_core; // introduced for convenience: sca_core::sca_time() → sca_time()
using namespace sca_ac_analysis; // introduced for convenience: sca_ac_analysis::sca_ac() → sca_ac()
SCA_TDF_MODULE(tdf_low_pass)
{
// TDF ports
sca_tdf::sca_in<double> inp;
sca_tdf::sca_out<double> outp;
// parameters
double fcut; // cut-off frequency
// methods
void initialize(); // simulator callback for initialization purpose
void ac_processing(); // simulator callback for AC behavior implementation
void processing(); // simulator callback for time implementation
// constructor
SCA_CTOR(tdf_low_pass) {
fcut = 1.0e3; // cut-off frequency 1kHz
}
private:
sca_vector<double > num; // numerator coefficients
sca_vector<double > den; // de-numerator coefficients
sca_vector<double > state; // state vector
sca_tdf::sca_ltf_nd ltf_nd; // linear transfer function (numerator/de-numerator type)
};
линейная передаточная функция:
// initialize linear transfer function coefficients
void tdf_low_pass::initialize(){
num(0) = 1.0;
den(0) = 1.0;
den(1) = 1.0/(2.0*M_PI*fcut);
}
ToDo: описание
// AC implementation
void tdf_low_pass::ac_processing(){
sca_ac(outp) = sca_ac_ltf_nd(num, den, sca_ac(inp));
}
ToDo: описание
// time domain implementation
void tdf_low_pass::processing(){
outp = ltf_nd(num, den, state, inp);
}
ЭЛН
[ редактировать ]Список цепей нижних частот электрических-линейных сетей 1-го порядка:
SC_MODULE(eln_low_pass_netlist)
{
// sca eln terminals
sca_eln::sca_terminal n1;
sca_eln::sca_terminal n2;
// internal nodes
sca_eln::sca_node_ref gnd;
// eln modules
sca_eln::sca_r i_r;
sca_eln::sca_c i_c;
SC_CTOR(eln_low_pass_netlist) : i_r("i_r"), i_c("i_c")
{
i_r.value = 1.0;
i_r.p.bind(n1);
i_r.n.bind(n2);
i_c.value = 1.0/(2.0*M_PI*1.0e3);
i_c.p.bind(n2);
i_c.n.bind(gnd);
}
};
ЛСФ
[ редактировать ]Список соединений с линейным потоком сигналов:
История
[ редактировать ]Исследовательская группа SystemC AMS была основана в 2002 году для разработки и поддержки аналоговых и смешанных расширений SystemC, а также для создания рабочей группы OSCI (инициатива Open SystemC) SystemC-AMS. Исследовательская группа провела первоначальные исследования, определила и внедрила расширение SystemC, чтобы продемонстрировать осуществимость этого подхода. В 2006 году была профинансирована рабочая группа SystemC AMS, которая продолжила работу исследовательской группы внутри OSCI и теперь продолжает работу над SystemC AMS в рамках Accellera Systems Initiative, в результате чего в 2010 году появился стандарт AMS 1.0. После выпуска стандарт Accellera SystemC AMS 2.0 в 2013 году, в 2014 году этот стандарт был передан Ассоциации стандартов IEEE для дальнейшего внедрения и поддержки в отрасли. Стандарт SystemC AMS был выпущен 6 апреля 2016 года как IEEE Std 1666.1-2016. [2] [3] COSEDA Technologies предоставляет COSIDE первую коммерчески доступную среду проектирования, основанную на стандарте SystemC AMS.
Ссылки
[ редактировать ]- ^ «СистемС АМС» . Accellera.org . Проверено 1 августа 2016 г.
- ^ «SystemC AMS (аналоговый/смешанный сигнал)» . Accellera.org . Проверено 1 августа 2016 г.
- ^ «SystemC-AMS и проектирование встраиваемых систем смешанных сигналов» . www.systemc-ams.org . Проверено 1 августа 2016 г.
Внешние ссылки
[ редактировать ]- Симулятор фазовой автоподстройки частоты в SystemC AMS - Америко Диас - Ключевые слова: фазовая автоподстройка частоты, ФАПЧ, SystemC-AMS
- Примеры SystemC AMS - Вольфганг Шерр - Ключевые слова: фильтр, АЦП, SystemC-AMS