Browse Source
Add some automatic bridge examples, mostly using the bidirectional bridge.
pre-master-46
Add some automatic bridge examples, mostly using the bidirectional bridge.
pre-master-46
committed by
Holger Vogt
8 changed files with 211 additions and 60 deletions
-
61examples/digital/adder_behav.cir
-
62examples/digital/adder_common.inc
-
35examples/digital/auto_bridge/74HCng_auto.lib
-
11examples/digital/auto_bridge/adder_auto.cir
-
20examples/digital/auto_bridge/adder_bidi.cir
-
23examples/digital/auto_bridge/adder_bidi2.cir
-
28examples/digital/auto_bridge/adder_bidi3.cir
-
31examples/digital/auto_bridge/shared_line.cir
@ -0,0 +1,62 @@ |
|||||
|
* Shared netlist for several example circuits using XSPICE-based 74HC00 model |
||||
|
|
||||
|
.SUBCKT ONEBIT 1 2 3 4 5 6 |
||||
|
* NODES: INPUT(2), CARRY-IN, OUTPUT, CARRY-OUT, VCC |
||||
|
X1 1 2 7 6 0 74HC00 |
||||
|
X2 1 7 8 6 0 74HC00 |
||||
|
X3 2 7 9 6 0 74HC00 |
||||
|
X4 8 9 10 6 0 74HC00 |
||||
|
X5 3 10 11 6 0 74HC00 |
||||
|
X6 3 11 12 6 0 74HC00 |
||||
|
X7 10 11 13 6 0 74HC00 |
||||
|
X8 12 13 4 6 0 74HC00 |
||||
|
X9 11 7 5 6 0 74HC00 |
||||
|
.ENDS ONEBIT |
||||
|
|
||||
|
.SUBCKT TWOBIT 1 2 3 4 5 6 7 8 9 |
||||
|
* NODES: INPUT - BIT0(2) / BIT1(2), OUTPUT - BIT0 / BIT1, |
||||
|
* CARRY-IN, CARRY-OUT, VCC |
||||
|
X1 1 2 7 5 10 9 ONEBIT |
||||
|
X2 3 4 10 6 8 9 ONEBIT |
||||
|
.ENDS TWOBIT |
||||
|
|
||||
|
.SUBCKT FOURBIT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
||||
|
* NODES: INPUT - BIT0(2) / BIT1(2) / BIT2(2) / BIT3(2), |
||||
|
* OUTPUT - BIT0 / BIT1 / BIT2 / BIT3, CARRY-IN, CARRY-OUT, VCC |
||||
|
X1 1 2 3 4 9 10 13 16 15 TWOBIT |
||||
|
X2 5 6 7 8 11 12 16 14 15 TWOBIT |
||||
|
.ENDS FOURBIT |
||||
|
|
||||
|
*** POWER |
||||
|
VCC 99 0 DC 3.3V |
||||
|
|
||||
|
*** ALL INPUTS |
||||
|
VIN1A 1 0 DC 0 PULSE(0 3 0 5NS 5NS 20NS 50NS) |
||||
|
VIN1B 2 0 DC 0 PULSE(0 3 0 5NS 5NS 30NS 100NS) |
||||
|
VIN2A 3 0 DC 0 PULSE(0 3 0 5NS 5NS 50NS 200NS) |
||||
|
VIN2B 4 0 DC 0 PULSE(0 3 0 5NS 5NS 90NS 400NS) |
||||
|
VIN3A 5 0 DC 0 PULSE(0 3 0 5NS 5NS 170NS 800NS) |
||||
|
VIN3B 6 0 DC 0 PULSE(0 3 0 5NS 5NS 330NS 1600NS) |
||||
|
VIN4A 7 0 DC 0 PULSE(0 3 0 5NS 5NS 650NS 3200NS) |
||||
|
VIN4B 8 0 DC 0 PULSE(0 3 0 5NS 5NS 1290NS 6400NS) |
||||
|
|
||||
|
*** DEFINE NOMINAL CIRCUIT |
||||
|
X1 1 2 3 4 5 6 7 8 9 10 11 12 0 13 99 FOURBIT |
||||
|
|
||||
|
.option noinit acct |
||||
|
.TRAN 500p 6400NS |
||||
|
* save inputs |
||||
|
.save V(1) V(2) V(3) V(4) V(5) V(6) V(7) V(8) |
||||
|
|
||||
|
.control |
||||
|
pre_set strict_errorhandling |
||||
|
unset ngdebug |
||||
|
*save outputs and specials |
||||
|
save x1.x1.x1.7 V(9) V(10) V(11) V(12) V(13) |
||||
|
run |
||||
|
rusage |
||||
|
* plot the inputs, use offset to plot on top of each other |
||||
|
plot v(1) v(2)+4 v(3)+8 v(4)+12 v(5)+16 v(6)+20 v(7)+24 v(8)+28 |
||||
|
* plot the outputs, use offset to plot on top of each other |
||||
|
plot v(9) v(10)+4 v(11)+8 v(12)+12 v(13)+16 |
||||
|
.endc |
||||
@ -0,0 +1,35 @@ |
|||||
|
* 74hcng_auto.lib - simplified wrapper for XSPICE NAND gate |
||||
|
* |
||||
|
* derived from 74HCng_short_2.lib but using automatic D<->A bridges. |
||||
|
* derived from 74HCxxx Model libraray for LTSPICE from www.linear.com/software |
||||
|
* |
||||
|
* XSPICE gate models are used, with output to an analogue node. |
||||
|
* |
||||
|
* Delays are given for Vcc = 2V/4.5V/6V (HC) from the |
||||
|
* Philips data sheets. http://www.philipslogic.com |
||||
|
* |
||||
|
* Delays are given for Vcc = 2V/4.5V/6V . |
||||
|
* Used delay: Td = (Tpd-Tr/2)*(4.5-0.5)/(Vcc-0.5) |
||||
|
* The gate delay has to be set to tpd minus 3ns for the input filter |
||||
|
* and another minus 3ns for Trise/2 |
||||
|
* td1 = tpd - 3ns - 3ns |
||||
|
* |
||||
|
|
||||
|
.param vcc=5 tripdt=6n |
||||
|
|
||||
|
* |
||||
|
* 2-input NAND gate |
||||
|
* vcc 2 /4.5/5 /6 |
||||
|
* tpd 25n/9n/7n/7n |
||||
|
* tr 19n/7n / /6n |
||||
|
.SUBCKT 74HC00 in1 in2 out NVCC NVGND vcc1={vcc} tripdt1={tripdt} |
||||
|
.param td1={1e-9*(9-3-3)*4.0/(vcc1-0.5)} |
||||
|
.param Rout={60*4.0/(vcc1-0.5)} ; standard output driver |
||||
|
.param Rload=10k ; The bidi bridge analogue port is type 'g' and needs load |
||||
|
|
||||
|
a6 [in1 in2] dout nand1 |
||||
|
.model nand1 d_nand(rise_delay = {td1} fall_delay = {td1} |
||||
|
+ input_load = 0.5e-12) |
||||
|
Rout dout out {Rout} |
||||
|
Rload dout 0 {Rload} |
||||
|
.ends |
||||
@ -0,0 +1,11 @@ |
|||||
|
ADDER - 4 BIT ALL-74HC00-GATE BINARY ADDER WITH AUTOMATIC BRIDGING |
||||
|
* behavioral gate description |
||||
|
* Automatic A/D insertion |
||||
|
*** SUBCIRCUIT DEFINITIONS |
||||
|
.include 74HCng_auto.lib |
||||
|
|
||||
|
.param vcc=3 tripdt=6n |
||||
|
|
||||
|
.include ../adder_common.inc |
||||
|
|
||||
|
.END |
||||
@ -0,0 +1,20 @@ |
|||||
|
ADDER - 4 BIT ALL-74HC00-GATE BINARY ADDER WITH BIDIRECTIONAL BRIDGES |
||||
|
* behavioral gate description |
||||
|
* Automatic A/D insertion using bi-directional bridges |
||||
|
|
||||
|
* Override the default bridges and force use of the bidi_bridge. |
||||
|
|
||||
|
.control |
||||
|
pre_set auto_bridge_d_out = |
||||
|
+ ( ".model auto_bridge bidi_bridge(out_high=%g in_low='%g/2' in_high='%g/2' )" |
||||
|
+ "auto_bridge%d [ %s ] [ %s ] null auto_bridge" 1000 ) |
||||
|
pre_set auto_bridge_d_in = ( $auto_bridge_d_out ) |
||||
|
.endc |
||||
|
|
||||
|
*** SUBCIRCUIT DEFINITIONS |
||||
|
.include 74HCng_auto.lib |
||||
|
.param vcc=3 tripdt=6n |
||||
|
|
||||
|
.include ../adder_common.inc |
||||
|
|
||||
|
.END |
||||
@ -0,0 +1,23 @@ |
|||||
|
ADDER - 4 BIT ALL-74HC00-GATE BINARY ADDER WITH AUTOMATIC BRIDGING |
||||
|
* behavioral gate description |
||||
|
* Automatic A/D insertion using bi-directional bridges |
||||
|
|
||||
|
* Override the default bridges and force use of the bidi_bridges with |
||||
|
* directions pre-set. |
||||
|
|
||||
|
.control |
||||
|
pre_set auto_bridge_d_out = |
||||
|
+ ( ".model auto_bridge_out bidi_bridge(direction=0 out_high=%g)" |
||||
|
+ "auto_bridge_out%d [ %s ] [ %s ] null auto_bridge_out" ) |
||||
|
pre_set auto_bridge_d_in = |
||||
|
+ ( ".model auto_bridge_in bidi_bridge(direction=1 in_low='%g/2' in_high='%g/2')" |
||||
|
+ "auto_bridge_in%d [ %s ] [ %s ] null auto_bridge_in" ) |
||||
|
.endc |
||||
|
|
||||
|
*** SUBCIRCUIT DEFINITIONS |
||||
|
.include 74HCng_auto.lib |
||||
|
.param vcc=3 tripdt=6n |
||||
|
|
||||
|
.include ../adder_common.inc |
||||
|
|
||||
|
.END |
||||
@ -0,0 +1,28 @@ |
|||||
|
ADDER - 4 BIT ALL-74HC00-GATE BINARY ADDER WITH AUTOMATIC BRIDGING |
||||
|
* behavioral gate description |
||||
|
* Automatic A/D insertion using bi-directional bridges |
||||
|
|
||||
|
* Override the default bridges and force use of the bidi_bridges with |
||||
|
* directions controlled by inputs. |
||||
|
|
||||
|
.control |
||||
|
pre_set auto_bridge_d_out = |
||||
|
+ ( ".model auto_bridge_out bidi_bridge(out_high=%g)" |
||||
|
+ "auto_bridge_out%d [ %s ] [ %s ] [ force_out ] auto_bridge_out" 1 ) |
||||
|
pre_set auto_bridge_d_in = |
||||
|
+ ( ".model auto_bridge_in bidi_bridge(in_low='%g/2' in_high='%g/2')" |
||||
|
+ "auto_bridge_in%d [ %s ] [ %s ] [ force_in ] auto_bridge_in" 1 ) |
||||
|
.endc |
||||
|
|
||||
|
*** SUBCIRCUIT DEFINITIONS |
||||
|
.include 74HCng_auto.lib |
||||
|
.param vcc=3 tripdt=6n |
||||
|
|
||||
|
aup force_in pullup |
||||
|
.model pullup d_pullup |
||||
|
adown force_out pulldown |
||||
|
.model pulldown d_pulldown |
||||
|
|
||||
|
.include ../adder_common.inc |
||||
|
|
||||
|
.END |
||||
@ -0,0 +1,31 @@ |
|||||
|
Test bidi_bridge direction changes and automatic bridging |
||||
|
|
||||
|
Va a 0 pulse 0 3 0 1u 1.2u 500u 1m |
||||
|
Vb b 0 pulse 0 3 0 1u 1.2u 100u 200u |
||||
|
Vctl ctl 0 pulse 0 3 10m 1u 1u 10m 20m |
||||
|
|
||||
|
Ainv ctl not_ctl invert |
||||
|
.model invert d_inverter |
||||
|
|
||||
|
* Transmitter/receiver for an analogue bus line |
||||
|
|
||||
|
.subckt driver in enable out bus |
||||
|
Atran in enable int tristate |
||||
|
Arec int out buffer |
||||
|
Rout int bus 20 // Make bus an analogue node, with bridge |
||||
|
.ends |
||||
|
|
||||
|
.model buffer d_buffer |
||||
|
.model tristate d_tristate |
||||
|
|
||||
|
Xa a ctl out_a bus driver |
||||
|
Xb b not_ctl out_b bus driver |
||||
|
Rload bus 0 1k |
||||
|
|
||||
|
.control |
||||
|
save a out_a b out_b |
||||
|
tran 1m 40m |
||||
|
plot out_a |
||||
|
listing e |
||||
|
.endc |
||||
|
.end |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue