Jump to content

Верилог-А

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

История [ править ]

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 .

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

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

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

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

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

Пример кода [ править ]

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

`include "constants.vams"
`include "disciplines.vams"

module example(a,b,c,d,e,f);
	
	parameter real R = 1m;
	parameter real C = 1u;
	parameter real L = 1u;
	parameter integer gain = 2;
	
	input a;
	output b;
	inout c,d,e,f;
	
	electrical a,b,c,d,e,f;
	
	analog begin
		
		// Modelling lumped elements
		//Resistor
		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) и температуры окружающей среды моделируемой схемы:

// Ideal Diode
module diode (a, c); 
    inout a, c; 
    electrical a, c; 
    parameter real IS = 1.0e-14;  // User-configurable saturation current
    real idio;
    /*
     *  Calculate nonlinear current through diode depending on
     *   - thermal voltage $vt (at ambient temperature of simulated circuit) and
     *   - voltage between terminals
     */
    analog begin
        idio = IS * (limexp(V(a,c)/$vt) - 1); 
        I(a,c) <+ idio; 
    end 
endmodule

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

// DC Source
module vsrc (p,n);
  parameter real dc = 1.0;
  inout p, n;
  electrical p, n;

  analog begin
    // Assign constant DC voltage at each time step:
    V(p,n) <+ dc;
  end
endmodule

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

// A Sinusoidal Voltage Source
`include "constants.vams" 

module vsin (p,n);
  parameter real amplitude = 1.0;
  parameter real freq = 50.0; 
  parameter real phase = 0.0;
  inout p, n;
  electrical p, n;

  analog begin
    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» . нгспайс . Проверено 17 июля 2019 г.

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: daf47d53dd3b94b2ec708ecff59aa764__1702478760
URL1:https://arc.ask3.ru/arc/aa/da/64/daf47d53dd3b94b2ec708ecff59aa764.html
Заголовок, (Title) документа по адресу, URL1:
Verilog-A - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)