added LCD seminararbeit
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
VA_FILE = demo.va
|
||||
TOP_LEVEL_MODULE = demo
|
||||
|
||||
CMD_FILE = demo.cmd
|
||||
DO_FILE = run.do
|
||||
OUT_FILE = demo.wdb
|
||||
|
||||
|
||||
|
||||
sim:
|
||||
valog $(VA_FILE)
|
||||
vasim -c -cmd $(CMD_FILE) -do $(DO_FILE) $(TOP_LEVEL_MODULE)
|
||||
|
||||
ezwave:
|
||||
ezwave -now -loc 10 10 -width 2400 -height 1200 -tcl create_plots.tcl
|
||||
|
||||
clean:
|
||||
rm DefaultVlogALib -rf
|
||||
rm *.chi *.log *.id *.reuse *.wdb -rf
|
||||
rm simcommand transcript* dok_code* -rf
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
############################################################
|
||||
## EZwave - Saved Window File
|
||||
## Tuesday, June 15, 2021 at 1:00:12 AM CEST
|
||||
##
|
||||
## Note: This is an auto-generated file.
|
||||
##
|
||||
## In case of modification, Do not remove this comment
|
||||
############################################################
|
||||
|
||||
onerror {resume}
|
||||
|
||||
# ===== Open required Database =====
|
||||
dataset open /users/ads1/schmidtsi76327/linux/esy1a/LCD_EPD_Simulation_VerilogA/lcd/reflection_vs_input_voltage_lcd_cap/demo.wdb demo
|
||||
|
||||
# ====== Create the expressions =====
|
||||
|
||||
|
||||
|
||||
# ===== Open the window =====
|
||||
wave addwindow -x 0 -y 0 -width 767 -height 558 -divider 0.85
|
||||
|
||||
# ===== Create row #1 =====
|
||||
add wave -versus V(:demo:lcc:(a,b)) VAR(:demo:lcc:trans)
|
||||
|
||||
|
||||
# ====== Create the cursors, markers and measurements =====
|
||||
@@ -0,0 +1,3 @@
|
||||
* demo.cmd
|
||||
|
||||
.tran 1u 10m
|
||||
@@ -0,0 +1,103 @@
|
||||
|
||||
`include "disciplines.vams"
|
||||
`include "constants.vams"
|
||||
|
||||
module myfet(d, g, s);
|
||||
inout electrical d, g, s;
|
||||
parameter real kp = 1m;
|
||||
parameter real vt = 1;
|
||||
real vgst;
|
||||
real cur;
|
||||
analog begin
|
||||
vgst = V(g,s)-vt;
|
||||
cur = 0.0;
|
||||
if (vgst > 0)
|
||||
if (vgst > V(d,s))
|
||||
cur = (vgst-0.5*V(d,s))*V(d,s);
|
||||
else
|
||||
cur = 0.5*pow(vgst, 2);
|
||||
I(d,s) <+ kp*cur;
|
||||
end
|
||||
endmodule
|
||||
|
||||
|
||||
module lccap(a,b);
|
||||
inout a,b; //Interface ports
|
||||
electrical a,b;
|
||||
electrical force_node; //Internal node
|
||||
|
||||
real vext=0;
|
||||
real vv=0;
|
||||
real vforce=0;
|
||||
|
||||
parameter real rforce=1; // Rd
|
||||
parameter real cforce=0.001; // Cd
|
||||
parameter real tau = rforce*cforce; // tau=Rd*Cd
|
||||
|
||||
real vcontrol= 0; // RMS Voltage to control the angle
|
||||
|
||||
// capacitance
|
||||
real cap = 0;
|
||||
real qlc = 0;
|
||||
parameter real cmin=2.5e-15; // C
|
||||
parameter real cmax=8.0e-15; // Cparallel
|
||||
|
||||
real alpha = 0;
|
||||
parameter real delta_sq = 0.1;
|
||||
parameter real vtc = 2;
|
||||
parameter real vmc = 0.1;
|
||||
|
||||
// transmittance / reflectance
|
||||
real beta = 0;
|
||||
real trans=0;
|
||||
|
||||
parameter real tmin = 0.01;
|
||||
parameter real eta_sq = 0.1;
|
||||
parameter real vmo = 0.9;
|
||||
parameter real vto = 2;
|
||||
|
||||
analog
|
||||
begin
|
||||
@(initial_step)
|
||||
begin
|
||||
//Initial voltage for internal node
|
||||
vforce = 0;
|
||||
end
|
||||
|
||||
begin
|
||||
//Probing terminal voltage
|
||||
vext = V(a,b);
|
||||
vv = vext * vext;
|
||||
|
||||
// Calculation of Internal node voltage
|
||||
I(force_node) <+ ddt(cforce * V(force_node)); // current into Cd
|
||||
I(force_node) <+ (V(force_node)-vv) / rforce; // current from Rd
|
||||
vforce = V(force_node);
|
||||
vcontrol = sqrt(vforce); // calculate RMS Voltage
|
||||
|
||||
// C-V calculation
|
||||
alpha = (vcontrol - vtc) / vmc;
|
||||
cap = cmin + (2/`M_PI) * (cmax-cmin) * atan( (alpha + sqrt(alpha * alpha + delta_sq ))/2);
|
||||
qlc = cap * vext; // delta Q
|
||||
I(a,b) <+ ddt(qlc); // dQ / dt
|
||||
|
||||
// T-V calculation
|
||||
beta = (vcontrol - vto)/ vmo;
|
||||
trans = 1 - (1-tmin)*tanh( (beta+sqrt(beta*beta + eta_sq)) / 2 );
|
||||
|
||||
end
|
||||
end
|
||||
endmodule
|
||||
|
||||
|
||||
module demo;
|
||||
electrical src_out, gate, out, gnd;
|
||||
ground gnd;
|
||||
|
||||
analog begin
|
||||
V(out) <+ idt(6.0 * 100, 0, 0); // ramp 0-6V in 10ms
|
||||
$bound_step(10u/100); // bessere Aufloesung
|
||||
end
|
||||
|
||||
lccap lcc(out, gnd);
|
||||
endmodule
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,4 @@
|
||||
add wave -r *
|
||||
add wave -i -r *
|
||||
run -all
|
||||
quit -f
|
||||
@@ -0,0 +1,23 @@
|
||||
VA_FILE = demo.va
|
||||
TOP_LEVEL_MODULE = demo
|
||||
|
||||
CMD_FILE = demo.cmd
|
||||
DO_FILE = run.do
|
||||
OUT_FILE = demo.wdb
|
||||
|
||||
|
||||
|
||||
sim:
|
||||
valog $(VA_FILE)
|
||||
vasim -c -cmd $(CMD_FILE) -do $(DO_FILE) $(TOP_LEVEL_MODULE)
|
||||
|
||||
ezwave:
|
||||
ezwave -now -loc 10 10 -width 2400 -height 1200 -tcl create_plots.tcl
|
||||
|
||||
clean:
|
||||
rm DefaultVlogALib -rf
|
||||
rm *.chi *.log *.id *.reuse *.wdb -rf
|
||||
rm simcommand transcript* -rf
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
############################################################
|
||||
## EZwave - Saved Window File
|
||||
## Tuesday, June 15, 2021 at 12:44:25 AM CEST
|
||||
##
|
||||
## Note: This is an auto-generated file.
|
||||
##
|
||||
## In case of modification, Do not remove this comment
|
||||
############################################################
|
||||
|
||||
onerror {resume}
|
||||
|
||||
# ===== Open required Database =====
|
||||
dataset open /users/ads1/schmidtsi76327/linux/esy1a/LCD_EPD_Simulation_VerilogA/lcd/transient_response_lcd_cap/demo.wdb demo
|
||||
|
||||
# ===== Open the window =====
|
||||
wave addwindow -x 0 -y 0 -width 1490 -height 1075 -divider 0.82
|
||||
|
||||
# ===== Create row #1 =====
|
||||
add wave -overlay -show TRAN.v -color -16711936 -separator : -terminals :demo:lcc:(a,b) -show TRAN.var -color -256 -separator : -signals :demo:lcc:vcontrol
|
||||
|
||||
|
||||
# ===== Create row #2 =====
|
||||
add wave -show TRAN.var -color -16744193 -separator : -signals :demo:lcc:cap
|
||||
|
||||
|
||||
# ===== Create row #3 =====
|
||||
add wave -show TRAN.v -color -32768 -separator : -terminals :demo:gate
|
||||
|
||||
|
||||
# ====== Create the cursors, markers and measurements =====
|
||||
@@ -0,0 +1,3 @@
|
||||
* demo.cmd
|
||||
|
||||
.tran 1u 5m
|
||||
@@ -0,0 +1,116 @@
|
||||
|
||||
`include "disciplines.vams"
|
||||
`include "constants.vams"
|
||||
|
||||
module myfet(d, g, s);
|
||||
inout electrical d, g, s;
|
||||
parameter real kp = 1m;
|
||||
parameter real vt = 1;
|
||||
real vgst;
|
||||
real cur;
|
||||
analog begin
|
||||
vgst = V(g,s)-vt;
|
||||
cur = 0.0;
|
||||
if (vgst > 0)
|
||||
if (vgst > V(d,s))
|
||||
cur = (vgst-0.5*V(d,s))*V(d,s);
|
||||
else
|
||||
cur = 0.5*pow(vgst, 2);
|
||||
I(d,s) <+ kp*cur;
|
||||
end
|
||||
endmodule
|
||||
|
||||
|
||||
module lccap(a,b);
|
||||
inout a,b; //Interface ports
|
||||
electrical a,b;
|
||||
electrical force_node; //Internal node
|
||||
|
||||
real vext=0;
|
||||
real vv=0;
|
||||
real vforce=0;
|
||||
|
||||
parameter real rforce=1; // Rd
|
||||
parameter real cforce=0.001; // Cd
|
||||
parameter real tau = rforce*cforce; // tau=Rd*Cd
|
||||
|
||||
real vcontrol= 0; // RMS Voltage to control the angle
|
||||
|
||||
// capacitance
|
||||
real cap = 0;
|
||||
real qlc = 0;
|
||||
parameter real cmin=2.5e-15; // C
|
||||
parameter real cmax=8.0e-15; // Cparallel
|
||||
|
||||
real alpha = 0;
|
||||
parameter real delta_sq = 0.1;
|
||||
parameter real vtc = 2;
|
||||
parameter real vmc = 0.1;
|
||||
|
||||
// transmittance / reflectance
|
||||
real beta = 0;
|
||||
real trans=0;
|
||||
|
||||
parameter real tmin = 0.01;
|
||||
parameter real eta_sq = 0.1;
|
||||
parameter real vmo = 0.9;
|
||||
parameter real vto = 2;
|
||||
|
||||
analog
|
||||
begin
|
||||
@(initial_step)
|
||||
begin
|
||||
//Initial voltage for internal node
|
||||
vforce = 0;
|
||||
end
|
||||
|
||||
begin
|
||||
//Probing terminal voltage
|
||||
vext = V(a,b);
|
||||
vv = vext * vext;
|
||||
|
||||
// Calculation of Internal node voltage
|
||||
I(force_node) <+ ddt(cforce * V(force_node)); // current into Cd
|
||||
I(force_node) <+ (V(force_node)-vv) / rforce; // current from Rd
|
||||
vforce = V(force_node);
|
||||
vcontrol = sqrt(vforce); // calculate RMS Voltage
|
||||
|
||||
// C-V calculation
|
||||
alpha = (vcontrol - vtc) / vmc;
|
||||
cap = cmin + (2/`M_PI) * (cmax-cmin) * atan( (alpha + sqrt(alpha * alpha + delta_sq ))/2);
|
||||
qlc = cap * vext; // delta Q
|
||||
I(a,b) <+ ddt(qlc); // dQ / dt
|
||||
|
||||
// T-V calculation
|
||||
beta = (vcontrol - vto)/ vmo;
|
||||
trans = 1 - (1-tmin)*tanh( (beta+sqrt(beta*beta + eta_sq)) / 2 );
|
||||
|
||||
end
|
||||
end
|
||||
endmodule
|
||||
|
||||
|
||||
module demo;
|
||||
electrical src_out, gate, out, gnd;
|
||||
ground gnd;
|
||||
|
||||
parameter real on_V = 10.0;
|
||||
parameter real off_V = -1;
|
||||
|
||||
parameter real on_T = 2m; // on 1s
|
||||
parameter real off_T = 0;
|
||||
parameter real startDelay = 1m; // switch to on_V on 2ms
|
||||
|
||||
analog begin
|
||||
$bound_step(10u); // bessere Aufloesung
|
||||
end
|
||||
|
||||
// Puls-Quelle
|
||||
/*prameters expected for 'pulse' are '[dc] [mag [phase]] val0 val1 [td [rise [fall [width [period]]]]] */
|
||||
vpulse #(.val0(off_V), .val1(on_V), .td(startDelay), .rise(1n), .fall(1n), .width(on_T)) PL(gate, gnd);
|
||||
vdc #(.dc(3.2)) VDC (src_out, gnd);
|
||||
|
||||
myfet #(.kp(1m)) FET1 (src_out, gate, out);
|
||||
|
||||
lccap lcc(out, gnd);
|
||||
endmodule
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,4 @@
|
||||
add wave -r *
|
||||
add wave -i -r *
|
||||
run -all
|
||||
quit -f
|
||||
Reference in New Issue
Block a user