Verilog-A Language

Download Report

Transcript Verilog-A Language

Verilog-A Language
By
William Vides
Modfied by George Engel
Difference between Digital and
Analog Design
Always @ (enable) begin
valid = 1’b0;
// do write cycle
addr_lines = addr;
data_lines = data;
@ (negedge clk) begin
valid = 1’b1;
end
end Down
Top
Refined from HDL
Bottom-Up
Level
Transistor level
Verilog-A as an extension of
Spice
Higher level
of abstraction
Behavioral
Gate
Switch
Circuit
Analog System Description and
simulation
 Structural Description
• a module is comprised of other child modules
 Behavioral Description
• descriptions in a programmatic fashion with
the Verilog-A language
• The module is defined in terms of the values
for each signal
 Mixed-level Descriptions
• Combine both Structural and Behavioral
Descriptions
Modem Example
modem
modulator
channel
The modem system is made up of
1) the modulator
2) a channel
3) the demodulator
demodulator
Structural Description hierarchy
Module: qam
Instance: mod
Instance: c1
Instance: demod
module: qam_mod module: channel module: qam_demod
Structural Description of the
Modem System
// Verilog A definition of the modem System
`include “std.va”
module modem( dout, din)’
inout dout, din;
electrical dout, din;
parameter real fc = 100.0e6;
electrical clk, cin, cout;
qam_mod #(.carrier_freq(fc)) mod (cin,din,clk);
channel c1 ( cout, cin);
qam_demod #(.carrier_freq(fc)) demod (dout,cout,clk);
endmodule
Structural Description
Type of module instance
Name of the instance created
qam_mod # ( .carrier_freq(fc)) mod ( cin, din, clk);
Parameter name in child ( qam_mod) module
assigned as: carrier_freq = fc
16_QAM modem Example
A cos( 2 pi fct + pi/4)
ai
2-bit
d2a
di
din
mout
Serin_parout
A(t)cos( 2pifct +
0(t))
dq
2-bit
d2a
aq
A sin( 2pi fct + pi/ 4)
Verilog A mixed Signal definition
of 16-QAM modulator
module qam_mod( mout, din, clk);
inout mout, din, clk;
electrical mout, din, clk;
parameter real fc = 100.0e6;
electrical di1,di2, dq1, dq2;
electrical ai, aq;
serin_parout sipo( di1,di2,dq1,dq2,din,clk);
d2a d2ai(ai, di1,di2,clk);
d2a d2aq(aq, dq1,dq2,clk);
real phase;
Verilog A mixed Signal definition
of 16-QAM modulator
analog begin
phase = 2.0 * `M_PI * fc* $realtime() + `M_PI_4;
V(mout) <+ 0.5 * (V(ai) * cos(phase) + V(aq) * sin (phase));
end
endmodule
The behavioral definition of the QAM
modulation is defined
The signals ai and aq are the outputs of the 2-bit D/A converters
Type of analog systems
 Conservative Systems
• use of Kirchoff’s laws
• Electrical Systems use KVL and KCL
• Any conservative System use KPL and KFL
– applied to branches
 Signal Flow Systems
• only potential is associated with every node
• unidirectional
• notion of ports ( input / output)
Conservative Systems
Device
+
V
-
In a conservative system the charges or signals can enter a
particular device in both ways.
Signal Flow Systems
in
Out
Amplifier
In signal flow systems a signal can only enter a device
in one way only.
What is Simulation?

simulation is a process in which a system
of nonlinear ordinary differential equations
is solved
 this equations are not input directly , but
derived from each of the models that are
interconnected in the netlist
What it means to the user ?
 To the user a simulation is essentially a
software version of an oscilloscope or
logic analyzer.
 A simulation is a technique by which the
user ask questions and receives answers
from a program .
 The quality of the answers depends on the
quality of the questions.
Analog System Simulation
 The Standard approach to analog circuit
simulation involves
• formulate the differential-algebraic equations
for the circuit
• applying implicit integration methods to the
sequence of nonlinear algebraic equations
• iterative methods such as Newton-Raphson to
reduce to a set of linear equations
• using sparse matrix techniques to solve the
linear equations
Analog Model Properties
 The Verilog-A language can be used to
represent different types of behaviors
these include
•
•
•
•
•
Linear
Nonlinear
Piecewise linear
Integro differential
Event-driven Analog
Analog Operators
 The Verilog-A language defines analog
operators for
•
•
•
•
•
•
Time Derivative
Time Integral
Linear time delay
Discrete waveform filters
LaPlace Transform filters
Z-transform filters
Time Derivative Operator
 The ddt Operator computes the time
derivative of its arguments
• ddt ( expression)
In DC analysis the ddt operator returns a
zero.
 Application of the ddt operator results in a
zero at the origin.

Time Integral Operator

The idt operator computes the time
integral of its arguments
• idt( expression, ic, reset)
 When specified with initial conditions the
idt operator returns the value of the initial
condition in DC.
 Without initial conditions , idt multiplies its
argument by infinity in DC analysis.
Time Integral Operator
 The Optional argument RESET allows
resetting of the integrator to the initial
condition or IC value.
 Application of the idt operator results in a
pole at the origin.
Delay Operator
 Delay operator implements a transport or
linear time delay for continuous waveforms
• delay ( expression, dt)
 The parameter DT must be positive
 The effect of the delay operator in the time
domain is to provide a direct time
translation of the input
Transition Operator
 The transition operator smooths out piece-
wise constant waveforms.
 The transition filter is used to imitate
transitions and delays on discrete signals
• transition ( expression, dt, tr, tf)
 The input expression to the transition
operator must be defined in terms of
discrete states.
Transition Operator
 The parameters dt, tr, tf are optional
• tr - transition rise
• tf - transition fall
• dt - change in time
 if dt is not specified then it is taken to be
zero
 if the value for tr is specified the simulator
will use it for both the rise and fall times.
Transition Operator
 When rise and fall times are longer than
the specified delay
• if the new final value level is below the current
value the transition Operator uses the old
destination as the origin.
• If the new destination is above the current
level the first origin is retained
Transition Operator
Translated Origin
tf
Input change
Old origin
Old value
New value
tr
A rising transition is interrupted near its midpoint, and the new
destination level of the value is below the current value. For the
new origin and destination. The transition computes the slope
that completes the transition from origin in the specified transition
time. It then uses the computed slope to transition from the
current value to the new destination.
Slew Operator
 The slew operator bounds
the slope of the
waveform
 used to generate continuous signals from
piece-wise continuous signals
• slew ( expression, mpsr, mnsr)
• mpsr - maximum positive slew rate
• mnsr - minimum negative slew rate
Slew Operator
 The Slew Operator forces all transitions of
the input expression faster than mpsr to
change at mpsr for positive transitions and
limits negative transitions to mnsr
 mpsr must be greater than zero
 mnsr must be lower than zero
 if only one rate is specified, the absolute
value will be used for both rates
Slew Operator
 If no rate is specified the slew operator
passes the signal through unchanged.
 In DC analyses, the slew operator passes
the value of the destination to its output
 In AC small-signal analyses the slew
function has unity transfer function
• except when slewing, in that case it has zero
transmission through the slew operator
Laplace Transform Operators
 The Laplace transform operators
implement lumped, continuous-time filters
•
•
•
•
laplace_zp(express, numerator, denominator)
lapace_zd(express, numerator,denominator)
lapace_np( express, numerator,denominator)
lapace_nd(express, numerator,denominator)
– H(s) = N(s)/D(s)
Laplace Transform Operator
 The laplace transform analog operator take
vector arguments that specify the
coefficients of the filter
 Laplace analog operators represent linear
time-Invariant filters
 laplace_zp - the zeros and poles are
specified as pairs of real numbers
• specifying the real and imaginary components
of each zero or pole
Laplace Transform Operator
 Laplace_nd - zeros and poles of the filter
are specified as polynomial coefficients
from lowest order term to highest
 Laplace_zd - zeros of the filter are specified
as pairs of real numbers and the poles of
the filter are specified as polynomial
coefficients
Laplace Transform Operator
 Laplace_np - Zeros of the filter are
specified as polynomial coefficients and
the poles of the filter are specified as pairs
of real numbers
Laplace Transform example
// Laplace analog operator example of Butterworth low-pass
// filter using laplace_nd
module laplace_op(out , in);
inout out, in;
electrical out, in;
analog
V(out) <+ laplace_nd ( V(in), {1.0},
{1.0, 3.236, 5.236, 5.236, 3.236, 1.0});
endmodule
Taken from the equation
H(s) = 1/( s^5 + 3.236s^4 +5.236s^3 +5.236s^2 +3.236s +1)
Z-Transform Operators
 The Z-Transform
operators implement
linear discrete-time filters
• zi_zp( expression, numerator,denominator,T
,trf ,t0)
• zi_zd( expression, numerator,denominator,T
,trf ,t0)
• zi_np( expression, numerator,denominator,T
,trf ,t0)
• zi_nd( expression, numerator,denominator,T
,trf ,t0)
Z-Transform Operators
• H( z ) = N( z )/ D( z )
 the Z-transform analog operator take
vector arguments that specify the
coefficients of the filter.
 All Z-transform share the arguments T, trf,
and t0
• T -specifies the period of the filter
– mandatory and must be positive
Z-Transform Operators
• Trf - specifies the optional transition time and
must be positive
– if trf is zero, then the output is abruptly
discontinuous
– a Z-transform filter with zero transition time
assigned directly to a source branch can generate
discontinuities
• t0 - specifies the time of the first transition and
is optional
– if t0 is not given, the transition occurs at t=0
Z-Transform Operators
 Zi_zp - zeros and poles of the filter are
specified as pairs of real numbers
• specifying the real and imaginary components
of each zero or pole
 zi_nd- zeros and poles of the filters are
specified as polynomial coefficients
• from the lowest order term to the highest
Z-Transform Operators
 Zi_zd - zeros
of the filter are specified as
pairs of real numbers and the poles of the
filter are specified as polynomial
coefficients
 zi_np- zeros
of the filters are specified as
polynomial coefficients and the poles of
the filter are specified as pairs of real
numbers
Capacitor Macromodel
// capacitor_macro.va
`include "constants.h"
`include "discipline.h"
module capacitor_macro(top, bot);
inout
top, bot ;
electrical top, bot ;
parameter real C = 1p ;
analog begin
I(top,bot) <+ C * ddt(V(top, bot)) ;
end
endmodule
Resistor Macromodel
// resistor_macro.va
`include "discipline.h"
`include "constants.h"
module resistor_macro(a,b);
inout a,b;
electrical a,b;
branch(a,b) res;
parameter real R=10K;
analog begin
I(res) <+ V(res) / R ;
end
endmodule
Common Emitter amplifier with
RC bandpass filter Example
Vin
Vout
R2
n1
gain =25.0
C1
R1
C2
gnd
Verilog A behavioral description
of ce-amp with RC bandpass filter
module mbce_amp_rcn ( in, out, gnd);
inout in, out, gnd;
electrical in, out, gnd;
parameter real gain = 1.0;
parameter real r1 = 4k;
parameter real c1 = 100n;
parameter real r2 = 100k;
parameter real c2 = 2.8p;
electrical n1, n2;
Verilog A behavioral description of
ce-amp with RC bandpass filter
analog begin
I( in, n1) <+ c1 * ddt( V(in,n1));
V(n1, gnd) <+ r1 * I(in,n1);
I(n1,n2) <+ V(n1, n2) / r2;
I(n2,gnd) <+ c2* ddt( V(n2, gnd));
V(out, gnd) <+ V(n2,gnd) * (-gain);
end
endmodule
Switch Macromodel
// ideal switch
`include "disciplines.h"
`include "constants.h"
module sw_macro(ctl, inp, outp);
inout
inp, ctl, outp ;
electrical
inp, ctl, outp ;
parameter
parameter
parameter
parameter
parameter
real Rch ;
real Vth=2.5 from (0:5) ;
real Ron = 1k from (0:inf) ;
real Roff = 1e12 from (0:inf) ;
real tr=100p from [0:inf) ;
real tf=100p from [0:inf) ;
Switch Macromodel (2)
analog begin
if (analysis("static")) begin
Rch = Roff ;
end else
begin
if (V(ctl) < Vth) Rch = Roff ;
else Rch = Ron ;
end;
I(inp, outp) <+ V(inp, outp) / transition(Rch,0, tr, tf) ;
end
endmodule
CSA Macromodel
//
// csa_macro
//
`include "discipline.h"
`include "constants.h"
module csa_macro(inp, lo_gain, csa_gnd, outp) ;
inout
inp, outp, lo_gain, csa_gnd ;
electrical inp, outp, lo_gain, csa_gnd ;
CSA Macromodel (2)
parameter real gm_lo = 2.4e-3 ;
parameter real gm_hi = 12e-3 ;
parameter real Gf_lo = 500e-9 ;
parameter real Gf_hi = 100e-9 ;
parameter real Cf_lo = 12.5e-12 ;
parameter real Cf_hi = 2.5e-12 ;
parameter real Cfl_lo = 14e-12 ;
parameter real Cfl_hi = 3e-12 ;
parameter real Ct_lo = 95e-12 ;
parameter real Ct_hi = 85e-12 ;
parameter real b0_lo = gm_lo * Gf_lo ;
parameter real b0_hi = gm_hi * Gf_hi ;
parameter real b1_lo = gm_lo * Cf_lo ;
parameter real b1_hi = gm_hi * Cf_hi ;
parameter real b2_lo = Ct_lo * Cfl_lo ;
parameter real b2_hi = Ct_hi * Cfl_hi ;
parameter real Vtp = 0.75 ;
parameter real Vdss = 0.48546 ;
real Vin0, Vin1, vos ;
CSA Macromodel (3)
analog begin
@(initial_step) begin
vos = V(csa_gnd) - Vtp - Vdss ;
end ;
if (analysis("static")) begin
vos = V(csa_gnd) - Vtp - Vdss ;
Vin0 = vos ;
Vin1 = vos ;
V(outp) <+ vos ;
end
CSA Macromodel (4)
else begin
Vin0 = vos + 0.9 * laplace_nd(I(inp),
{-1 * gm_hi, 0, 0} ,
{b0_hi, b1_hi, b2_hi}) ;
Vin1 = vos + 0.9 * laplace_nd(I(inp),
{-1 * gm_lo , 0, 0} ,
{b0_lo, b1_lo , b2_lo}) ;
if (V(lo_gain) == 0)
V(outp) <+ Vin0 ;
else
V(outp) <+ Vin1 ;
end;
end
endmodule