Verilog-A

редактировать

Verilog-A - это стандартный язык моделирования аналоговых схем. Это подмножество непрерывного времени Verilog-AMS.

Содержание
  • 1 История
  • 2 Стандартная доступность
  • 3 Совместимость с языком программирования C
  • 4 Пример кода
  • 5 См. также
  • 6 Ссылки
  • 7 Внешние ссылки
История

Verilog-A был создан в связи с необходимостью стандартизации поведенческого языка Spectre перед лицом конкуренции со стороны VHDL (стандарт IEEE), который поглощал аналоговые возможности других языков (например, MAST). Open Verilog International (OVI, орган, который первоначально стандартизировал Verilog) согласился поддержать стандартизацию при условии, что это было частью плана по созданию Verilog-AMS - единого языка, охватывающего как аналоговую, так и цифровую архитектуру. Verilog-A был полностью аналоговым подмножеством Verilog-AMS, который был первой фазой проекта.

Между выпуском первого справочного руководства по языку Verilog-A и полным Verilog-AMS произошла значительная задержка (возможно, задержка), и в это время Verilog перешел на IEEE, оставив Verilog-AMS на Accellera.

. Журнал электронной почты от 2000AD можно найти здесь.

Стандартная доступность

Стандарт Verilog-A не существует отдельно - он является частью полного стандарта Verilog-AMS. Его LRM доступен на сайте Accellera. Однако первоначальный и последующие выпуски можно найти здесь, а то, что, вероятно, будет финальным выпуском здесь, поскольку в будущих работах будут использоваться новые возможности сетевого типа в SystemVerilog. Встроенные типы, такие как "wreal" в Verilog-AMS, станут определяемыми пользователем типами в SystemVerilog в большей степени в соответствии с методологией VHDL.

Совместимость с языком программирования C

Подмножество Verilog-A может быть автоматически переведено на язык программирования C с помощью модели автоматического устройства Синтезатор (ADMS). Эта функция используется, например, для перевода моделей транзисторов BSIM Verilog-A, которые больше не выпускаются на C, для использования в симуляторах, таких как ngspice.

Пример кода

Этот первый пример дает первую демонстрацию моделирования в Verilog-A:

ʻinclude "constants.vams" ʻinclude "disclines.vams" пример модуля (a, b, c, d, e, f); параметр действительный R = 1м; параметр real C = 1u; параметр real L = 1u; параметр integer gain = 2; введите a; выход b; inout c, d, e, f; электрические a, b, c, d, e, f; аналоговое начало // Моделирование сосредоточенных элементов // Резистор V (c, d) <+ R*I(c,d); //Inductor // Multiple current or voltage assignments are accumulated V(c,d) <+ L * ddt(I(c,d)); //Capacitor I(e,f) <+ C * ddt(V(e,f)); // Simple amplifier // Voltages are referenced to ground if no second node is given V(b) <+ gain * V(a); end endmodule

Этот пример Verilog-AMS реализует идеальный диод, определяя ток через ответвление (a, c) в зависимости от напряжения на выводах ответвления (a), (c), и температура окружающей среды моделируемой схемы:

// Идеальный диодный модуль диод (a, c); inout a, c; электрические a, c; параметр real IS = 1.0e-14; // Настраиваемая пользователем насыщенность current real idio; / * * Рассчитать нелинейный ток через диод в зависимости от * - теплового напряжения $ vt (при температуре окружающей среды моделируемой схемы) и * - напряжения между выводами * / analog begin idio = IS * (limexp (V (a, c) / $ vt) - 1); I (a, c) <+ idio; end endmodule

Для простого источника постоянного напряжения напряжение ветви устанавливается на постоянное (DC) значение:

// Модуль источника постоянного тока vsrc (p, n); параметр real dc = 1.0; inout p, n; электрические p, n; аналоговое начало // Назначение постоянного напряжения постоянного тока на каждом временном шаге: V (p, n) <+ dc; end endmodule

Генератор синусоидального напряжения может использовать встроенную функцию sin ():

// Источник синусоидального напряжения "включает" константы.vams "модуль vsin (p, n); параметр реальной амплитуды = 1.0; параметр real freq = 50.0; параметр реальной фазы = 0,0; inout p, n; электрические p, n; аналоговое начало V (p, n) <+ amplitude * sin(`M_TWO_PI * freq * $abstime + phase); $bound_step(0.1/freq); // demand at least 10 points per cycle to avoid aliasing issues end endmodule
См. также
Ссылки
  1. ^Стандарт Verilog-AMS
  2. ^«Рекомендации по преобразованию Verilog-A в C». ngspice. Проверено 17 июля 2019 г.
Внешние ссылки
Последняя правка сделана 2021-06-18 11:27:11
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте