OpenCores
URL https://opencores.org/ocsvn/ttl_library/ttl_library/trunk

Subversion Repositories ttl_library

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /ttl_library
    from Rev 2 to Rev 3
    Reverse comparison

Rev 2 → Rev 3

/trunk/Testbench/Testbench_00.vhd
0,0 → 1,79
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS00N: Quad 2-input NAND gate (Pinout A) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_00 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_00 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= not(J(0) and J(1));
D(1) <= not(J(2) and J(3));
D(2) <= not(J(4) and J(5));
D(3) <= not(J(6) and J(7));
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS00N
port map(
X_1 => J(0), -- 1A
X_2 => J(1), -- 1B
X_3 => E(0), -- 1Y\
X_4 => J(2), -- 2A
X_5 => J(3), -- 2B
X_6 => E(1), -- 2Y\
X_7 => open, -- GND
X_8 => E(2), -- 3Y\
X_9 => J(4), -- 3B
X_10 => J(5), -- 3A
X_11 => E(3), -- 4Y\
X_12 => J(6), -- 4B
X_13 => J(7), -- 4A
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_01.vhd
0,0 → 1,79
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN7401N: Quad 2-input NAND gate (open collector) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_01 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_01 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= TTL_OC( not (J(0) and J(1)) );
D(1) <= TTL_OC( not (J(2) and J(3)) );
D(2) <= TTL_OC( not (J(4) and J(5)) );
D(3) <= TTL_OC( not (J(6) and J(7)) );
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN7401N
port map(
X_1 => E(0), -- 1Y\
X_2 => J(0), -- 1A
X_3 => J(1), -- 1B
X_4 => E(1), -- 2Y\
X_5 => J(2), -- 2A
X_6 => J(3), -- 2B
X_7 => open, -- GND
X_8 => J(4), -- 3B
X_9 => J(5), -- 3A
X_10 => E(2), -- 3Y\
X_11 => J(6), -- 4B
X_12 => J(7), -- 4A
X_13 => E(3), -- 4Y\
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_02.vhd
0,0 → 1,79
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS02N: Quad 2-input NOR gate (Pinout A) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_02 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_02 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= not (J(0) or J(1));
D(1) <= not (J(2) or J(3));
D(2) <= not (J(4) or J(5));
D(3) <= not (J(6) or J(7));
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS02N
port map(
X_1 => E(0), -- 1Y\
X_2 => J(0), -- 1A
X_3 => J(1), -- 1B
X_4 => E(1), -- 2Y\
X_5 => J(2), -- 2A
X_6 => J(3), -- 2B
X_7 => open, -- GND
X_8 => J(4), -- 3B
X_9 => J(5), -- 3A
X_10 => E(2), -- 3Y\
X_11 => J(6), -- 4B
X_12 => J(7), -- 4A
X_13 => E(3), -- 4Y\
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_03.vhd
0,0 → 1,79
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS03N: Quad 2-input NAND gate (open collector) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_03 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_03 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= TTL_OC( not(J(0) and J(1)) );
D(1) <= TTL_OC( not(J(2) and J(3)) );
D(2) <= TTL_OC( not(J(4) and J(5)) );
D(3) <= TTL_OC( not(J(6) and J(7)) );
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS03N
port map(
X_1 => J(0), -- 1A
X_2 => J(1), -- 1B
X_3 => E(0), -- 1Y\
X_4 => J(2), -- 2A
X_5 => J(3), -- 2B
X_6 => E(1), -- 2Y\
X_7 => open, -- GND
X_8 => E(2), -- 3Y\
X_9 => J(4), -- 3B
X_10 => J(5), -- 3A
X_11 => E(3), -- 4Y\
X_12 => J(6), -- 4B
X_13 => J(7), -- 4A
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_04.vhd
0,0 → 1,81
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS04N: Hex inverter (Pinout A) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_04 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_04 is
signal J, B : unsigned(5 downto 0); -- Test stimuli
signal D, E : std_logic_vector(5 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= not J(0);
D(1) <= not J(1);
D(2) <= not J(2);
D(3) <= not J(3);
D(4) <= not J(4);
D(5) <= not J(5);
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS04N
port map(
X_1 => J(0), -- 1A
X_2 => E(0), -- 1Y\
X_3 => J(1), -- 2A
X_4 => E(1), -- 2Y\
X_5 => J(2), -- 3A
X_6 => E(2), -- 3Y\
X_7 => open, -- GND
X_8 => E(3), -- 4Y\
X_9 => J(3), -- 4A
X_10 => E(4), -- 5Y\
X_11 => J(4), -- 5A
X_12 => E(5), -- 6Y\
X_13 => J(5), -- 6A
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_05.vhd
0,0 → 1,81
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS05N: Hex inverter (open collector) (Pinout A) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_05 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_05 is
signal J, B : unsigned(5 downto 0); -- Test stimuli
signal D, E : std_logic_vector(5 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= TTL_OC( not J(0) );
D(1) <= TTL_OC( not J(1) );
D(2) <= TTL_OC( not J(2) );
D(3) <= TTL_OC( not J(3) );
D(4) <= TTL_OC( not J(4) );
D(5) <= TTL_OC( not J(5) );
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS05N
port map(
X_1 => J(0), -- 1A
X_2 => E(0), -- 1Y\
X_3 => J(1), -- 2A
X_4 => E(1), -- 2Y\
X_5 => J(2), -- 3A
X_6 => E(2), -- 3Y\
X_7 => open, -- GND
X_8 => E(3), -- 4Y\
X_9 => J(3), -- 4A
X_10 => E(4), -- 5Y\
X_11 => J(4), -- 5A
X_12 => E(5), -- 6Y\
X_13 => J(5), -- 6A
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_06.vhd
0,0 → 1,81
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS05N: Hex inverter (open collector) (Pinout A) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_06 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_06 is
signal J, B : unsigned(5 downto 0); -- Test stimuli
signal D, E : std_logic_vector(5 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= TTL_OC( not J(0) );
D(1) <= TTL_OC( not J(1) );
D(2) <= TTL_OC( not J(2) );
D(3) <= TTL_OC( not J(3) );
D(4) <= TTL_OC( not J(4) );
D(5) <= TTL_OC( not J(5) );
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN7406N
port map(
X_1 => J(0), -- 1A
X_2 => E(0), -- 1Y\
X_3 => J(1), -- 2A
X_4 => E(1), -- 2Y\
X_5 => J(2), -- 3A
X_6 => E(2), -- 3Y\
X_7 => open, -- GND
X_8 => E(3), -- 4Y\
X_9 => J(3), -- 4A
X_10 => E(4), -- 5Y\
X_11 => J(4), -- 5A
X_12 => E(5), -- 6Y\
X_13 => J(5), -- 6A
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_07.vhd
0,0 → 1,81
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN7407N: Hex buffer (high voltage open collector) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_07 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_07 is
signal J, B : unsigned(5 downto 0); -- Test stimuli
signal D, E : std_logic_vector(5 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= TTL_OC( J(0) );
D(1) <= TTL_OC( J(1) );
D(2) <= TTL_OC( J(2) );
D(3) <= TTL_OC( J(3) );
D(4) <= TTL_OC( J(4) );
D(5) <= TTL_OC( J(5) );
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN7407N
port map(
X_1 => J(0), -- 1A
X_2 => E(0), -- 1Y\
X_3 => J(1), -- 2A
X_4 => E(1), -- 2Y\
X_5 => J(2), -- 3A
X_6 => E(2), -- 3Y\
X_7 => open, -- GND
X_8 => E(3), -- 4Y\
X_9 => J(3), -- 4A
X_10 => E(4), -- 5Y\
X_11 => J(4), -- 5A
X_12 => E(5), -- 6Y\
X_13 => J(5), -- 6A
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_08.vhd
0,0 → 1,79
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS08N: Quad 2-input AND gate (Pinout A) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_08 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_08 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= (J(0) and J(1));
D(1) <= (J(2) and J(3));
D(2) <= (J(4) and J(5));
D(3) <= (J(6) and J(7));
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS08N
port map(
X_1 => J(0), -- 1A
X_2 => J(1), -- 1B
X_3 => E(0), -- 1Y\
X_4 => J(2), -- 2A
X_5 => J(3), -- 2B
X_6 => E(1), -- 2Y\
X_7 => open, -- GND
X_8 => E(2), -- 3Y\
X_9 => J(4), -- 3B
X_10 => J(5), -- 3A
X_11 => E(3), -- 4Y\
X_12 => J(6), -- 4B
X_13 => J(7), -- 4A
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_09.vhd
0,0 → 1,79
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS09N: Quad 2-input AND gate (open collector) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_09 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_09 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= TTL_OC( J(0) and J(1) );
D(1) <= TTL_OC( J(2) and J(3) );
D(2) <= TTL_OC( J(4) and J(5) );
D(3) <= TTL_OC( J(6) and J(7) );
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS09N
port map(
X_1 => J(0), -- 1A
X_2 => J(1), -- 1B
X_3 => E(0), -- 1Y\
X_4 => J(2), -- 2A
X_5 => J(3), -- 2B
X_6 => E(1), -- 2Y\
X_7 => open, -- GND
X_8 => E(2), -- 3Y\
X_9 => J(4), -- 3B
X_10 => J(5), -- 3A
X_11 => E(3), -- 4Y\
X_12 => J(6), -- 4B
X_13 => J(7), -- 4A
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_10.vhd
0,0 → 1,78
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS10N: Triple 3-input NAND gate (Pinout A) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_10 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_10 is
signal J, B : unsigned(8 downto 0); -- Test stimuli
signal D, E : std_logic_vector(2 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= not(J(0) and J(1) and J(2));
D(1) <= not(J(3) and J(4) and J(5));
D(2) <= not(J(6) and J(7) and J(8));
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS10N
port map(
X_1 => J(0), -- 1A
X_2 => J(1), -- 1B
X_3 => J(3), -- 2A
X_4 => J(4), -- 2B
X_5 => J(5), -- 2C
X_6 => E(1), -- 2Y\
X_7 => open, -- GND
X_8 => E(2), -- 3Y\
X_9 => J(6), -- 3C
X_10 => J(7), -- 3B
X_11 => J(8), -- 3A
X_12 => E(0), -- 1Y\
X_13 => J(2), -- 1C
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_100.vhd
0,0 → 1,125
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74100N: Dual 4-bit latch --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_100 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 150 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_100 is
signal RS : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
subtype quad is std_logic_vector(4 downto 1);
type biquad is array(2 downto 1) of quad;
signal R, Q, Z : biquad;
signal G : std_logic_vector(2 downto 1);
begin
E <= (Q(2), Q(1));
D <= (Z(2), Z(1));
R <= (quad(BC(7 downto 4)), quad(BC(3 downto 0)));
process(CLK) is
variable A, B : natural := 0;
begin
if rising_edge(CLK) then
G <= (others => '0'); -- Default
A := A + 1;
B := B + 1;
if (A = 5) then
A := 0;
G(2) <= '1';
end if;
if (B = 7) then
B := 0;
G(1) <= '1';
end if;
elsif falling_edge(CLK) then
G <= (others => '0');
end if;
end process;
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(all) is
begin
for i in G'range loop
if G(i) = '1' then
Z(i) <= R(i);
end if;
end loop;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74100N
port map(
--
X_2 => R(1)(1), -- 1D1
X_3 => R(1)(2), -- 1D2
X_4 => Q(1)(2), -- 1Q2
X_5 => Q(1)(1), -- 1Q1
--
X_7 => open, -- GND
X_8 => Q(2)(1), -- 2Q1
X_9 => Q(2)(2), -- 2Q2
X_10 => R(2)(2), -- 2D2
X_11 => R(2)(1), -- 2D1
X_12 => G(2), -- 2G
--
--
X_15 => R(2)(3), -- 2D3
X_16 => R(2)(4), -- 2D4
X_17 => Q(2)(4), -- 2Q4
X_18 => Q(2)(3), -- 2Q3
X_19 => Q(1)(3), -- 1Q3
X_20 => Q(1)(4), -- 1Q4
X_21 => R(1)(4), -- 1D4
X_22 => R(1)(3), -- 1D3
X_23 => G(1), -- 1G
X_24 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_101.vhd
0,0 → 1,99
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74H101N: JK edge-triggered flipflop: AND-OR input --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_101 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 120 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_101 is
signal PS, J, K : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(1 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => PS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
SIM: process(CLK, PS) is
variable JK : std_logic_vector(1 downto 0);
begin
if PS = '0' then -- Here, set
D(0) <= '1';
elsif falling_edge(CLK) then
JK := J & K;
case JK is
when "00" => null;
when "01" => D(0) <= '0';
when "10" => D(0) <= '1';
when "11" => D(0) <= not D(0);
when others => null;
end case;
end if;
end process;
D(1) <= not D(0);
J <= (BC(0) and BC(1)) or (BC(2) and BC(3));
K <= (BC(4) and BC(5)) or (BC(6) and BC(7));
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74H101N
port map(
X_1 => BC(0), -- J1A
X_2 => BC(1), -- J1B
X_3 => BC(2), -- J2A
X_4 => BC(3), -- J2B
X_5 => PS, -- SD\
X_6 => E(0), -- Q
X_7 => open, -- GND
X_8 => E(1), -- Q\
X_9 => BC(4), -- K1A
X_10 => BC(5), -- K1B
X_11 => BC(6), -- K2A
X_12 => BC(7), -- K2B
X_13 => CLK, -- CP
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_102.vhd
0,0 → 1,99
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74H102N: JK edge-triggered flipflop (AND inputs) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_102 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 120 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_102 is
signal RS, J, K : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(5 downto 0); -- Test stimuli
signal D, E : std_logic_vector(1 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
SIM: process(CLK, RS) is
variable JK : std_logic_vector(1 downto 0);
begin
if RS = '0' then
D(0) <= '0';
elsif falling_edge(CLK) then
JK := J & K;
case JK is
when "00" => null;
when "01" => D(0) <= '0';
when "10" => D(0) <= '1';
when "11" => D(0) <= not D(0);
when others => null;
end case;
end if;
end process;
D(1) <= not D(0);
J <= JC(0) and JC(1) and JC(2);
K <= JC(3) and JC(4) and JC(5);
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74H102N
port map(
--
X_2 => RS, -- CD\
X_3 => JC(0), -- J1
X_4 => JC(1), -- J2
X_5 => JC(2), -- J3
X_6 => E(1), -- Q\
X_7 => open, -- GND
X_8 => E(0), -- Q
X_9 => JC(3), -- K1
X_10 => JC(4), -- K2
X_11 => JC(5), -- K3
X_12 => CLK, -- CP\
X_13 => '1', -- SD\
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_103.vhd
0,0 → 1,98
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74H103N: Dual JK edge-triggered flipflop --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_103 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 120 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_103 is
signal RS : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(3 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
G: for i in 1 downto 0 generate
begin
SIM: process(CLK, RS) is
variable JK : std_logic_vector(1 downto 0);
begin
if RS = '0' then
D(i) <= '0';
elsif falling_edge(CLK) then
JK := BC(i) & BC(2+i);
case JK is
when "00" => null;
when "01" => D(i) <= '0';
when "10" => D(i) <= '1';
when "11" => D(i) <= not D(i);
when others => null;
end case;
end if;
end process;
D(i+2) <= not D(i);
end generate;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74H103N
port map(
X_1 => CLK, -- CP1\
X_2 => RS, -- CD1\
X_3 => BC(2), -- K1
X_4 => open, -- Vcc
X_5 => CLK, -- CP2\
X_6 => RS, -- CD2\
X_7 => BC(1), -- J2
X_8 => E(3), -- Q2\
X_9 => E(1), -- Q2
X_10 => BC(3), -- K2
X_11 => open, -- GND
X_12 => E(0), -- Q1
X_13 => E(2), -- Q1\
X_14 => BC(0) -- J1
);
end architecture Test;
/trunk/Testbench/Testbench_106.vhd
0,0 → 1,101
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74H106N: Dual JK edge-triggered flipflop --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_106 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 120 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_106 is
signal RS : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(3 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
G: for i in 1 downto 0 generate
begin
SIM: process(CLK, RS) is
variable JK : std_logic_vector(1 downto 0);
begin
if RS = '0' then
D(i) <= '0';
elsif falling_edge(CLK) then
JK := BC(i) & BC(2+i);
case JK is
when "00" => null;
when "01" => D(i) <= '0';
when "10" => D(i) <= '1';
when "11" => D(i) <= not D(i);
when others => null;
end case;
end if;
end process;
D(i+2) <= not D(i);
end generate;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74H106N
port map(
X_1 => CLK, -- CP1\
X_2 => '1', -- SD1\
X_3 => RS, -- CD1\
X_4 => BC(0), -- J1
X_5 => open, -- Vcc
X_6 => CLK, -- CP2\
X_7 => '1', -- SD2\
X_8 => RS, -- CD2\
X_9 => BC(1), -- J2
X_10 => E(3), -- Q2\
X_11 => E(1), -- Q2
X_12 => BC(3), -- K2
X_13 => open, -- GND
X_14 => E(2), -- Q1\
X_15 => E(0), -- Q1
X_16 => BC(2) -- K1
);
end architecture Test;
/trunk/Testbench/Testbench_107.vhd
0,0 → 1,99
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS107N: Dual JK flipflop --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_107 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 120 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_107 is
signal RS : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(3 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
G: for i in 1 downto 0 generate
begin
SIM: process(CLK, RS) is
variable JK : std_logic_vector(1 downto 0);
begin
if RS = '0' then
D(i) <= '0';
elsif falling_edge(CLK) then
JK := BC(i) & BC(2+i);
case JK is
when "00" => null;
when "01" => D(i) <= '0';
when "10" => D(i) <= '1';
when "11" => D(i) <= not D(i);
when others => null;
end case;
end if;
end process;
D(i+2) <= not D(i);
end generate;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS107N
port map(
X_1 => BC(0), -- J1
X_2 => E(2), -- Q1\
X_3 => E(0), -- Q1
X_4 => BC(2), -- K1
X_5 => E(1), -- Q2
X_6 => E(3), -- Q2\
X_7 => open, -- GND
X_8 => BC(1), -- J2
X_9 => CLK, -- CP2\
X_10 => RS, -- CD2\
X_11 => BC(3), -- K2
X_12 => CLK, -- CP1\
X_13 => RS, -- CD2\
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_108.vhd
0,0 → 1,98
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74H108N: Dual JK edge-triggered flipflop --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_108 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 120 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_108 is
signal RS : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(3 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
G: for i in 1 downto 0 generate
begin
SIM: process(CLK, RS) is
variable JK : std_logic_vector(1 downto 0);
begin
if RS = '0' then
D(i) <= '0';
elsif falling_edge(CLK) then
JK := BC(i) & BC(2+i);
case JK is
when "00" => null;
when "01" => D(i) <= '0';
when "10" => D(i) <= '1';
when "11" => D(i) <= not D(i);
when others => null;
end case;
end if;
end process;
D(i+2) <= not D(i);
end generate;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74H108N
port map(
X_1 => BC(2), -- K1
X_2 => E(0), -- Q1
X_3 => E(2), -- Q1\
X_4 => BC(0), -- J1
X_5 => E(3), -- Q2\
X_6 => E(1), -- Q2
X_7 => open, -- GND
X_8 => BC(3), -- K2
X_9 => CLK, -- CP\
X_10 => '1', -- SD2\
X_11 => BC(1), -- J2
X_12 => RS, -- CD\
X_13 => '1', -- SD1\
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_109.vhd
0,0 → 1,101
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS109N: Dual JK +ve edge-triggered flipflop --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_109 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 120 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_109 is
signal RS : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(3 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
G: for i in 1 downto 0 generate
begin
SIM: process(CLK, RS) is
variable JK : std_logic_vector(1 downto 0);
begin
if RS = '0' then
D(i) <= '0';
elsif rising_edge(CLK) then
JK := BC(i) & not BC(2+i); -- K is active low
case JK is
when "00" => null;
when "01" => D(i) <= '0';
when "10" => D(i) <= '1';
when "11" => D(i) <= not D(i);
when others => null;
end case;
end if;
end process;
D(i+2) <= not D(i);
end generate;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS109N
port map(
X_1 => RS, -- CD1\
X_2 => BC(0), -- J1
X_3 => BC(2), -- K1\
X_4 => CLK, -- CP1
X_5 => '1', -- SD1\
X_6 => E(0), -- Q1
X_7 => E(2), -- Q1\
X_8 => open, -- GND
X_9 => E(3), -- Q2\
X_10 => E(1), -- Q2
X_11 => '1', -- SD2\
X_12 => CLK, -- CP2
X_13 => BC(3), -- K2\
X_14 => BC(1), -- J2
X_15 => RS, -- CD2\
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_11.vhd
0,0 → 1,78
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS11N: Triple 3-input AND gate (Pinout A) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_11 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_11 is
signal J, B : unsigned(8 downto 0); -- Test stimuli
signal D, E : std_logic_vector(2 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= (J(0) and J(1) and J(2));
D(1) <= (J(3) and J(4) and J(5));
D(2) <= (J(6) and J(7) and J(8));
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS11N
port map(
X_1 => J(0), -- 1A
X_2 => J(1), -- 1B
X_3 => J(3), -- 2A
X_4 => J(4), -- 2B
X_5 => J(5), -- 2C
X_6 => E(1), -- 2Y\
X_7 => open, -- GND
X_8 => E(2), -- 3Y\
X_9 => J(6), -- 3C
X_10 => J(7), -- 3B
X_11 => J(8), -- 3A
X_12 => E(0), -- 1Y\
X_13 => J(2), -- 1C
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_112.vhd
0,0 → 1,100
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS112N: Dual JK -ve edge-triggered flipflop --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_112 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 120 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_112 is
signal RS : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(3 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
G: for i in 1 downto 0 generate
begin
SIM: process(CLK, RS) is
variable JK : std_logic_vector(1 downto 0);
begin
if RS = '0' then
D(i) <= '0';
elsif falling_edge(CLK) then
JK := BC(i) & BC(2+i);
case JK is
when "00" => null;
when "01" => D(i) <= '0';
when "10" => D(i) <= '1';
when "11" => D(i) <= not D(i);
when others => null;
end case;
end if;
end process;
D(i+2) <= not D(i);
end generate;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS112N
port map(
X_1 => CLK, -- CP1\
X_2 => BC(2), -- K1
X_3 => BC(0), -- J1
X_4 => '1', -- SD1\
X_5 => E(0), -- Q1
X_6 => E(2), -- Q1\
X_7 => E(3), -- Q2\
X_8 => open, -- GND
X_9 => E(1), -- Q2
X_10 => '1', -- SD2\
X_11 => BC(1), -- J2
X_12 => BC(3), -- K2
X_13 => CLK, -- CP2\
X_14 => RS, -- CD2\
X_15 => RS, -- CD1\
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_113.vhd
0,0 → 1,98
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS113N: Dual JK edge-triggered flipflop --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_113 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 120 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_113 is
signal RS : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(3 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
G: for i in 1 downto 0 generate
begin
SIM: process(CLK, RS) is
variable JK : std_logic_vector(1 downto 0);
begin
if RS = '0' then
D(i) <= '1'; -- Async. preset
elsif falling_edge(CLK) then
JK := BC(i) & BC(2+i);
case JK is
when "00" => null;
when "01" => D(i) <= '0';
when "10" => D(i) <= '1';
when "11" => D(i) <= not D(i);
when others => null;
end case;
end if;
end process;
D(i+2) <= not D(i);
end generate;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS113N
port map(
X_1 => CLK, -- CP1\
X_2 => BC(2), -- K1
X_3 => BC(0), -- J1
X_4 => RS, -- SD1\
X_5 => E(0), -- Q1
X_6 => E(2), -- Q1\
X_7 => open, -- GND
X_8 => E(3), -- Q2\
X_9 => E(1), -- Q2
X_10 => RS, -- SD2\
X_11 => BC(1), -- J2
X_12 => BC(3), -- K2
X_13 => CLK, -- CP2\
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_114.vhd
0,0 → 1,98
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS114N: Dual JK -ve edge-triggered flipflop --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_114 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 120 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_114 is
signal RS : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(3 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
G: for i in 1 downto 0 generate
begin
SIM: process(CLK, RS) is
variable JK : std_logic_vector(1 downto 0);
begin
if RS = '0' then
D(i) <= '0';
elsif falling_edge(CLK) then
JK := BC(i) & BC(2+i);
case JK is
when "00" => null;
when "01" => D(i) <= '0';
when "10" => D(i) <= '1';
when "11" => D(i) <= not D(i);
when others => null;
end case;
end if;
end process;
D(i+2) <= not D(i);
end generate;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS114N
port map(
X_1 => RS, -- CD\
X_2 => BC(2), -- K1
X_3 => BC(0), -- J1
X_4 => '1', -- SD1\
X_5 => E(0), -- Q1
X_6 => E(2), -- Q1\
X_7 => open, -- GND
X_8 => E(3), -- Q2\
X_9 => E(1), -- Q2
X_10 => '1', -- SD2\
X_11 => BC(1), -- J2
X_12 => BC(3), -- K2
X_13 => CLK, -- CP\
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_12.vhd
0,0 → 1,78
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS12N: Triple 3-input NAND gate (open collector)--
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_12 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_12 is
signal J, B : unsigned(8 downto 0); -- Test stimuli
signal D, E : std_logic_vector(2 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= TTL_OC(not((J(0) and J(1) and J(2))));
D(1) <= TTL_OC(not((J(3) and J(4) and J(5))));
D(2) <= TTL_OC(not((J(6) and J(7) and J(8))));
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS12N
port map(
X_1 => J(0), -- 1A
X_2 => J(1), -- 1B
X_3 => J(3), -- 2A
X_4 => J(4), -- 2B
X_5 => J(5), -- 2C
X_6 => E(1), -- 2Y\
X_7 => open, -- GND
X_8 => E(2), -- 3Y\
X_9 => J(6), -- 3C
X_10 => J(7), -- 3B
X_11 => J(8), -- 3A
X_12 => E(0), -- 1Y\
X_13 => J(2), -- 1C
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_121.vhd
0,0 → 1,77
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74121N: Monostable multivibrator --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_121 is -- Top-level bench
end entity;
 
architecture Test of Testbench_121 is
signal S, Q : std_logic; -- Trigger & output
signal W, N : std_logic; -- Wide & narrow windows
begin
S <= '0',
'1' after 250 ns, '0' after 350 ns, -- Trigger, let it time out
'1' after 15000 ns, '0' after 15100 ns, -- Trigger again
'1' after 16000 ns, '0' after 16100 ns; -- Should NOT retrigger
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
W <= '0',
'1' after 320 ns, '0' after 10330 ns,
'1' after 15060 ns, '0' after 25080 ns;
N <= '0',
'1' after 350 ns, '0' after 10280 ns,
'1' after 15090 ns, '0' after 25030 ns;
 
-----------------------------------------------------------------------
-- Validate the results
-----------------------------------------------------------------------
process(W, N, Q) is
begin
if (rising_edge(W) and Q = '1') or -- W must rise before Q
(rising_edge(N) and Q = '0') or -- Q must rise before N
(falling_edge(N) and Q = '0') or -- N must fall before Q
(falling_edge(W) and Q = '1') then -- Q must fall before W
assert false
report "Bad monostable pulse"
severity failure;
end if;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74121N
generic map(
W => 10 us -- Pulse width
)
port map(
X_1 => open, -- Q\
--
X_3 => '0', -- A1\
X_4 => '0', -- A2\
X_5 => S, -- B
X_6 => Q, -- Q
X_7 => open, -- GND
--
X_9 => open, -- Rint (open for simulation)
X_10 => open, -- Cx
X_11 => open, -- RxCx
--
--
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_122.vhd
0,0 → 1,77
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74122N: Retriggerable resettable monostable --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_122 is -- Top-level bench
end entity;
 
architecture Test of Testbench_122 is
signal S, Q : std_logic; -- Trigger & output
signal W, N : std_logic; -- Wide & narrow windows
begin
S <= '0',
'1' after 250 ns, '0' after 350 ns, -- Trigger, let it time out
'1' after 15000 ns, '0' after 15100 ns, -- Trigger again
'1' after 16000 ns, '0' after 16100 ns; -- This should retrigger
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
W <= '0',
'1' after 220 ns, '0' after 10330 ns,
'1' after 15020 ns, '0' after 26080 ns;
N <= '0',
'1' after 350 ns, '0' after 10250 ns,
'1' after 15090 ns, '0' after 26000 ns;
 
-----------------------------------------------------------------------
-- Validate the results
-----------------------------------------------------------------------
process(W, N, Q) is
begin
if (rising_edge(W) and Q = '1') or -- W must rise before Q
(rising_edge(N) and Q = '0') or -- Q must rise before N
(falling_edge(N) and Q = '0') or -- N must fall before Q
(falling_edge(W) and Q = '1') then -- Q must fall before W
assert false
report "Bad monostable pulse"
severity failure;
end if;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74122N
generic map(
W => 10 us -- Pulse width
)
port map(
X_1 => '0', -- A1\
X_2 => '0', -- A2\
X_3 => S, -- B1
X_4 => '1', -- B2
X_5 => '1', -- CD\
X_6 => open, -- Q\
X_7 => open, -- GND
X_8 => Q, -- Q
X_9 => open, -- Rint
--
X_11 => open, -- Cx
--
X_13 => open, -- RxCx
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_123.vhd
0,0 → 1,96
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74123N: Dual retriggerable resettable monostable --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_123 is -- Top-level bench
end entity;
 
architecture Test of Testbench_123 is
signal S, Q : std_logic_vector(1 downto 0); -- Triggers & outputs
signal W, N : std_logic_vector(1 downto 0); -- Wide & narrow windows
begin
S(0) <= '0',
'1' after 250 ns, '0' after 350 ns, -- Trigger, let it time out
'1' after 15000 ns, '0' after 15100 ns, -- Trigger again
'1' after 16000 ns, '0' after 16100 ns; -- This should retrigger
S(1) <= '0',
'1' after 250 ns, '0' after 350 ns, -- Trigger, let it time out
'1' after 15000 ns, '0' after 15100 ns, -- Trigger again
'1' after 16000 ns, '0' after 16100 ns; -- This should retrigger
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
W(0) <= '0',
'1' after 220 ns, '0' after 9330 ns,
'1' after 15020 ns, '0' after 25080 ns;
N(0) <= '0',
'1' after 350 ns, '0' after 9250 ns,
'1' after 15090 ns, '0' after 25000 ns;
 
W(1) <= '0',
'1' after 220 ns, '0' after 10330 ns,
'1' after 15020 ns, '0' after 26080 ns;
N(1) <= '0',
'1' after 350 ns, '0' after 10250 ns,
'1' after 15090 ns, '0' after 26000 ns;
 
-----------------------------------------------------------------------
-- Validate the results
-----------------------------------------------------------------------
G: for i in Q'range generate
begin
process(W(i), N(i), Q(i)) is
begin
if (rising_edge(W(i)) and Q(i) = '1') or -- W must rise before Q
(rising_edge(N(i)) and Q(i) = '0') or -- Q must rise before N
(falling_edge(N(i)) and Q(i) = '0') or -- N must fall before Q
(falling_edge(W(i)) and Q(i) = '1') then -- Q must fall before W
assert false
report "Bad monostable pulse"
severity warning;
end if;
end process;
end generate;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74123N
generic map(
W1 => 10 us, -- Pulse widths
W2 => 9 us
)
port map(
X_1 => '0', -- A1\
X_2 => S(0), -- B1
X_3 => '1', -- CD1\
X_4 => open, -- Q1\
X_5 => Q(1), -- Q2
X_6 => open, -- Cx2
X_7 => open, -- Rx2Cx2
X_8 => open, -- GND
X_9 => '0', -- A2\
X_10 => S(1), -- B2
X_11 => '1', -- CD2\
X_12 => open, -- Q2\
X_13 => Q(0), -- Q1
X_14 => open, -- Cx1
X_15 => open, -- Rx1Cx1
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_125.vhd
0,0 → 1,88
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS125N: Quad bus buffer (3-state outputs) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_125 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 150 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_125 is
signal RS : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
subtype quad is std_logic_vector(3 downto 0);
signal I, G : quad;
begin
I <= quad(BC(7 downto 4));
G <= quad(BC(3 downto 0));
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
GG: for j in G'range generate
begin
D(j) <= I(j) when G(j) = '0' else 'Z';
end generate;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS125N
port map(
X_1 => G(0), -- E1\
X_2 => I(0), -- D1
X_3 => E(0), -- Q1
X_4 => G(1), -- E2\
X_5 => I(1), -- D2
X_6 => E(1), -- Q2
X_7 => open, -- GND
X_8 => E(2), -- Q3
X_9 => I(2), -- D3
X_10 => G(2), -- E3\
X_11 => E(3), -- Q4
X_12 => I(3), -- D4
X_13 => G(3), -- E4\
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_126.vhd
0,0 → 1,88
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS126N: Quad bus buffer (3-state outputs) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_126 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 150 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_126 is
signal RS : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
subtype quad is std_logic_vector(3 downto 0);
signal I, G : quad;
begin
I <= quad(BC(7 downto 4));
G <= quad(BC(3 downto 0));
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
GG: for j in G'range generate
begin
D(j) <= I(j) when G(j) = '1' else 'Z';
end generate;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS126N
port map(
X_1 => G(0), -- E1\
X_2 => I(0), -- D1
X_3 => E(0), -- Q1
X_4 => G(1), -- E2\
X_5 => I(1), -- D2
X_6 => E(1), -- Q2
X_7 => open, -- GND
X_8 => E(2), -- Q3
X_9 => I(2), -- D3
X_10 => G(2), -- E3\
X_11 => E(3), -- Q4
X_12 => I(3), -- D4
X_13 => G(3), -- E4\
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_13.vhd
0,0 → 1,77
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS13N: Dual 4-input NAND Schmitt trigger --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_13 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_13 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(1 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= not( J(0) and J(1) and J(2) and J(3) );
D(1) <= not( J(4) and J(5) and J(6) and J(7) );
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS13N
port map(
X_1 => J(0), -- 1A
X_2 => J(1), -- 1B
--
X_4 => J(2), -- 1C
X_5 => J(3), -- 1D
X_6 => E(0), -- 1Y\
X_7 => open, -- GND
X_8 => E(1), -- 2Y\
X_9 => J(4), -- 2D
X_10 => J(5), -- 2C
--
X_12 => J(6), -- 2B
X_13 => J(7), -- 2A
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_132.vhd
0,0 → 1,79
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS132N: Quad 2-input Schmitt trigger NAND gate --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_132 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_132 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= not(J(0) and J(1));
D(1) <= not(J(2) and J(3));
D(2) <= not(J(4) and J(5));
D(3) <= not(J(6) and J(7));
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS132N
port map(
X_1 => J(0), -- 1A
X_2 => J(1), -- 1B
X_3 => E(0), -- 1Y\
X_4 => J(2), -- 2A
X_5 => J(3), -- 2B
X_6 => E(1), -- 2Y\
X_7 => open, -- GND
X_8 => E(2), -- 3Y\
X_9 => J(4), -- 3B
X_10 => J(5), -- 3A
X_11 => E(3), -- 4Y\
X_12 => J(6), -- 4B
X_13 => J(7), -- 4A
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_133.vhd
0,0 → 1,78
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS133N: 13-input NAND gate --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_133 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_133 is
signal J, B : unsigned(12 downto 0); -- Test stimuli
signal D, E : std_logic_vector(0 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= nand_reduce(std_logic_vector(J));
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS133N
port map(
X_1 => J(0), -- 1A
X_2 => J(1), -- 1B
X_3 => J(2), -- 1C
X_4 => J(3), -- 1D
X_5 => J(4), -- 1E
X_6 => J(5), -- 1F
X_7 => J(6), -- 1G
X_8 => open, -- GND
X_9 => E(0), -- 1Y\
X_10 => J(7), -- 1H
X_11 => J(8), -- 1J
X_12 => J(9), -- 1K
X_13 => J(10), -- 1L
X_14 => J(11), -- 1M
X_15 => J(12), -- 1N
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_134.vhd
0,0 → 1,79
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74S134N: 12-input NAND gate (3-state output) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_134 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_134 is
signal J, B : unsigned(12 downto 0); -- Test stimuli
signal D, E : std_logic_vector(0 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= nand_reduce(std_logic_vector(J(12 downto 1))) when J(0) = '0'
else 'Z';
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74S134N
port map(
X_1 => J(1), -- 1A
X_2 => J(2), -- 1B
X_3 => J(3), -- 1C
X_4 => J(4), -- 1D
X_5 => J(5), -- 1E
X_6 => J(6), -- 1F
X_7 => J(7), -- 1G
X_8 => open, -- GND
X_9 => E(0), -- 1Y\
X_10 => J(8), -- 1H
X_11 => J(9), -- 1J
X_12 => J(10), -- 1K
X_13 => J(11), -- 1L
X_14 => J(12), -- 1M
X_15 => J(0), -- EB
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_135.vhd
0,0 → 1,81
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74S135N: Quad XOR/NOR gate --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_135 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_135 is
signal J, B : unsigned(9 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= J(0) xor J(1) xor J(8);
D(1) <= J(2) xor J(3) xor J(8);
D(2) <= J(4) xor J(5) xor J(9);
D(3) <= J(6) xor J(7) xor J(9);
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74S135N
port map(
X_1 => J(0), -- A1
X_2 => J(1), -- B1
X_3 => E(0), -- Y1
X_4 => J(8), -- C12
X_5 => J(2), -- A2
X_6 => J(3), -- B2
X_7 => E(1), -- Y2
X_8 => open, -- GND
X_9 => E(2), -- Y3
X_10 => J(4), -- B3
X_11 => J(5), -- A3
X_12 => J(9), -- C34
X_13 => E(3), -- Y4
X_14 => J(6), -- B4
X_15 => J(7), -- A4
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_136.vhd
0,0 → 1,79
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS136N: Quad 2-input XOR gate (open collector) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_136 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_136 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= TTL_OC( J(0) xor J(1) );
D(1) <= TTL_OC( J(2) xor J(3) );
D(2) <= TTL_OC( J(4) xor J(5) );
D(3) <= TTL_OC( J(6) xor J(7) );
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS136N
port map(
X_1 => J(0), -- 1A
X_2 => J(1), -- 1B
X_3 => E(0), -- 1Y\
X_4 => J(2), -- 2A
X_5 => J(3), -- 2B
X_6 => E(1), -- 2Y\
X_7 => open, -- GND
X_8 => E(2), -- 3Y\
X_9 => J(4), -- 3B
X_10 => J(5), -- 3A
X_11 => E(3), -- 4Y\
X_12 => J(6), -- 4B
X_13 => J(7), -- 4A
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_137.vhd
0,0 → 1,96
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS137N: 1-of-8 decoder/demux. (input latches) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_137 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_137 is
signal J, B, Z : unsigned(5 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
 
alias A is Z(2 downto 0);
alias LE is Z(3);
alias E1 is Z(4);
alias E2 is Z(5);
begin
Z <= not B;
 
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(Z) is
variable chn : natural range 7 downto 0;
begin
E <= (others => '1');
if LE = '0' then
chn := TTL_to_integer(A);
end if;
if (E2 and not E1) = '1' then
E(chn) <= '0';
end if;
end process;
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS137N
port map(
X_1 => A(0), -- A0
X_2 => A(1), -- A1
X_3 => A(2), -- A2
X_4 => LE, -- LE\
X_5 => E1, -- E1\
X_6 => E2, -- E2
X_7 => D(7), -- O7\
X_8 => open, -- GND
X_9 => D(6), -- O6\
X_10 => D(5), -- O5\
X_11 => D(4), -- O4\
X_12 => D(3), -- O3\
X_13 => D(2), -- O2\
X_14 => D(1), -- O1\
X_15 => D(0), -- O0\
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_138.vhd
0,0 → 1,95
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS138N: 1-of-8 decoder/demultiplexer --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_138 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_138 is
signal J, B : unsigned(5 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
signal EN : std_logic;
 
alias A is J(2 downto 0);
alias E1 is B(3);
alias E2 is B(4);
alias E3 is B(5);
begin
EN <= (not E1) and (not E2) and E3;
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(A, EN) is
variable chn : natural range 7 downto 0;
begin
E <= (others => '1');
if EN = '1' then
chn := TTL_to_integer(A);
E(chn) <= '0';
end if;
end process;
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS138N
port map(
X_1 => A(0), -- A0
X_2 => A(1), -- A1
X_3 => A(2), -- A2
X_4 => E1, -- E1\
X_5 => E2, -- E2\
X_6 => E3, -- E3
X_7 => D(7), -- O7\
X_8 => open, -- GND
X_9 => D(6), -- O6\
X_10 => D(5), -- O5\
X_11 => D(4), -- O4\
X_12 => D(3), -- O3\
X_13 => D(2), -- O2\
X_14 => D(1), -- O1\
X_15 => D(0), -- O0\
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_139.vhd
0,0 → 1,96
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS139N: Dual 1-of-4 decoder --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_139 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_139 is
signal J, B, Z : unsigned(5 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
signal RS : std_logic;
begin
Z <= (not B) when RS = '1' else (others => '1'); -- Should start with enables high
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(Z) is
variable N : natural range 3 downto 0;
begin
D <= (others => '1');
if Z(0) = '0' then -- EA
N := TTL_to_integer(Z(5 downto 4));
D(N) <= '0';
end if;
if Z(1) = '0' then -- EB
N := TTL_to_integer(Z(3 downto 2));
D(4+N) <= '0';
end if;
end process;
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS139N
port map(
X_1 => Z(0), -- EA\
X_2 => Z(4), -- A0A
X_3 => Z(5), -- A1A
X_4 => E(0), -- O0A\
X_5 => E(1), -- O1A\
X_6 => E(2), -- O2A\
X_7 => E(3), -- O3A\
X_8 => open, -- GND
X_9 => E(7), -- O3B\
X_10 => E(6), -- O2B\
X_11 => E(5), -- O1B\
X_12 => E(4), -- O0B\
X_13 => Z(3), -- A1B
X_14 => Z(2), -- A0B
X_15 => Z(1), -- EB\
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_14.vhd
0,0 → 1,81
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS14N: Hex Schmitt trigger inverter --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_14 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_14 is
signal J, B : unsigned(5 downto 0); -- Test stimuli
signal D, E : std_logic_vector(5 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= not J(0);
D(1) <= not J(1);
D(2) <= not J(2);
D(3) <= not J(3);
D(4) <= not J(4);
D(5) <= not J(5);
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS14N
port map(
X_1 => J(0), -- 1A
X_2 => E(0), -- 1Y\
X_3 => J(1), -- 2A
X_4 => E(1), -- 2Y\
X_5 => J(2), -- 3A
X_6 => E(2), -- 3Y\
X_7 => open, -- GND
X_8 => E(3), -- 4Y\
X_9 => J(3), -- 4A
X_10 => E(4), -- 5Y\
X_11 => J(4), -- 5A
X_12 => E(5), -- 6Y\
X_13 => J(5), -- 6A
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_140.vhd
0,0 → 1,77
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74S140N: Dual 4-input NAND line driver --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_140 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_140 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(1 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= not( J(0) and J(1) and J(2) and J(3) );
D(1) <= not( J(4) and J(5) and J(6) and J(7) );
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74S140N
port map(
X_1 => J(0), -- 1A
X_2 => J(1), -- 1B
--
X_4 => J(2), -- 1C
X_5 => J(3), -- 1D
X_6 => E(0), -- 1Y\
X_7 => open, -- GND
X_8 => E(1), -- 2Y\
X_9 => J(4), -- 2D
X_10 => J(5), -- 2C
--
X_12 => J(6), -- 2B
X_13 => J(7), -- 2A
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_145.vhd
0,0 → 1,87
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74145N: 1-of-10 decoder/driver (open collector) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_145 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 120 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_145 is
signal J, B : unsigned(3 downto 0); -- Test stimuli
signal D, E : std_logic_vector(9 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(J) is
variable N : natural;
begin
D <= (others => 'Z'); -- Default
N := TTL_to_integer(J(3 downto 0));
if N < 10 then
D(N) <= '0';
end if;
end process;
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74145N
port map(
X_1 => E(0), -- Q0\
X_2 => E(1), -- Q1\
X_3 => E(2), -- Q2\
X_4 => E(3), -- Q3\
X_5 => E(4), -- Q4\
X_6 => E(5), -- Q5\
X_7 => E(6), -- Q6\
X_8 => open, -- GND
X_9 => E(7), -- Q7\
X_10 => E(8), -- Q8\
X_11 => E(9), -- Q9\
X_12 => J(3), -- A3
X_13 => J(2), -- A2
X_14 => J(1), -- A1
X_15 => J(0), -- A0
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_15.vhd
0,0 → 1,78
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS15N: Triple 3-input AND gate (open collector) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_15 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_15 is
signal J, B : unsigned(8 downto 0); -- Test stimuli
signal D, E : std_logic_vector(2 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= TTL_OC( J(0) and J(1) and J(2) );
D(1) <= TTL_OC( J(3) and J(4) and J(5) );
D(2) <= TTL_OC( J(6) and J(7) and J(8) );
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS15N
port map(
X_1 => J(0), -- 1A
X_2 => J(1), -- 1B
X_3 => J(3), -- 2A
X_4 => J(4), -- 2B
X_5 => J(5), -- 2C
X_6 => E(1), -- 2Y\
X_7 => open, -- GND
X_8 => E(2), -- 3Y\
X_9 => J(6), -- 3C
X_10 => J(7), -- 3B
X_11 => J(8), -- 3A
X_12 => E(0), -- 1Y\
X_13 => J(2), -- 1C
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_150.vhd
0,0 → 1,91
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74150N: 16-input multiplexer --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_150 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 50 ns;
Finish : time := 100 ms;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_150 is
signal J, B : unsigned(20 downto 0); -- Test stimuli
signal D, E : std_logic_vector(0 downto 0); -- Expected & actual results
signal A : unsigned(3 downto 0);
signal chn : natural range 15 downto 0;
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
A <= B(4 downto 1);
chn <= TTL_to_integer(A);
D(0) <= B(0) or B(5+chn);
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74150N
port map(
X_1 => B(12), -- I7
X_2 => B(11), -- I6
X_3 => B(10), -- I5
X_4 => B(9), -- I4
X_5 => B(8), -- I3
X_6 => B(7), -- I2
X_7 => B(6), -- I1
X_8 => B(5), -- I0
X_9 => B(0), -- E\
X_10 => E(0), -- Z\
X_11 => B(4), -- S3
X_12 => open, -- GND
X_13 => B(3), -- S2
X_14 => B(2), -- S1
X_15 => B(1), -- S0
X_16 => B(20), -- I15
X_17 => B(19), -- I14
X_18 => B(18), -- I13
X_19 => B(17), -- I12
X_20 => B(16), -- I11
X_21 => B(15), -- I10
X_22 => B(14), -- I9
X_23 => B(13), -- I8
X_24 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_151.vhd
0,0 → 1,84
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS151N: 8-input multiplexer --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_151 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 50 ns;
Finish : time := 200 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_151 is
signal J, B : unsigned(11 downto 0); -- Test stimuli
signal D, E : std_logic_vector(1 downto 0); -- Expected & actual results
signal A : unsigned(2 downto 0);
signal chn : natural range 7 downto 0;
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
A <= B(3 downto 1);
chn <= TTL_to_integer(A);
D(1) <= B(0) or not B(4+chn);
D(0) <= not D(1);
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS151N
port map(
X_1 => B(7), -- I3
X_2 => B(6), -- I2
X_3 => B(5), -- I1
X_4 => B(4), -- I0
X_5 => E(0), -- Z
X_6 => E(1), -- Z\
X_7 => B(0), -- E\
X_8 => open, -- GND
X_9 => B(3), -- S2
X_10 => B(2), -- S1
X_11 => B(1), -- S0
X_12 => B(11), -- I7
X_13 => B(10), -- I6
X_14 => B(9), -- I5
X_15 => B(8), -- I4
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_153.vhd
0,0 → 1,85
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS153N: Dual 4-input mux. (common selects) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_153 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 50 ns;
Finish : time := 200 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_153 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(1 downto 0); -- Expected & actual results
signal A : unsigned(1 downto 0);
signal chn : natural range 3 downto 0;
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
A <= B(3 downto 2);
chn <= TTL_to_integer(A);
D(0) <= (not B(0)) and B(7-chn);
D(1) <= (not B(1)) and B(chn+4);
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS153N
port map(
X_1 => B(0), -- EA\
X_2 => B(3), -- S1
X_3 => B(4), -- I3A
X_4 => B(5), -- I2A
X_5 => B(6), -- I1A
X_6 => B(7), -- I0A
X_7 => E(0), -- ZA
X_8 => open, -- GND
X_9 => E(1), -- ZB
X_10 => B(4), -- I0B
X_11 => B(5), -- I1B
X_12 => B(6), -- I2B
X_13 => B(7), -- I3B
X_14 => B(2), -- S0
X_15 => B(1), -- EB\
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_154.vhd
0,0 → 1,95
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74154N: 1-of-16 decoder/demultiplexer --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_154 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_154 is
signal J, B : unsigned(5 downto 0); -- Test stimuli
signal D, E : std_logic_vector(15 downto 0); -- Expected & actual results
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(B) is
variable chn : natural range 15 downto 0;
variable EN : std_logic;
begin
chn := TTL_to_integer(B(5 downto 2));
EN := B(1) or B(0);
E <= (others => '1');
E(chn) <= EN;
end process;
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74154N
port map(
X_1 => D(0), -- O0\
X_2 => D(1), -- O1\
X_3 => D(2), -- O2\
X_4 => D(3), -- O3\
X_5 => D(4), -- O4\
X_6 => D(5), -- O5\
X_7 => D(6), -- O6\
X_8 => D(7), -- O7\
X_9 => D(8), -- O8\
X_10 => D(9), -- O9\
X_11 => D(10), -- O10\
X_12 => open, -- GND
X_13 => D(11), -- O11\
X_14 => D(12), -- O12\
X_15 => D(13), -- O13\
X_16 => D(14), -- O14\
X_17 => D(15), -- O15\
X_18 => B(0), -- E0\
X_19 => B(1), -- E1\
X_20 => B(5), -- A3
X_21 => B(4), -- A2
X_22 => B(3), -- A1
X_23 => B(2), -- A0
X_24 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_155.vhd
0,0 → 1,91
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS155N: Dual 1-of-4 decoder/demultiplexer --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_155 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_155 is
signal J, B : unsigned(5 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
begin
 
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(B) is
variable N : natural range 3 downto 0;
variable EA, EB : std_logic;
begin
N := TTL_to_integer(B(5 downto 4));
EA := B(0) and not B(1);
EB := not(B(2) or B(3));
D <= (others => '1');
D(N+4) <= not EB;
D(N) <= not EA;
end process;
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS155N
port map(
X_1 => B(0), -- EA
X_2 => B(1), -- EA\
X_3 => B(5), -- A1
X_4 => E(3), -- O3A\
X_5 => E(2), -- O2A\
X_6 => E(1), -- O1A\
X_7 => E(0), -- O0A\
X_8 => open, -- GND
X_9 => E(4), -- O0B\
X_10 => E(5), -- O1B\
X_11 => E(6), -- O2B\
X_12 => E(7), -- O3B\
X_13 => B(4), -- A0
X_14 => B(3), -- EB2\
X_15 => B(2), -- EB1\
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_156.vhd
0,0 → 1,95
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS156N: Dual 1-of-4 decoder/demux (o/c) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_156 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_156 is
signal J, B : unsigned(5 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(B) is
variable N : natural range 3 downto 0;
variable EA, EB : std_logic;
variable X : std_logic_vector(7 downto 0);
begin
N := TTL_to_integer(B(5 downto 4));
EA := B(0) and not B(1);
EB := not(B(2) or B(3));
X := (others => '1');
X(N+4) := not EB;
X(N) := not EA;
for i in X'range loop
D(i) <= TTL_OC(X(i));
end loop;
end process;
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS156N
port map(
X_1 => B(0), -- EA
X_2 => B(1), -- EA\
X_3 => B(5), -- A1
X_4 => E(3), -- O3A\
X_5 => E(2), -- O2A\
X_6 => E(1), -- O1A\
X_7 => E(0), -- O0A\
X_8 => open, -- GND
X_9 => E(4), -- O0B\
X_10 => E(5), -- O1B\
X_11 => E(6), -- O2B\
X_12 => E(7), -- O3B\
X_13 => B(4), -- A0
X_14 => B(3), -- EB2\
X_15 => B(2), -- EB1\
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_157.vhd
0,0 → 1,88
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS157N: Quad 2-input mux. (common select) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_157 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_157 is
signal J, B : unsigned(9 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(B) is
begin
if B(0) = '1' then
D <= (others => '0');
elsif B(1) = '0' then
D <= (B(8), B(6), B(4), B(2));
else
D <= (B(9), B(7), B(5), B(3));
end if;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS157N
port map(
X_1 => B(1), -- S
X_2 => B(2), -- I0A
X_3 => B(3), -- I1A
X_4 => E(0), -- ZA
X_5 => B(4), -- I0B
X_6 => B(5), -- I1B
X_7 => E(1), -- ZB
X_8 => open, -- GND
X_9 => E(3), -- ZD
X_10 => B(9), -- I1D
X_11 => B(8), -- I0D
X_12 => E(2), -- ZC
X_13 => B(7), -- I1C
X_14 => B(6), -- I0C
X_15 => B(0), -- E\
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_158.vhd
0,0 → 1,90
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS158N: Quad 2-input mux (common select: invt) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_158 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_158 is
signal J, B : unsigned(9 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(B) is
variable Z : std_logic_vector(3 downto 0);
begin
if B(0) = '1' then
Z := (others => '0');
elsif B(1) = '0' then
Z := (B(8), B(6), B(4), B(2));
else
Z := (B(9), B(7), B(5), B(3));
end if;
D <= not Z;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS158N
port map(
X_1 => B(1), -- S
X_2 => B(2), -- I0A
X_3 => B(3), -- I1A
X_4 => E(0), -- ZA
X_5 => B(4), -- I0B
X_6 => B(5), -- I1B
X_7 => E(1), -- ZB
X_8 => open, -- GND
X_9 => E(3), -- ZD
X_10 => B(9), -- I1D
X_11 => B(8), -- I0D
X_12 => E(2), -- ZC
X_13 => B(7), -- I1C
X_14 => B(6), -- I0C
X_15 => B(0), -- E\
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_16.vhd
0,0 → 1,81
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN7416N: Hex inverter/driver (HV open collector) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_16 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_16 is
signal J, B : unsigned(5 downto 0); -- Test stimuli
signal D, E : std_logic_vector(5 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= TTL_OC( not J(0) );
D(1) <= TTL_OC( not J(1) );
D(2) <= TTL_OC( not J(2) );
D(3) <= TTL_OC( not J(3) );
D(4) <= TTL_OC( not J(4) );
D(5) <= TTL_OC( not J(5) );
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN7416N
port map(
X_1 => J(0), -- 1A
X_2 => E(0), -- 1Y\
X_3 => J(1), -- 2A
X_4 => E(1), -- 2Y\
X_5 => J(2), -- 3A
X_6 => E(2), -- 3Y\
X_7 => open, -- GND
X_8 => E(3), -- 4Y\
X_9 => J(3), -- 4A
X_10 => E(4), -- 5Y\
X_11 => J(4), -- 5A
X_12 => E(5), -- 6Y\
X_13 => J(5), -- 6A
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_160.vhd
0,0 → 1,148
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS160N: Synchronous presettable BCD decade ctr --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_160 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 30 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_160 is
signal RS, NRS : std_logic;
signal CLK, R : std_logic;
signal J, B : unsigned(6 downto 0); -- Test stimuli
signal D, E : std_logic_vector(4 downto 0); -- Expected & actual results
signal PE : std_logic := '1';
signal CEP : std_logic := '1';
signal CET : std_logic := '1';
 
alias P : unsigned(3 downto 0) is B(3 downto 0);
alias CP : std_logic is CLK;
constant modulus : natural := 10;
constant asyncrst : boolean := true;
constant limit : unsigned(3 downto 0) := to_unsigned(modulus-1, 4);
 
begin
RS <= NRS and R;
CEP <= J(0);
CET <= J(1);
process(CLK) is -- Generate control signals
variable T2, T3 : natural := 0;
begin
if rising_edge(CLK) then
if T2 = 37 then
PE <= '0';
T2 := 0;
else
PE <= '1';
T2 := T2 + 1;
end if;
if T3 = 41 then
R <= '0';
T3 := 0;
else
R <= '1';
T3 := T3 + 1;
end if;
end if;
end process;
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => NRS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(CP, RS) is
variable N : unsigned(3 downto 0);
begin
if asyncrst and (RS = '0') then
N := (others => '0');
elsif rising_edge(CP) then
if RS = '0' then
N := (others => '0');
elsif PE = '0' then
N := unsigned(P);
elsif (CEP and CET) = '1' then
if modulus = 16 then -- Simple binary count
N := N + 1;
else -- Decade count, cover illegal cases
case N is
when "1001" => N := "0000";
when "1011" | "1101" => N := "0100";
when "1111" => N := "1000";
when others => N := N + 1;
end case;
end if;
end if;
end if;
D(3 downto 0) <= std_logic_vector(N); -- Export results
if now > 1 ns and N = limit then
D(4) <= CET;
else
D(4) <= '0';
end if;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS160N
port map(
X_1 => RS, -- R\
X_2 => CP, -- CP
X_3 => B(0), -- P0
X_4 => B(1), -- P1
X_5 => B(2), -- P2
X_6 => B(3), -- P3
X_7 => CEP, -- CEP
X_8 => open, -- GND
X_9 => PE, -- PE\
X_10 => CET, -- CET
X_11 => E(3), -- Q3
X_12 => E(2), -- Q2
X_13 => E(1), -- Q1
X_14 => E(0), -- Q0
X_15 => E(4), -- TC
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_161.vhd
0,0 → 1,148
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS161N: Synch. presettable 4-bit binary ctr --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_161 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 30 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_161 is
signal RS, NRS : std_logic;
signal CLK, R : std_logic;
signal J, B : unsigned(6 downto 0); -- Test stimuli
signal D, E : std_logic_vector(4 downto 0); -- Expected & actual results
signal PE : std_logic := '1';
signal CEP : std_logic := '1';
signal CET : std_logic := '1';
 
alias P : unsigned(3 downto 0) is B(3 downto 0);
alias CP : std_logic is CLK;
constant modulus : natural := 16;
constant asyncrst : boolean := true;
constant limit : unsigned(3 downto 0) := to_unsigned(modulus-1, 4);
 
begin
RS <= NRS and R;
CEP <= J(0);
CET <= J(1);
process(CLK) is -- Generate control signals
variable T2, T3 : natural := 0;
begin
if rising_edge(CLK) then
if T2 = 37 then
PE <= '0';
T2 := 0;
else
PE <= '1';
T2 := T2 + 1;
end if;
if T3 = 41 then
R <= '0';
T3 := 0;
else
R <= '1';
T3 := T3 + 1;
end if;
end if;
end process;
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => NRS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(CP, RS) is
variable N : unsigned(3 downto 0);
begin
if asyncrst and (RS = '0') then
N := (others => '0');
elsif rising_edge(CP) then
if RS = '0' then
N := (others => '0');
elsif PE = '0' then
N := unsigned(P);
elsif (CEP and CET) = '1' then
if modulus = 16 then -- Simple binary count
N := N + 1;
else -- Decade count, cover illegal cases
case N is
when "1001" => N := "0000";
when "1011" | "1101" => N := "0100";
when "1111" => N := "1000";
when others => N := N + 1;
end case;
end if;
end if;
end if;
D(3 downto 0) <= std_logic_vector(N); -- Export results
if now > 1 ns and N = limit then
D(4) <= CET;
else
D(4) <= '0';
end if;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS161N
port map(
X_1 => RS, -- R\
X_2 => CP, -- CP
X_3 => B(0), -- P0
X_4 => B(1), -- P1
X_5 => B(2), -- P2
X_6 => B(3), -- P3
X_7 => CEP, -- CEP
X_8 => open, -- GND
X_9 => PE, -- PE\
X_10 => CET, -- CET
X_11 => E(3), -- Q3
X_12 => E(2), -- Q2
X_13 => E(1), -- Q1
X_14 => E(0), -- Q0
X_15 => E(4), -- TC
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_162.vhd
0,0 → 1,148
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS162N: Synchronous presettable BCD decade ctr --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_162 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 30 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_162 is
signal RS, NRS : std_logic;
signal CLK, R : std_logic;
signal J, B : unsigned(6 downto 0); -- Test stimuli
signal D, E : std_logic_vector(4 downto 0); -- Expected & actual results
signal PE : std_logic := '1';
signal CEP : std_logic := '1';
signal CET : std_logic := '1';
 
alias P : unsigned(3 downto 0) is B(3 downto 0);
alias CP : std_logic is CLK;
constant modulus : natural := 10;
constant asyncrst : boolean := false;
constant limit : unsigned(3 downto 0) := to_unsigned(modulus-1, 4);
 
begin
RS <= NRS and R;
CEP <= J(0);
CET <= J(1);
process(CLK) is -- Generate control signals
variable T2, T3 : natural := 0;
begin
if rising_edge(CLK) then
if T2 = 37 then
PE <= '0';
T2 := 0;
else
PE <= '1';
T2 := T2 + 1;
end if;
if T3 = 41 then
R <= '0';
T3 := 0;
else
R <= '1';
T3 := T3 + 1;
end if;
end if;
end process;
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => NRS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(CP, RS) is
variable N : unsigned(3 downto 0);
begin
if asyncrst and (RS = '0') then
N := (others => '0');
elsif rising_edge(CP) then
if RS = '0' then
N := (others => '0');
elsif PE = '0' then
N := unsigned(P);
elsif (CEP and CET) = '1' then
if modulus = 16 then -- Simple binary count
N := N + 1;
else -- Decade count, cover illegal cases
case N is
when "1001" => N := "0000";
when "1011" | "1101" => N := "0100";
when "1111" => N := "1000";
when others => N := N + 1;
end case;
end if;
end if;
end if;
D(3 downto 0) <= std_logic_vector(N); -- Export results
if now > 1 ns and N = limit then
D(4) <= CET;
else
D(4) <= '0';
end if;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS162N
port map(
X_1 => RS, -- R\
X_2 => CP, -- CP
X_3 => B(0), -- P0
X_4 => B(1), -- P1
X_5 => B(2), -- P2
X_6 => B(3), -- P3
X_7 => CEP, -- CEP
X_8 => open, -- GND
X_9 => PE, -- PE\
X_10 => CET, -- CET
X_11 => E(3), -- Q3
X_12 => E(2), -- Q2
X_13 => E(1), -- Q1
X_14 => E(0), -- Q0
X_15 => E(4), -- TC
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_163.vhd
0,0 → 1,148
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS163N: Synch. presettable 4-bit binary counter --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_163 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 30 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_163 is
signal RS, NRS : std_logic;
signal CLK, R : std_logic;
signal J, B : unsigned(6 downto 0); -- Test stimuli
signal D, E : std_logic_vector(4 downto 0); -- Expected & actual results
signal PE : std_logic := '1';
signal CEP : std_logic := '1';
signal CET : std_logic := '1';
 
alias P : unsigned(3 downto 0) is B(3 downto 0);
alias CP : std_logic is CLK;
constant modulus : natural := 16;
constant asyncrst : boolean := false;
constant limit : unsigned(3 downto 0) := to_unsigned(modulus-1, 4);
 
begin
RS <= NRS and R;
CEP <= J(0);
CET <= J(1);
process(CLK) is -- Generate control signals
variable T2, T3 : natural := 0;
begin
if rising_edge(CLK) then
if T2 = 37 then
PE <= '0';
T2 := 0;
else
PE <= '1';
T2 := T2 + 1;
end if;
if T3 = 41 then
R <= '0';
T3 := 0;
else
R <= '1';
T3 := T3 + 1;
end if;
end if;
end process;
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => NRS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(CP, RS) is
variable N : unsigned(3 downto 0);
begin
if asyncrst and (RS = '0') then
N := (others => '0');
elsif rising_edge(CP) then
if RS = '0' then
N := (others => '0');
elsif PE = '0' then
N := unsigned(P);
elsif (CEP and CET) = '1' then
if modulus = 16 then -- Simple binary count
N := N + 1;
else -- Decade count, cover illegal cases
case N is
when "1001" => N := "0000";
when "1011" | "1101" => N := "0100";
when "1111" => N := "1000";
when others => N := N + 1;
end case;
end if;
end if;
end if;
D(3 downto 0) <= std_logic_vector(N); -- Export results
if now > 1 ns and N = limit then
D(4) <= CET;
else
D(4) <= '0';
end if;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS163N
port map(
X_1 => RS, -- R\
X_2 => CP, -- CP
X_3 => B(0), -- P0
X_4 => B(1), -- P1
X_5 => B(2), -- P2
X_6 => B(3), -- P3
X_7 => CEP, -- CEP
X_8 => open, -- GND
X_9 => PE, -- PE\
X_10 => CET, -- CET
X_11 => E(3), -- Q3
X_12 => E(2), -- Q2
X_13 => E(1), -- Q1
X_14 => E(0), -- Q0
X_15 => E(4), -- TC
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_164.vhd
0,0 → 1,94
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS164N: SIPO shift register --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_164 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_164 is
signal RS, RSH : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
alias CP : std_logic is CLK;
alias A : std_logic is JC(1);
alias B : std_logic is JC(2);
alias MR : std_logic is RS;
begin
RS <= RSH;
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RSH,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(CP, MR) is
variable N : std_logic_vector(7 downto 0);
begin
if MR = '0' then
N := (others => '0');
elsif rising_edge(CP) then
N := N(6 downto 0) & (A and B);
end if;
D <= N;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS164N
port map(
X_1 => A, -- A
X_2 => B, -- B
X_3 => E(0), -- Q0
X_4 => E(1), -- Q1
X_5 => E(2), -- Q2
X_6 => E(3), -- Q3
X_7 => open, -- GND
X_8 => CP, -- CP
X_9 => MR, -- MR\
X_10 => E(4), -- Q4
X_11 => E(5), -- Q5
X_12 => E(6), -- Q6
X_13 => E(7), -- Q7
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_165.vhd
0,0 → 1,118
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS165N: 8-bit parallel-to-serial converter --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_165 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_165 is
signal CLK, ICLK : std_logic;
signal JC, BC : unsigned(9 downto 0); -- Test stimuli
signal D, E : std_logic_vector(1 downto 0); -- Expected & actual results
signal PL, RS : std_logic;
signal CP1, CP2 : std_logic;
signal P1 : std_logic_vector(7 downto 0) := (others => '0');
signal SR : std_logic_vector(7 downto 0);
alias DS : std_logic is BC(1);
begin
P1 <= std_logic_vector(BC(9 downto 2));
ICLK <= not((CP1 and PL) or (CP2 and PL));
D(0) <= SR(7);
D(1) <= not SR(7);
process(CLK, RS) is
variable X : unsigned(5 downto 0);
begin
if RS = '0' then
CP1 <= '0';
CP2 <= '0';
PL <= '0';
elsif rising_edge(CLK) then
CP1 <= BC(0);
CP2 <= not BC(0);
X := BC(X'range);
case X is
when "000000" => PL <= '0';
when others => PL <= '1';
end case;
elsif falling_edge(CLK) then
CP1 <= '0';
CP2 <= '0';
end if;
end process;
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(ICLK, PL) is
begin
if PL = '0' then -- Asynchronous load
SR <= P1;
elsif falling_edge(ICLK) then
SR <= SR(6 downto 0) & DS;
end if;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS165N
port map(
X_1 => PL, -- PL\
X_2 => CP1, -- CP1
X_3 => P1(4), -- P4
X_4 => P1(5), -- P5
X_5 => P1(6), -- P6
X_6 => P1(7), -- P7
X_7 => E(1), -- Q7\
X_8 => open, -- GND
X_9 => E(0), -- Q7
X_10 => DS, -- DS
X_11 => P1(0), -- P0
X_12 => P1(1), -- P1
X_13 => P1(2), -- P2
X_14 => P1(3), -- P3
X_15 => CP2, -- CP2
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_166.vhd
0,0 → 1,121
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS166N: 8-bit PISO shift register --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_166 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_166 is
signal CLK, ICLK : std_logic;
signal JC, BC : unsigned(9 downto 0); -- Test stimuli
signal D, E : std_logic_vector(0 downto 0); -- Expected & actual results
signal PL, RS : std_logic;
signal CP1, CP2 : std_logic;
signal P1 : std_logic_vector(7 downto 0) := (others => '0');
signal SR : std_logic_vector(7 downto 0);
alias DS : std_logic is BC(1);
begin
P1 <= std_logic_vector(BC(9 downto 2));
ICLK <= CP1 or CP2;
D(0) <= SR(7);
process(CLK, RS) is
variable X : unsigned(5 downto 0);
begin
if RS = '0' then
CP1 <= '0';
CP2 <= '0';
PL <= '0';
elsif rising_edge(CLK) then
CP1 <= BC(0);
CP2 <= not BC(0);
X := BC(X'range);
case X is
when "000000" => PL <= '0';
when others => PL <= '1';
end case;
elsif falling_edge(CLK) then
CP1 <= '0';
CP2 <= '0';
end if;
end process;
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(ICLK, RS) is
begin
if RS = '0' then -- Asynchronous reset
SR <= (others => '0');
elsif rising_edge(ICLK) then
if PL = '0' then
SR <= P1;
else
SR <= SR(6 downto 0) & DS;
end if;
end if;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS166N
port map(
X_1 => DS, -- DS
X_2 => P1(0), -- P0
X_3 => P1(1), -- P1
X_4 => P1(2), -- P2
X_5 => P1(3), -- P3
X_6 => CP2, -- CP2
X_7 => CP1, -- CP1
X_8 => open, -- GND
X_9 => RS, -- MR\
X_10 => P1(4), -- P4
X_11 => P1(5), -- P5
X_12 => P1(6), -- P6
X_13 => E(0), -- Q7
X_14 => P1(7), -- P7
X_15 => PL, -- PE\
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_168.vhd
0,0 → 1,163
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS168N: Synchronous bidirectional BCD counter --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_168 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_168 is
signal RS : std_logic;
signal CLK : std_logic;
signal J, B : unsigned(6 downto 0); -- Test stimuli
signal D, E : std_logic_vector(4 downto 0); -- Expected & actual results
signal PE : std_logic := '1';
signal CEP : std_logic := '1';
signal CET : std_logic := '1';
signal UD : std_logic := '1';
signal X, Y, Z : std_logic;
signal W : std_logic_vector(3 downto 0);
 
alias P : unsigned(3 downto 0) is B(3 downto 0);
alias CP : std_logic is CLK;
constant modulus : natural := 10;
constant limit : unsigned(3 downto 0) := to_unsigned(modulus-1, 4);
constant decade : boolean := true;
 
begin
CEP <= J(0);
CET <= J(1);
X <= W(0) and W(3) and not CET;
Y <= nor_reduce(W) and not CET;
Z <= not X when UD = '1' else not Y;
D <= Z & W;
process(CP, RS) is -- Generate control signals
variable T2, T3 : natural := 0;
begin
if RS = '0' then
PE <= '0';
elsif rising_edge(CP) then
if T2 = 37 then
PE <= '0';
T2 := 0;
else
PE <= '1';
T2 := T2 + 1;
end if;
if T3 = 41 then
UD <= not UD;
T3 := 0;
else
T3 := T3 + 1;
end if;
end if;
end process;
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(CP) is
variable SW : std_logic_vector(3 downto 0);
variable R : unsigned(3 downto 0);
begin
if CP'event and CP = '1' then -- Everything is synchronous
SW := (PE, CEP, CET, UD);
case SW is
when "0000" | "0001" | "0010" | "0011" |
"0100" | "0101" | "0110" | "0111"=> -- Load
R := unsigned(P);
when "1001" => -- Count up
if decade then
case R is
when "1001" => R := "0000";
when "1011" => R := "0100";
when "1101" => R := "0100";
when others => R := R + 1;
end case;
else
R := R + 1;
end if;
when "1000" => -- Count down
if decade then
case R is
when "0000" => R := "1001";
when "1010" => R := "0001";
when "1100" => R := "0011";
when "1110" => R := "0101";
when others => R := R - 1;
end case;
else
R := R - 1;
end if;
when others => -- No change
null;
end case;
end if;
W <= std_logic_vector(R);
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS168N
port map(
X_1 => UD, -- U_D\
X_2 => CP, -- CP
X_3 => B(0), -- P0
X_4 => B(1), -- P1
X_5 => B(2), -- P2
X_6 => B(3), -- P3
X_7 => CEP, -- CEP\
X_8 => open, -- GND
X_9 => PE, -- PE\
X_10 => CET, -- CET\
X_11 => E(3), -- Q3
X_12 => E(2), -- Q2
X_13 => E(1), -- Q1
X_14 => E(0), -- Q0
X_15 => E(4), -- TC\
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_169.vhd
0,0 → 1,163
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS169N: Synch. bidirectional 4-bit binary ctr --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_169 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_169 is
signal RS : std_logic;
signal CLK : std_logic;
signal J, B : unsigned(6 downto 0); -- Test stimuli
signal D, E : std_logic_vector(4 downto 0); -- Expected & actual results
signal PE : std_logic := '1';
signal CEP : std_logic := '1';
signal CET : std_logic := '1';
signal UD : std_logic := '1';
signal X, Y, Z : std_logic;
signal W : std_logic_vector(3 downto 0);
 
alias P : unsigned(3 downto 0) is B(3 downto 0);
alias CP : std_logic is CLK;
constant modulus : natural := 10;
constant limit : unsigned(3 downto 0) := to_unsigned(modulus-1, 4);
constant decade : boolean := false;
 
begin
CEP <= J(0);
CET <= J(1);
X <= and_reduce(W) and not CET;
Y <= nor_reduce(W) and not CET;
Z <= not X when UD = '1' else not Y;
D <= Z & W;
process(CP, RS) is -- Generate control signals
variable T2, T3 : natural := 0;
begin
if RS = '0' then
PE <= '0';
elsif rising_edge(CP) then
if T2 = 37 then
PE <= '0';
T2 := 0;
else
PE <= '1';
T2 := T2 + 1;
end if;
if T3 = 41 then
UD <= not UD;
T3 := 0;
else
T3 := T3 + 1;
end if;
end if;
end process;
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(CP) is
variable SW : std_logic_vector(3 downto 0);
variable R : unsigned(3 downto 0);
begin
if CP'event and CP = '1' then -- Everything is synchronous
SW := (PE, CEP, CET, UD);
case SW is
when "0000" | "0001" | "0010" | "0011" |
"0100" | "0101" | "0110" | "0111"=> -- Load
R := unsigned(P);
when "1001" => -- Count up
if decade then
case R is
when "1001" => R := "0000";
when "1011" => R := "0100";
when "1101" => R := "0100";
when others => R := R + 1;
end case;
else
R := R + 1;
end if;
when "1000" => -- Count down
if decade then
case R is
when "0000" => R := "1001";
when "1010" => R := "0001";
when "1100" => R := "0011";
when "1110" => R := "0101";
when others => R := R - 1;
end case;
else
R := R - 1;
end if;
when others => -- No change
null;
end case;
end if;
W <= std_logic_vector(R);
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS169N
port map(
X_1 => UD, -- U_D\
X_2 => CP, -- CP
X_3 => B(0), -- P0
X_4 => B(1), -- P1
X_5 => B(2), -- P2
X_6 => B(3), -- P3
X_7 => CEP, -- CEP\
X_8 => open, -- GND
X_9 => PE, -- PE\
X_10 => CET, -- CET\
X_11 => E(3), -- Q3
X_12 => E(2), -- Q2
X_13 => E(1), -- Q1
X_14 => E(0), -- Q0
X_15 => E(4), -- TC\
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_17.vhd
0,0 → 1,81
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN7417N: Hex buffer/driver (HV open collector) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_17 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_17 is
signal J, B : unsigned(5 downto 0); -- Test stimuli
signal D, E : std_logic_vector(5 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= TTL_OC( J(0) );
D(1) <= TTL_OC( J(1) );
D(2) <= TTL_OC( J(2) );
D(3) <= TTL_OC( J(3) );
D(4) <= TTL_OC( J(4) );
D(5) <= TTL_OC( J(5) );
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN7417N
port map(
X_1 => J(0), -- 1A
X_2 => E(0), -- 1Y\
X_3 => J(1), -- 2A
X_4 => E(1), -- 2Y\
X_5 => J(2), -- 3A
X_6 => E(2), -- 3Y\
X_7 => open, -- GND
X_8 => E(3), -- 4Y\
X_9 => J(3), -- 4A
X_10 => E(4), -- 5Y\
X_11 => J(4), -- 5A
X_12 => E(5), -- 6Y\
X_13 => J(5), -- 6A
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_170.vhd
0,0 → 1,132
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS170N: 4 X 4 register file (open collector) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_170 is -- Top-level bench
generic(
OC : boolean := true;
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_170 is
subtype T_quad is std_logic_vector(4 downto 1);
type T_mem is array(3 downto 0) of T_quad;
subtype T_addr is natural range 3 downto 0;
 
signal J, B : unsigned(5 downto 0); -- Unused
signal D, E : T_quad; -- Expected & actual results
signal CLK, RS : std_logic;
signal RA, WA : unsigned(1 downto 0) := (others => '0');
signal DI : unsigned(4 downto 0);
signal RE, WE : std_logic := '1';
signal Phase : natural;
 
begin
RA <= J(1 downto 0);
WA <= B(1 downto 0);
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate RAM-specific stimuli
-----------------------------------------------------------------------
CLKX: process(CLK, RS) is
variable ER : std_logic;
begin
ER := '1';
WE <= '1';
if RS = '0' then
DI <= (others => '0');
elsif rising_edge(CLK) then
DI <= DI + 1;
case to_integer(DI) is
when 5 | 6 | 7 | 8 => WE <= '0' after 15 ns;
when 9 |10 | 11 | 12 => ER := '0';
when 16 => DI <= (others => '0');
when others => null;
end case;
RE <= ER;
end if;
end process;
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(all) is
variable mem : T_mem; -- Testbench memory
variable AR, AW : natural;
variable QI : T_quad;
begin
AR := TTL_to_integer(RA);
AW := TTL_to_integer(WA);
D <= (others => 'Z');
if WE = '0' then
mem(AW) := std_logic_vector(DI(3 downto 0));
end if;
if RE = '0' then
QI := mem(AR);
for i in D'range loop
D(i) <= TTL_OC(QI(i));
end loop;
end if;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS170N
port map(
X_1 => DI(1), -- D2
X_2 => DI(2), -- D3
X_3 => DI(3), -- D4
X_4 => RA(1), -- RA1
X_5 => RA(0), -- RA0
X_6 => E(4), -- Q4
X_7 => E(3), -- Q3
X_8 => open, -- GND
X_9 => E(2), -- Q2
X_10 => E(1), -- Q1
X_11 => RE, -- RE\
X_12 => WE, -- WE\
X_13 => WA(1), -- WA1
X_14 => WA(0), -- WA0
X_15 => DI(0), -- D1
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_173.vhd
0,0 → 1,111
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS173N: 4-bit D-type register (3-state outputs) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_173 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_173 is
signal RS, RSH : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
signal SR, DI : std_logic_vector(3 downto 0);
signal DIX : unsigned(4 downto 0);
signal IE1, IE2, OE1, OE2 : std_logic;
begin
RSH <= not RS;
IE1 <= BC(0);
IE2 <= BC(1);
OE1 <= BC(2);
OE2 <= BC(3);
 
DI <= std_logic_vector(DIX(3 downto 0));
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(CLK, RSH) is
begin
if RSH = '1' then
SR <= (others => '0');
DIX <= (others => '0');
elsif rising_edge(CLK) then
if to_integer(DIX) = 4 then
DIX <= (others => '0');
else
DIX <= DIX + 1;
end if;
if (IE1 or IE2) = '0' then
SR <= DI;
end if;
end if;
end process;
D <= SR when (OE1 or OE2) = '0' else (others => 'Z');
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS173N
port map(
X_1 => OE1, -- OE1\
X_2 => OE2, -- OE2\
X_3 => E(0), -- Q0
X_4 => E(1), -- Q1
X_5 => E(2), -- Q2
X_6 => E(3), -- Q3
X_7 => CLK, -- CP
X_8 => open, -- GND
X_9 => IE1, -- IE1\
X_10 => IE2, -- IE2\
X_11 => DI(3), -- D3
X_12 => DI(2), -- D2
X_13 => DI(1), -- D1
X_14 => DI(0), -- D0
X_15 => RSH, -- MR
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_174.vhd
0,0 → 1,90
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS174N: Hex D-flipflop --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_174 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_174 is
signal RS : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(5 downto 0); -- Test stimuli
signal D, E : std_logic_vector(5 downto 0); -- Expected & actual results
signal R : std_logic_vector(5 downto 0); -- Input
begin
R <= std_logic_vector(JC);
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(CLK, RS) is
begin
if RS = '0' then
D <= (others => '0');
elsif rising_edge(CLK) then
D <= R;
end if;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS174N
port map(
X_1 => RS, -- MR\
X_2 => E(0), -- Q0
X_3 => R(0), -- D0
X_4 => R(1), -- D1
X_5 => E(1), -- Q1
X_6 => R(2), -- D2
X_7 => E(2), -- Q2
X_8 => open, -- GND
X_9 => CLK, -- CP
X_10 => E(3), -- Q3
X_11 => R(3), -- D3
X_12 => E(4), -- Q4
X_13 => R(4), -- D4
X_14 => R(5), -- D5
X_15 => E(5), -- Q5
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_175.vhd
0,0 → 1,94
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS175N: Quad D-flipflop --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_175 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_175 is
signal RS : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(3 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
signal R : std_logic_vector(3 downto 0); -- Input
begin
R <= std_logic_vector(JC);
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(CLK, RS) is
begin
if RS = '0' then
D(3 downto 0) <= (others => '0');
D(7 downto 4) <= (others => '1');
elsif rising_edge(CLK) then
for i in R'range loop
D(i) <= R(i);
D(4+i) <= not R(i);
end loop;
end if;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS175N
port map(
X_1 => RS, -- MR\
X_2 => E(0), -- Q0
X_3 => E(4), -- Q0\
X_4 => R(0), -- D0
X_5 => R(1), -- D1
X_6 => E(5), -- Q1\
X_7 => E(1), -- Q1
X_8 => open, -- GND
X_9 => CLK, -- CP
X_10 => E(2), -- Q2
X_11 => E(6), -- Q2\
X_12 => R(2), -- D2
X_13 => R(3), -- D3
X_14 => E(7), -- Q3\
X_15 => E(3), -- Q3
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_176.vhd
0,0 → 1,130
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74176N: Presettable decade counter --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_176 is -- Top-level bench
generic(
StimClk : std_logic := '0';
CheckClk : std_logic := '1';
Period : time := 120 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_176 is
signal RS, PL : std_logic;
signal CLK, C0, C1 : std_logic;
signal J, B : unsigned(3 downto 0); -- Test stimuli
signal D, E, R : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
C0 <= CLK;
R <= std_logic_vector(J);
C1 <= D(0);
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate irregular LD signal
-----------------------------------------------------------------------
process(RS, CLK) is
variable N : natural;
begin
if RS = '0' then
N := 1;
PL <= '1';
elsif rising_edge(CLK) then
if N >= 23 then
N := 1;
PL <= '0', '1' after 30 ns;
else
N := N + 1;
end if;
end if;
end process;
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(C0, PL, RS, R) is
variable Q0 : std_logic;
begin
if RS = '0' then
Q0 := '0';
elsif PL = '0' then
Q0 := R(0);
elsif falling_edge(C0) then
Q0 := not Q0;
end if;
D(0) <= Q0;
end process;
process(C1, PL, RS, R) is
variable Q31 : unsigned(2 downto 0);
begin
if RS = '0' then
Q31 := (others => '0');
elsif PL = '0' then
Q31 := unsigned(R(3 downto 1));
elsif falling_edge(C1) then
case TTL_to_integer(Q31) is
when 4 to 7 => Q31 := Q31 - 4;
when others => Q31 := Q31 + 1;
end case;
end if;
D(3 downto 1) <= std_logic_vector(Q31);
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74176N
port map(
X_1 => PL, -- PL\
X_2 => E(2), -- Q2
X_3 => R(2), -- P2
X_4 => R(0), -- P0
X_5 => E(0), -- Q0
X_6 => C1, -- CP1\
X_7 => open, -- GND
X_8 => C0, -- CP0\
X_9 => E(1), -- Q1
X_10 => R(1), -- P1
X_11 => R(3), -- P3
X_12 => E(3), -- Q3
X_13 => RS, -- MR\
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_177.vhd
0,0 → 1,127
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74177N: Presettable binary counter --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_177 is -- Top-level bench
generic(
StimClk : std_logic := '0';
CheckClk : std_logic := '1';
Period : time := 160 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_177 is
signal RS, PL : std_logic;
signal CLK, C0, C1 : std_logic;
signal J, B : unsigned(3 downto 0); -- Test stimuli
signal D, E, R : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
C0 <= CLK;
R <= std_logic_vector(J);
C1 <= D(0);
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate irregular LD signal
-----------------------------------------------------------------------
process(RS, CLK) is
variable N : natural;
begin
if RS = '0' then
N := 1;
PL <= '1';
elsif rising_edge(CLK) then
if N >= 23 then
N := 1;
PL <= '0', '1' after 30 ns;
else
N := N + 1;
end if;
end if;
end process;
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(C0, PL, RS, R) is
variable Q0 : std_logic;
begin
if RS = '0' then
Q0 := '0';
elsif PL = '0' then
Q0 := R(0);
elsif falling_edge(C0) then
Q0 := not Q0;
end if;
D(0) <= Q0;
end process;
process(C1, PL, RS, R) is
variable Q31 : unsigned(2 downto 0);
begin
if RS = '0' then
Q31 := (others => '0');
elsif PL = '0' then
Q31 := unsigned(R(3 downto 1));
elsif falling_edge(C1) then
Q31 := Q31 + 1;
end if;
D(3 downto 1) <= std_logic_vector(Q31);
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74177N
port map(
X_1 => PL, -- PL\
X_2 => E(2), -- Q2
X_3 => R(2), -- P2
X_4 => R(0), -- P0
X_5 => E(0), -- Q0
X_6 => C1, -- CP1\
X_7 => open, -- GND
X_8 => C0, -- CP0\
X_9 => E(1), -- Q1
X_10 => R(1), -- P1
X_11 => R(3), -- P3
X_12 => E(3), -- Q3
X_13 => RS, -- MR\
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_178.vhd
0,0 → 1,113
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74178N: 4-bit shift register --
-- Note: 74178 is 74179 without MR\ & Q3\ pins --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_178 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_178 is
signal RS, PE, SE : std_logic;
signal CLK,DS : std_logic;
signal JC, BC : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
signal P, REG : std_logic_vector(3 downto 0);
begin
D(3 downto 0) <= REG;
P <= std_logic_vector(JC(3 downto 0));
DS <= JC(4);
process(CLK, RS) is
variable N : natural := 1;
begin
if RS = '0' then
N := 1;
PE <= '0';
SE <= '0';
elsif falling_edge(CLK) then
PE <= '0';
SE <= '0';
N := N - 1;
case N is
when 1 => PE <= '1';
when 2 | 4 | 6 | 8 | 9 => SE <= '1';
when 0 => N := 16;
when others => null;
end case;
end if;
end process;
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(CLK) is
begin
if falling_edge(CLK) then
if SE = '1' then
REG <= REG(2 downto 0) & DS;
elsif PE = '1' then
REG <= P;
end if;
end if;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74178N
port map(
X_1 => P(1), -- P1
X_2 => P(0), -- P0
X_3 => DS, -- DS
X_4 => E(0), -- Q0
X_5 => CLK, -- CP\
X_6 => E(1), -- Q1
X_7 => open, -- GND
X_8 => E(2), -- Q2
X_9 => PE, -- PE
X_10 => E(3), -- Q3
X_11 => SE, -- SE
X_12 => P(3), -- P3
X_13 => P(2), -- P2
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_179.vhd
0,0 → 1,117
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74179N: 4-bit shift register --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_179 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_179 is
signal RS, PE, SE : std_logic;
signal CLK,DS : std_logic;
signal JC, BC : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(4 downto 0); -- Expected & actual results
signal P, REG : std_logic_vector(3 downto 0);
begin
D(3 downto 0) <= REG;
D(4) <= not REG(3);
P <= std_logic_vector(JC(3 downto 0));
DS <= JC(4);
process(CLK, RS) is
variable N : natural := 1;
begin
if RS = '0' then
N := 1;
PE <= '0';
SE <= '0';
elsif falling_edge(CLK) then
PE <= '0';
SE <= '0';
N := N - 1;
case N is
when 1 => PE <= '1';
when 2 | 4 | 6 | 8 | 9 => SE <= '1';
when 0 => N := 16;
when others => null;
end case;
end if;
end process;
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(CLK, RS) is
begin
if RS = '0' then
REG <= (others => '0');
elsif falling_edge(CLK) then
if SE = '1' then
REG <= REG(2 downto 0) & DS;
elsif PE = '1' then
REG <= P;
end if;
end if;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74179N
port map(
X_1 => RS, -- MR\
X_2 => P(1), -- P1
X_3 => P(0), -- P0
X_4 => DS, -- DS
X_5 => E(0), -- Q0
X_6 => CLK, -- CP\ (falling)
X_7 => E(1), -- Q1
X_8 => open, -- GND
X_9 => E(2), -- Q2
X_10 => PE, -- PE
X_11 => E(3), -- Q3
X_12 => E(4), -- Q3\
X_13 => SE, -- SE
X_14 => P(3), -- P3
X_15 => P(2), -- P2
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_180.vhd
0,0 → 1,98
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74180N: 8-bit parity generator/checker --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_180 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 200 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_180 is
signal RS, I : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(9 downto 0); -- Test stimuli
signal D, E : std_logic_vector(1 downto 0); -- Expected & actual results
signal EI, OI : std_logic;
constant SO : natural := 0;
constant SE : natural := 1;
begin
I <= xnor_reduce(std_logic_vector(JC(7 downto 0)));
EI <= JC(8);
OI <= not JC(9);
 
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(all) is
variable K : std_logic_vector(1 downto 0);
begin
K := EI & OI;
D(SE) <= EI xnor I;
D(SO) <= OI xnor I;
case K is
when "00" => D(SE) <= '1'; D(SO) <= '1';
when "01" => null;
when "10" => null;
when others => D(SE) <= '0'; D(SO) <= '0';
end case;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74180N
port map(
X_1 => JC(6), -- I6
X_2 => JC(7), -- I7
X_3 => EI, -- EI
X_4 => OI, -- OI
X_5 => E(SE), -- SE
X_6 => E(SO), -- SO
X_7 => open, -- GND
X_8 => JC(0), -- I0
X_9 => JC(1), -- I1
X_10 => JC(2), -- I2
X_11 => JC(3), -- I3
X_12 => JC(4), -- I4
X_13 => JC(5), -- I5
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_181.vhd
0,0 → 1,154
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- July, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS181N: 4-bit arithmetic/logic unit --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_181 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 100 ns;
Finish : time := 1600 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_181 is
signal JC, BC : unsigned(13 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
signal A, B, F, S : unsigned(3 downto 0);
signal CI, M : std_logic;
signal CO, EQ, P, G : std_logic;
constant M1 : unsigned(3 downto 0) := (others => '1');
begin
S <= BC( 3 downto 0);
A <= BC( 7 downto 4);
B <= BC(11 downto 8);
CI <= BC(12);
M <= BC(13);
D <= CO & EQ & P & G & std_logic_vector(F);
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(all) is
variable BB, XX, YY, ZZ, FF, LL : unsigned(3 downto 0);
variable MB : std_logic;
variable L01 : std_logic;
variable L02 : std_logic;
variable L03 : std_logic;
variable L04 : std_logic;
variable L05 : std_logic;
variable L06 : std_logic;
variable L07 : std_logic;
variable L08 : std_logic;
variable L09 : std_logic;
variable L10 : std_logic;
variable L11 : std_logic;
variable L12 : std_logic;
variable L13 : std_logic;
variable L14 : std_logic;
variable L15 : std_logic;
begin
MB := not ( M );
BB := not B;
for i in A'range loop
YY(i) := not ( ( B(i) and S(3) and A(i) ) or ( A(i) and S(2) and BB(i) ) );
XX(i) := not ( ( BB(i) and S(1) ) or ( S(0) and B(i) ) or A(i) );
end loop;
ZZ := XX xor YY;
L15 := ( XX(3) );
L11 := ( YY(3) and XX(2) );
L12 := ( YY(3) and YY(2) and XX(1) );
L13 := ( YY(3) and YY(2) and YY(1) and XX(0) );
L01 := not ( YY(3) and YY(2) and YY(1) and YY(0) and CI );
L02 := ( CI and YY(0) and YY(1) and YY(2) and MB );
L03 := ( YY(1) and YY(2) and XX(0) and MB );
L04 := ( YY(2) and XX(1) and MB );
L05 := ( XX(2) and MB );
L06 := ( CI and YY(0) and YY(1) and MB );
L07 := ( YY(1) and XX(0) and MB );
L08 := ( XX(1) and MB );
L09 := ( CI and YY(0) and MB );
L10 := ( XX(0) and MB );
LL(0) := not ( CI and MB );
LL(3) := not ( L02 or L03 or L04 or L05 );
LL(2) := not ( L06 or L07 or L08 );
LL(1) := not ( L09 or L10 );
L14 := not ( L15 or L11 or L12 or L13 );
FF := LL xor ZZ;
G <= L14;
CO <= not ( L14 and L01 );
P <= nand_reduce(std_logic_vector(YY));
EQ <= and_reduce(std_logic_vector(FF));
F <= FF;
end process;
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS181N
port map(
X_1 => B(0), -- B(0)\
X_2 => A(0), -- A(0)\
X_3 => S(3), -- S(3)
X_4 => S(2), -- S(2)
X_5 => S(1), -- S(1)
X_6 => S(0), -- S(0)
X_7 => CI, -- Cn
X_8 => M, -- M
X_9 => E(0), -- F(0)\
X_10 => E(1), -- F(1)\
X_11 => E(2), -- F(2)\
X_12 => open, -- GND
X_13 => E(3), -- F(3)\
X_14 => E(6), -- A=B
X_15 => E(5), -- P\
X_16 => E(7), -- Cn+4
X_17 => E(4), -- G\
X_18 => B(3), -- B(3)\
X_19 => A(3), -- A(3)\
X_20 => B(2), -- B(2)\
X_21 => A(2), -- A(2)\
X_22 => B(1), -- B(1)\
X_23 => A(1), -- A(1)\
X_24 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_182.vhd
0,0 → 1,124
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- July, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS182N: Fast carry unit for 4 x LS181 --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_182 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 50 ns;
Finish : time := 30 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_182 is
signal JC, BC : unsigned(8 downto 0); -- Test stimuli
signal D, E : std_logic_vector(4 downto 0); -- Expected & actual results
alias Cn is JC(0);
alias G0 is JC(1);
alias G1 is JC(2);
alias G2 is JC(3);
alias G3 is JC(4);
alias P0 is JC(5);
alias P1 is JC(6);
alias P2 is JC(7);
alias P3 is JC(8);
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(all) is
variable L1 : std_logic;
variable L2 : std_logic;
variable L3 : std_logic;
variable L4 : std_logic;
variable L5 : std_logic;
variable L6 : std_logic;
variable L7 : std_logic;
variable L8 : std_logic;
variable L9 : std_logic;
variable L10 : std_logic;
variable L11 : std_logic;
variable L12 : std_logic;
variable L13 : std_logic;
variable N1 : std_logic;
begin
N1 := NOT ( CN );
L1 := ( G3 AND G2 AND G1 AND G0 );
L2 := ( P1 AND G3 AND G2 AND G1 );
L3 := ( P2 AND G3 AND G2 );
L4 := ( P3 AND G3 );
L5 := ( G2 AND G1 AND G0 AND N1 );
L6 := ( P0 AND G2 AND G1 AND G0 );
L7 := ( P1 AND G2 AND G1 );
L8 := ( P2 AND G2 );
L9 := ( G1 AND G0 AND N1 );
L10 := ( P0 AND G1 AND G0 );
L11 := ( P1 AND G1 );
L12 := ( G0 AND N1 );
L13 := ( P0 AND G0 );
D(4) <= ( P3 OR P2 OR P1 OR P0 );
D(3) <= ( L1 OR L2 OR L3 OR L4 );
D(2) <= NOT ( L5 OR L6 OR L7 OR L8 );
D(1) <= NOT ( L9 OR L10 OR L11 );
D(0) <= NOT ( L12 OR L13 );
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS182N
port map(
X_1 => G1, -- G1
X_2 => P1, -- P1
X_3 => G0, -- G0
X_4 => P0, -- P0
X_5 => G3, -- G3
X_6 => P3, -- P3
X_7 => E(4), -- P
X_8 => open, -- GND
X_9 => E(2), -- Cnz
X_10 => E(3), -- G
X_11 => E(1), -- Cny
X_12 => E(0), -- Cnx
X_13 => Cn, -- Cn
X_14 => G2, -- G2
X_15 => P2, -- P2
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_183.vhd
0,0 → 1,104
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- July, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74H183N: Dual high-speed adder --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_183 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 25 ns;
Finish : time := 2 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_183 is
subtype Pair is std_logic_vector(1 downto 0);
subtype Triple is std_logic_vector(2 downto 0);
type Table is array(0 to 7) of Pair;
signal JC, BC : unsigned(5 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
signal X, Y : Pair;
 
alias CIa is BC(0);
alias Aa is BC(1);
alias Ba is BC(2);
alias CIb is BC(3);
alias Ab is BC(4);
alias Bb is BC(5);
constant SUM : natural := 1;
constant CARRY : natural := 0;
impure function Adder(A, B, C : std_logic) return Pair is -- impure, as it calls "now"
constant ANS : Table := (("00"), ("10"), ("10"), ("01"), ("10"), ("01"), ("01"), ("11"));
variable Z : unsigned(2 downto 0) := (others => '0');
variable R : natural range 7 downto 0 := 0;
begin
if now > 5 ns then -- Avoid metavalues at T=0
Z := A & B & C;
R := to_integer(Z);
end if;
return ANS(R);
end function;
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
X <= Adder(Aa, Ba, CIa);
Y <= Adder(Ab, Bb, CIb);
D <= (Y(SUM), Y(CARRY), X(SUM), X(CARRY));
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74H183N
port map(
X_1 => Aa, -- Aa
X_3 => Ba, -- Ba
X_4 => CIa, -- CIa
X_5 => E(0), -- COa
X_6 => E(1), -- Sa
X_7 => open, -- GND
X_8 => E(3), -- Sb
X_10 => E(2), -- COb
X_11 => CIb, -- CIb
X_12 => Bb, -- Bb
X_13 => Ab, -- Ab
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_189.vhd
0,0 → 1,153
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- July, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS189N: 64-bit RAM (3-state outputs) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_189 is -- Top-level bench
generic(
OC : boolean := false;
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_189 is
signal J, B : unsigned(5 downto 0); -- Unused
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
signal CLK, RS : std_logic;
signal CS, WR : std_logic := '1';
signal AD : TTLword := (others => '0');
signal DI, Q, QQ : TTLquad;
signal CE, WE : std_logic;
 
signal W : std_logic;
signal Phase : natural;
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate RAM-specific stimuli
-----------------------------------------------------------------------
CLKX: process(CLK, RS) is
begin
if RS = '0' then
Phase <= 0;
CS <= '1';
WR <= '1';
elsif rising_edge(CLK) then
case Phase is
when 0 => CS <= '0'; Phase <= 1;
when 1 => WR <= W; Phase <= 2;
when 2 => WR <= '1'; Phase <= 3;
when others => CS <= '1'; WR <= '1'; Phase <= 0;
end case;
end if;
end process;
UPDATE: process(CLK, RS) is
variable TD : unsigned(3 downto 0);
begin
if RS = '0' then
W <= '0';
AD <= (others => '0');
TD := "0110";
elsif rising_edge(CLK) and Phase = 3 then
if AD = "1111" then
W <= not W; -- Alternate read/write cycles
end if;
AD <= AD + 1;
TD := TD + 1;
end if;
for i in TD'range loop
DI(i+1) <= TD(i);
end loop;
end process;
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
CE <= WR and not CS;
WE <= not(WR or CS);
process(CE, WE, AD, DI) is
variable mem : TTLmem; -- Testbench memory
variable adr : TTLaddr;
variable QI : TTLquad;
begin
adr := TTL_to_integer(AD);
if WE'event and WE = '1' then
mem(adr) := not DI; -- Data is output inverted
end if;
if CE = '1' then
QI := mem(adr);
else
QI := (others => 'Z');
end if;
if OC then
for i in Q'range loop
Q(i) <= TTL_OC(QI(i));
end loop;
else
Q <= QI;
end if;
end process;
D <= Q;
E <= QQ;
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS189N
port map(
X_1 => AD(0), -- A0
X_2 => CS, -- CS\
X_3 => WR, -- WE\
X_4 => DI(1), -- D1
X_5 => QQ(1), -- Q1\
X_6 => DI(2), -- D2
X_7 => QQ(2), -- Q2\
X_8 => open, -- GND
X_9 => QQ(3), -- Q3\
X_10 => DI(3), -- D3
X_11 => QQ(4), -- Q4\
X_12 => DI(4), -- D4
X_13 => AD(3), -- A3
X_14 => AD(2), -- A2
X_15 => AD(1), -- A1
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_190.vhd
0,0 → 1,138
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- August, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS190N: Up/down decade counter --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_190 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 100 ns;
Finish : time := 15 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_190 is
signal JC, BC : unsigned(6 downto 0); -- Test stimuli
signal D, E : std_logic_vector(5 downto 0); -- Expected & actual results
signal P : unsigned(3 downto 0);
signal CP : std_logic;
signal RS, PL : std_logic;
signal CE, UD : std_logic;
signal T1, T2, T3, T4, T5,
T6, T7, T8, T9, T10,
T11, T12, T13, T14, T15,
T16 : std_logic;
 
signal Q, QB, X : unsigned(3 downto 0);
begin
P <= JC(6 downto 3);
CE <= BC(6);
process(CP) is
begin
if rising_edge(CP) then
PL <= RS and nand_reduce(std_logic_vector(BC(4 downto 0))) after 10 ns, '1' after 80 ns;
UD <= BC(5);
end if;
end process;
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CP,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
T1 <= not (UD);
T2 <= not (UD or CE);
T3 <= not (CE or T1);
T4 <= not (QB(1) and QB(2) and QB(3));
T5 <= T3 and QB(0) and T4;
T6 <= Q(0) and QB(3) and T2;
T7 <= T4 and T3 and QB(0) and QB(1);
T8 <= Q(0) and Q(1) and T2;
T9 <= T3 and QB(0) and QB(1) and QB(2);
T10 <= Q(0) and Q(3) and T2;
T11 <= Q(0) and Q(1) and Q(2) and T2;
X(0) <= not (CE);
X(1) <= T5 or T6;
X(2) <= T7 or T8;
X(3) <= T9 or T10 or T11;
process(CP, PL) is
begin
if PL = '0' then
Q <= P;
elsif rising_edge(CP) and (CE = '0') then
Q <= Q xor X; -- 'T' flipflops
end if;
end process;
QB <= not Q;
T15 <= (T1 and Q(0) and Q(3)); -- True for count = 9, 11, 13, 15
T16 <= (UD and QB(0) and QB(1) and QB(2) and QB(3));
T12 <= (T15 or T16);
T13 <= not (CP);
T14 <= not (CE);
D(3 downto 0) <= std_logic_vector(Q);
D(4) <= T12;
D(5) <= not (T13 and T14 and T12);
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS190N
port map(
X_1 => P(1), -- P1
X_2 => E(1), -- Q1
X_3 => E(0), -- Q0
X_4 => CE, -- CE\
X_5 => UD, -- U\/D
X_6 => E(2), -- Q2
X_7 => E(3), -- Q3
X_8 => open, -- GND
X_9 => P(3), -- P3
X_10 => P(2), -- P2
X_11 => PL, -- PL\
X_12 => E(4), -- TC
X_13 => E(5), -- RC\
X_14 => CP, -- CP
X_15 => P(0), -- P0
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_191.vhd
0,0 → 1,133
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- August, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS191N: Up/down binary counter --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_191 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 100 ns;
Finish : time := 15 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_191 is
signal JC, BC : unsigned(6 downto 0); -- Test stimuli
signal D, E : std_logic_vector(5 downto 0); -- Expected & actual results
signal P : unsigned(3 downto 0);
signal CP : std_logic;
signal RS, PL : std_logic;
signal CE, UD : std_logic;
signal T1, T2, T3, T4, T5,
T6, T7, T8, T9, T10,
T11, T12, T13, T14 : std_logic;
 
signal Q, QB, X : unsigned(3 downto 0);
begin
P <= JC(6 downto 3);
CE <= BC(6);
process(CP) is
begin
if rising_edge(CP) then
PL <= RS and nand_reduce(std_logic_vector(BC(4 downto 0))) after 10 ns, '1' after 80 ns;
UD <= BC(5);
end if;
end process;
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CP,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
T1 <= not (UD);
T2 <= not (UD or CE);
T3 <= not (CE or T1);
T4 <= T1 and Q(0) and Q(1) and Q(2) and Q(3);
T5 <= UD and QB(0) and QB(1) and QB(2) and QB(3);
T6 <= T3 and QB(0);
T7 <= Q(0) and T2;
T8 <= T3 and QB(0) and QB(1);
T9 <= Q(0) and Q(1) and T2;
T10 <= T3 and QB(0) and QB(1) and QB(2);
T11 <= Q(0) and Q(1) and Q(2) and T2;
X(0) <= not (CE);
X(1) <= T6 or T7;
X(2) <= T8 or T9;
X(3) <= T10 or T11;
T12 <= not (CP);
T13 <= not (CE);
T14 <= T4 or T5;
process(CP, PL) is
begin
if PL = '0' then
Q <= P;
elsif rising_edge(CP) and (CE = '0') then
Q <= Q xor X; -- 'T' flipflops
end if;
end process;
QB <= not Q;
D(3 downto 0) <= std_logic_vector(Q(3 downto 0));
D(4) <= T14;
D(5) <= not (T12 and T13 and T14);
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS191N
port map(
X_1 => P(1), -- P1
X_2 => E(1), -- Q1
X_3 => E(0), -- Q0
X_4 => CE, -- CE\
X_5 => UD, -- U\/D
X_6 => E(2), -- Q2
X_7 => E(3), -- Q3
X_8 => open, -- GND
X_9 => P(3), -- P3
X_10 => P(2), -- P2
X_11 => PL, -- PL\
X_12 => E(4), -- TC
X_13 => E(5), -- RC\
X_14 => CP, -- CP
X_15 => P(0), -- P0
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_192.vhd
0,0 → 1,142
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- August, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS192N: Up/down decade counter --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_192 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 100 ns;
Finish : time := 15 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_192 is
signal JC, BC : unsigned(6 downto 0); -- Test stimuli
signal D, E : std_logic_vector(5 downto 0); -- Expected & actual results
signal P : unsigned(3 downto 0);
signal CLK, CPU, CPD : std_logic;
signal MR, RS, PL : std_logic;
signal Q, QB : unsigned(3 downto 0);
signal T1, T2, T3, T4, T5,
T6, T7, T8, T9, T10,
T11, T12 : std_logic;
signal CX, CL, PR, CC : std_logic_vector(3 downto 0);
 
begin
P <= JC(6 downto 3);
MR <= not RS; -- Active high
process(CLK) is
begin
if rising_edge(CLK) then
PL <= nand_reduce(std_logic_vector(BC(4 downto 0))) after 10 ns, '1' after 80 ns;
CPU <= BC(5);
CPD <= not BC(5);
elsif falling_edge(CLK) then -- NB Inactive clock should be high
CPU <= '1';
CPD <= '1';
end if;
end process;
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
T1 <= not (CPD);
T2 <= not (CPU);
T3 <= not (QB(1) and QB(2) and QB(3));
T4 <= T1 and QB(0) and T3;
T5 <= Q(0) and QB(3) and T2;
T6 <= T3 and T1 and QB(0) and QB(1);
T7 <= Q(0) and Q(1) and T2;
T8 <= T1 and QB(0) and QB(1) and QB(2);
T9 <= Q(0) and Q(3) and T2;
T10 <= Q(0) and Q(1) and Q(2) and T2;
T11 <= not (MR);
T12 <= not (PL);
CX(0) <= not (T1 or T2);
CX(1) <= not (T4 or T5);
CX(2) <= not (T6 or T7);
CX(3) <= not (T8 or T9 or T10);
G: for i in CX'range generate
begin
PR(i) <= not (P(i) and T12 and T11);
CC(i) <= not (PR(i) and T12);
CL(i) <= (T11 and CC(i));
process(CX, PR, CL) is -- A 'T' flipflop
begin
if CL(i) = '0' then
Q(i) <= '0';
elsif PR(i) = '0' then
Q(i) <= '1';
elsif rising_edge(CX(i)) then
Q(i) <= not Q(i);
end if;
end process;
end generate;
QB <= not Q;
D(3 downto 0) <= std_logic_vector(Q);
D(4) <= not (Q(0) and Q(3) and T2);
D(5) <= not (T1 and QB(0) and QB(1) and QB(2) and QB(3));
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS192N
port map(
X_1 => P(1), -- P1
X_2 => E(1), -- Q1
X_3 => E(0), -- Q0
X_4 => CPD, -- CPD
X_5 => CPU, -- CPU
X_6 => E(2), -- Q2
X_7 => E(3), -- Q3
X_8 => open, -- GND
X_9 => P(3), -- P3
X_10 => P(2), -- P2
X_11 => PL, -- PL\
X_12 => E(4), -- TCU\
X_13 => E(5), -- TCD\
X_14 => MR, -- MR
X_15 => P(0), -- P0
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_193.vhd
0,0 → 1,139
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- August, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS193N: Up/down binary counter --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_193 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 100 ns;
Finish : time := 15 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_193 is
signal JC, BC : unsigned(6 downto 0); -- Test stimuli
signal D, E : std_logic_vector(5 downto 0); -- Expected & actual results
signal P : unsigned(3 downto 0);
signal CLK, CPU, CPD : std_logic;
signal MR, RS, PL : std_logic;
signal Q, QB : unsigned(3 downto 0);
signal CX, CL, PR, CC : std_logic_vector(3 downto 0);
signal T1, T2, T3, T4, T5,
T6, T7, T8, T9, T10 : std_logic;
 
begin
P <= JC(6 downto 3);
MR <= not RS; -- Active high
process(CLK) is
begin
if rising_edge(CLK) then
PL <= nand_reduce(std_logic_vector(BC(4 downto 0))) after 10 ns, '1' after 80 ns;
CPU <= BC(5);
CPD <= not BC(5);
elsif falling_edge(CLK) then -- NB Inactive clock should be high
CPU <= '1';
CPD <= '1';
end if;
end process;
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
T1 <= not (CPD);
T2 <= not (CPU);
T3 <= T1 and QB(0);
T4 <= Q(0) and T2;
T5 <= T1 and QB(0) and QB(1);
T6 <= Q(0) and Q(1) and T2;
T7 <= T1 and QB(0) and QB(1) and QB(2);
T8 <= Q(0) and Q(1) and Q(2) and T2;
T9 <= not (MR);
T10 <= not (PL);
CX(0) <= not (T1 or T2);
CX(1) <= not (T3 or T4);
CX(2) <= not (T5 or T6);
CX(3) <= not (T7 or T8);
G: for i in CX'range generate
begin
PR(i) <= not (P(i) and T10 and T9);
CC(i) <= not (PR(i) and T10);
CL(i) <= (T9 and CC(i));
process(CX, PR, CL) is -- A 'T' flipflop
begin
if CL(i) = '0' then
Q(i) <= '0';
elsif PR(i) = '0' then
Q(i) <= '1';
elsif rising_edge(CX(i)) then
Q(i) <= not Q(i);
end if;
end process;
end generate;
QB <= not Q;
D(3 downto 0) <= std_logic_vector(Q);
D(4) <= not (Q(0) and Q(1) and Q(2) and Q(3) and T2);
D(5) <= not (T1 and QB(0) and QB(1) and QB(2) and QB(3));
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS193N
port map(
X_1 => P(1), -- P1
X_2 => E(1), -- Q1
X_3 => E(0), -- Q0
X_4 => CPD, -- CPD
X_5 => CPU, -- CPU
X_6 => E(2), -- Q2
X_7 => E(3), -- Q3
X_8 => open, -- GND
X_9 => P(3), -- P3
X_10 => P(2), -- P2
X_11 => PL, -- PL\
X_12 => E(4), -- TCU\
X_13 => E(5), -- TCD\
X_14 => MR, -- MR
X_15 => P(0), -- P0
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_194.vhd
0,0 → 1,108
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- August, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS194N: 4-bit bidirectional shift register --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_194 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 100 ns;
Finish : time := 15 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_194 is
signal JC, BC : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
signal P : unsigned(3 downto 0);
signal CLK, RS : std_logic;
signal S : std_logic_vector(1 downto 0);
signal DR, DL : std_logic;
-- NB Q3 is considered the rightmost bit (see data sheet)
signal M, R, Q : unsigned(0 to 3);
begin
(DR, DL, P) <= BC(5 downto 0);
S(0) <= and_reduce(std_logic_vector(JC(4 downto 0)));
S(1) <= nor_reduce(std_logic_vector(JC(4 downto 0)));
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
M <= P(3) & P(2) & P(1) & P(0);
with S select R <=
M when "11", -- Load
Q(1 to 3) & DL when "10", -- Left
DR & Q(0 to 2) when "01", -- Right
Q when others; -- Hold
process(CLK, RS) is
begin
if RS = '0' then
Q <= (others => '0');
elsif rising_edge(CLK) then
Q <= R;
end if;
end process;
(D(3), D(2), D(1), D(0)) <= Q;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS194N
port map(
X_1 => RS, -- MR\
X_2 => DR, -- DSR
X_3 => P(0), -- P0
X_4 => P(1), -- P1
X_5 => P(2), -- P2
X_6 => P(3), -- P3
X_7 => DL, -- DSL
X_8 => open, -- GND
X_9 => S(0), -- S(0)
X_10 => S(1), -- S(1)
X_11 => CLK, -- CP
X_12 => E(3), -- Q3
X_13 => E(2), -- Q2
X_14 => E(1), -- Q1
X_15 => E(0), -- Q0
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_195.vhd
0,0 → 1,130
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS195N: Universal 4-bit shift register --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_195 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 100 ns;
Finish : time := 15 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_195 is
signal JC, BC : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(4 downto 0); -- Expected & actual results
signal P : unsigned(3 downto 0);
signal CLK, RS : std_logic;
signal J, KB, PE : std_logic;
signal L1 : std_logic;
signal L2 : std_logic;
signal L3 : std_logic;
signal L4 : std_logic;
signal L5 : std_logic;
signal L6 : std_logic;
signal L7 : std_logic;
signal L8 : std_logic;
signal L9 : std_logic;
signal L10 : std_logic;
signal L11 : std_logic;
signal L12 : std_logic;
signal L13 : std_logic;
signal L14 : std_logic;
signal N1 : std_logic;
signal N2 : std_logic;
signal N3 : std_logic;
signal N4 : std_logic;
signal N5 : std_logic;
signal N6 : std_logic;
begin
(J, KB, P) <= BC(5 downto 0);
PE <= and_reduce(std_logic_vector(JC(5 downto 0)));
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
N1 <= not (PE);
N2 <= PE;
L1 <= not (N3);
L2 <= L1 and J and N2;
L3 <= N2 and KB and N3;
L4 <= N1 and P(0);
L5 <= L2 or L3 or L4;
L6 <= N3 and N2;
L7 <= N1 and P(1);
L8 <= L6 or L7;
L9 <= N4 and N2;
L10 <= N1 and P(2);
L11 <= L9 or L10;
L12 <= N5 and N2;
L13 <= N1 and P(3);
L14 <= L12 or L13;
D38 : TTL_FF port map(q=>N3, d=>L5, clk=>CLK, cl=>RS);
D39 : TTL_FF port map(q=>N4, d=>L8, clk=>CLK, cl=>RS);
D40 : TTL_FF port map(q=>N5, d=>L11, clk=>CLK, cl=>RS);
D41 : TTL_FF port map(q=>N6, d=>L14, clk=>CLK, cl=>RS);
D(0) <= N3;
D(1) <= N4;
D(2) <= N5;
D(3) <= N6;
D(4) <= not (N6);
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS195N
port map(
X_1 => RS, -- MR\
X_2 => J, -- J
X_3 => KB, -- K\
X_4 => P(0), -- P0
X_5 => P(1), -- P1
X_6 => P(2), -- P2
X_7 => P(3), -- P3
X_8 => open, -- GND
X_9 => PE, -- PE\
X_10 => CLK, -- CP
X_11 => E(4), -- Q3\
X_12 => E(3), -- Q3
X_13 => E(2), -- Q2
X_14 => E(1), -- Q1
X_15 => E(0), -- Q0
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_196.vhd
0,0 → 1,130
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- August, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS196N: Presettable decade counter --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_196 is -- Top-level bench
generic(
StimClk : std_logic := '0';
CheckClk : std_logic := '1';
Period : time := 120 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_196 is
signal RS, PL : std_logic;
signal CLK, C0, C1 : std_logic;
signal J, B : unsigned(3 downto 0); -- Test stimuli
signal D, E, R : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
C0 <= CLK;
R <= std_logic_vector(J);
C1 <= D(0);
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate irregular LD signal
-----------------------------------------------------------------------
process(RS, CLK) is
variable N : natural;
begin
if RS = '0' then
N := 1;
PL <= '1';
elsif rising_edge(CLK) then
if N >= 23 then
N := 1;
PL <= '0', '1' after 30 ns;
else
N := N + 1;
end if;
end if;
end process;
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(C0, PL, RS, R) is
variable Q0 : std_logic;
begin
if RS = '0' then
Q0 := '0';
elsif PL = '0' then
Q0 := R(0);
elsif falling_edge(C0) then
Q0 := not Q0;
end if;
D(0) <= Q0;
end process;
process(C1, PL, RS, R) is
variable Q31 : unsigned(2 downto 0);
begin
if RS = '0' then
Q31 := (others => '0');
elsif PL = '0' then
Q31 := unsigned(R(3 downto 1));
elsif falling_edge(C1) then
case TTL_to_integer(Q31) is
when 4 to 7 => Q31 := Q31 - 4;
when others => Q31 := Q31 + 1;
end case;
end if;
D(3 downto 1) <= std_logic_vector(Q31);
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS196N
port map(
X_1 => PL, -- PL\
X_2 => E(2), -- Q2
X_3 => R(2), -- P2
X_4 => R(0), -- P0
X_5 => E(0), -- Q0
X_6 => C1, -- CP1\
X_7 => open, -- GND
X_8 => C0, -- CP0\
X_9 => E(1), -- Q1
X_10 => R(1), -- P1
X_11 => R(3), -- P3
X_12 => E(3), -- Q3
X_13 => RS, -- MR\
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_197.vhd
0,0 → 1,127
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- August, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS197N: Presettable binary counter --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_197 is -- Top-level bench
generic(
StimClk : std_logic := '0';
CheckClk : std_logic := '1';
Period : time := 160 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_197 is
signal RS, PL : std_logic;
signal CLK, C0, C1 : std_logic;
signal J, B : unsigned(3 downto 0); -- Test stimuli
signal D, E, R : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
C0 <= CLK;
R <= std_logic_vector(J);
C1 <= D(0);
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate irregular LD signal
-----------------------------------------------------------------------
process(RS, CLK) is
variable N : natural;
begin
if RS = '0' then
N := 1;
PL <= '1';
elsif rising_edge(CLK) then
if N >= 23 then
N := 1;
PL <= '0', '1' after 30 ns;
else
N := N + 1;
end if;
end if;
end process;
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(C0, PL, RS, R) is
variable Q0 : std_logic;
begin
if RS = '0' then
Q0 := '0';
elsif PL = '0' then
Q0 := R(0);
elsif falling_edge(C0) then
Q0 := not Q0;
end if;
D(0) <= Q0;
end process;
process(C1, PL, RS, R) is
variable Q31 : unsigned(2 downto 0);
begin
if RS = '0' then
Q31 := (others => '0');
elsif PL = '0' then
Q31 := unsigned(R(3 downto 1));
elsif falling_edge(C1) then
Q31 := Q31 + 1;
end if;
D(3 downto 1) <= std_logic_vector(Q31);
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS197N
port map(
X_1 => PL, -- PL\
X_2 => E(2), -- Q2
X_3 => R(2), -- P2
X_4 => R(0), -- P0
X_5 => E(0), -- Q0
X_6 => C1, -- CP1\
X_7 => open, -- GND
X_8 => C0, -- CP0\
X_9 => E(1), -- Q1
X_10 => R(1), -- P1
X_11 => R(3), -- P3
X_12 => E(3), -- Q3
X_13 => RS, -- MR\
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_198.vhd
0,0 → 1,130
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS198N: 8-bit right/left shift register --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_198 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 50 ns;
Finish : time := 50 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_198 is
signal CLK, RS : std_logic;
signal JC, BC : unsigned(9 downto 0); -- Test stimuli
signal D, E : std_logic_vector(0 to 7); -- Expected & actual results
signal S : std_logic_vector(1 downto 0);
signal P, Q : std_logic_vector(0 to 7);
signal DSR, DSL : std_logic;
signal L1 : std_logic;
signal L2 : std_logic;
signal L3 : std_logic;
signal L4 : std_logic;
signal N0 : std_logic;
signal T1, T2, T3, T4 : std_logic_vector(0 to 7);
 
 
begin
P <= std_logic_vector(JC(7 downto 0));
DSR <= JC(8);
DSL <= JC(9);
S <= std_logic_vector(BC(5 downto 4));
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
L1 <= not S(1);
L2 <= not S(0);
L3 <= L1 and L2;
L4 <= not(L1 or L2);
N0 <= CLK or L3;
T1(0) <= DSR and L1;
T3(7) <= L2 and DSL;
G1: for i in 1 to 7 generate
begin
T1(i) <= (Q(i-1) and L1);
end generate;
G2: for i in 0 to 6 generate
begin
T3(i) <= L2 and Q(i+1);
end generate;
G3: for i in 0 to 7 generate
begin
T2(i) <= L4 and P(i);
T4(i) <= T1(i) or T2(i) or T3(i);
DQ : TTL_FF port map(q=>Q(i), d=>T4(i), clk=>N0, cl=>RS);
end generate;
D <= Q;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS198N
port map(
X_1 => S(0), -- S(0)
X_2 => DSR, -- DSR
X_3 => P(0), -- P0
X_4 => E(0), -- Q0
X_5 => P(1), -- P1
X_6 => E(1), -- Q1
X_7 => P(2), -- P2
X_8 => E(2), -- Q2
X_9 => P(3), -- P3
X_10 => E(3), -- Q3
X_11 => CLK, -- CP
X_12 => open, -- GND
X_13 => RS, -- MR\
X_14 => E(4), -- Q4
X_15 => P(4), -- P4
X_16 => E(5), -- Q5
X_17 => P(5), -- P5
X_18 => E(6), -- Q6
X_19 => P(6), -- P6
X_20 => E(7), -- Q7
X_21 => P(7), -- P7
X_22 => DSL, -- DSL
X_23 => S(1), -- S(1)
X_24 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_199.vhd
0,0 → 1,119
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- August, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS199N: 8-bit parallel IO shift register --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_199 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 50 ns;
Finish : time := 50 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_199 is
signal CLK, RS : std_logic;
signal JC, BC : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(0 to 7); -- Expected & actual results
signal P, Q : std_logic_vector(0 to 7);
signal J, KB, CP1, CP2, PE, CP, I : std_logic;
signal JKB : std_logic_vector(1 downto 0);
 
begin
P <= std_logic_vector(BC(7 downto 0)) after 1 ns; -- Be sure CP evaluates first
(J, KB, PE) <= JC(2 downto 0) after 1 ns;
CP1 <= CLK;
CP2 <= '1', '0' after 288 ns;
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
CP <= CP1 or CP2;
JKB <= J & KB;
with JKB select I <=
'0' when "00",
not Q(0) when "10",
'1' when "11",
Q(0) when others;
process(RS, CP) is
begin
if RS = '0' then
Q <= (others => '0');
elsif rising_edge(CP) then
if PE <= '0' then
Q <= P;
else
Q <= I & Q(0 to 6);
end if;
end if;
end process;
D <= (Q(0), Q(1), Q(2), Q(3), Q(4), Q(5), Q(6), Q(7));
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS199N
port map(
X_1 => KB, -- in KB\
X_2 => J, -- in J
X_3 => P(0), -- in P0
X_4 => E(0), -- out Q0
X_5 => P(1), -- in P1
X_6 => E(1), -- out Q1
X_7 => P(2), -- in P2
X_8 => E(2), -- out Q2
X_9 => P(3), -- in P3
X_10 => E(3), -- out Q3
X_11 => CP1, -- in CP1
X_12 => open, -- inout GND
X_13 => CP2, -- in CP2
X_14 => RS, -- in MR\
X_15 => E(4), -- out Q4
X_16 => P(4), -- in P4
X_17 => E(5), -- out Q5
X_18 => P(5), -- in P5
X_19 => E(6), -- out Q6
X_20 => P(6), -- in P6
X_21 => E(7), -- out Q7
X_22 => P(7), -- in P7
X_23 => PE, -- in PE\
X_24 => open -- inout Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_20.vhd
0,0 → 1,77
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS20N: Dual 4-input NAND gate (Pinout A) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_20 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_20 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(1 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= not( J(0) and J(1) and J(2) and J(3) );
D(1) <= not( J(4) and J(5) and J(6) and J(7) );
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS20N
port map(
X_1 => J(0), -- 1A
X_2 => J(1), -- 1B
--
X_4 => J(2), -- 1C
X_5 => J(3), -- 1D
X_6 => E(0), -- 1Y\
X_7 => open, -- GND
X_8 => E(1), -- 2Y\
X_9 => J(4), -- 2D
X_10 => J(5), -- 2C
--
X_12 => J(6), -- 2B
X_13 => J(7), -- 2A
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_21.vhd
0,0 → 1,77
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS21N: Dual 4-input AND gate (Pinout A) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_21 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_21 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(1 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= J(0) and J(1) and J(2) and J(3);
D(1) <= J(4) and J(5) and J(6) and J(7);
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS21N
port map(
X_1 => J(0), -- 1A
X_2 => J(1), -- 1B
--
X_4 => J(2), -- 1C
X_5 => J(3), -- 1D
X_6 => E(0), -- 1Y\
X_7 => open, -- GND
X_8 => E(1), -- 2Y\
X_9 => J(4), -- 2D
X_10 => J(5), -- 2C
--
X_12 => J(6), -- 2B
X_13 => J(7), -- 2A
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_22.vhd
0,0 → 1,77
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS22N: Dual 4-input NAND gate (o/c) (Pinout A) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_22 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_22 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(1 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= TTL_OC( not( J(0) and J(1) and J(2) and J(3) ) );
D(1) <= TTL_OC( not( J(4) and J(5) and J(6) and J(7) ) );
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS22N
port map(
X_1 => J(0), -- 1A
X_2 => J(1), -- 1B
--
X_4 => J(2), -- 1C
X_5 => J(3), -- 1D
X_6 => E(0), -- 1Y\
X_7 => open, -- GND
X_8 => E(1), -- 2Y\
X_9 => J(4), -- 2D
X_10 => J(5), -- 2C
--
X_12 => J(6), -- 2B
X_13 => J(7), -- 2A
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_221.vhd
0,0 → 1,96
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- August, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS221N: Dual monostable multivibrator --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_221 is -- Top-level bench
end entity;
 
architecture Test of Testbench_221 is
signal S, Q : std_logic_vector(1 downto 0); -- Triggers & outputs
signal W, N : std_logic_vector(1 downto 0); -- Wide & narrow windows
begin
S(0) <= '0',
'1' after 250 ns, '0' after 350 ns, -- Trigger, let it time out
'1' after 15000 ns, '0' after 15100 ns, -- Trigger again
'1' after 16000 ns, '0' after 16100 ns; -- This should retrigger
S(1) <= '0',
'1' after 250 ns, '0' after 350 ns, -- Trigger, let it time out
'1' after 15000 ns, '0' after 15100 ns, -- Trigger again
'1' after 16000 ns, '0' after 16100 ns; -- This should retrigger
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
W(0) <= '0',
'1' after 220 ns, '0' after 9330 ns,
'1' after 15020 ns, '0' after 25080 ns;
N(0) <= '0',
'1' after 350 ns, '0' after 9250 ns,
'1' after 15090 ns, '0' after 25000 ns;
 
W(1) <= '0',
'1' after 220 ns, '0' after 10330 ns,
'1' after 15020 ns, '0' after 26080 ns;
N(1) <= '0',
'1' after 350 ns, '0' after 10250 ns,
'1' after 15090 ns, '0' after 26000 ns;
 
-----------------------------------------------------------------------
-- Validate the results
-----------------------------------------------------------------------
G: for i in Q'range generate
begin
process(W(i), N(i), Q(i)) is
begin
if (rising_edge(W(i)) and Q(i) = '1') or -- W must rise before Q
(rising_edge(N(i)) and Q(i) = '0') or -- Q must rise before N
(falling_edge(N(i)) and Q(i) = '0') or -- N must fall before Q
(falling_edge(W(i)) and Q(i) = '1') then -- Q must fall before W
assert false
report "Bad monostable pulse"
severity warning;
end if;
end process;
end generate;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS221N
generic map(
W1 => 10 us, -- Pulse widths
W2 => 9 us
)
port map(
X_1 => '0', -- A1\
X_2 => S(0), -- B1
X_3 => '1', -- CD1\
X_4 => open, -- Q1\
X_5 => Q(1), -- Q2
X_6 => open, -- Cx2
X_7 => open, -- Rx2Cx2
X_8 => open, -- GND
X_9 => '0', -- A2\
X_10 => S(1), -- B2
X_11 => '1', -- CD2\
X_12 => open, -- Q2\
X_13 => Q(0), -- Q1
X_14 => open, -- Cx1
X_15 => open, -- Rx1Cx1
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_240.vhd
0,0 → 1,95
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS240N: Octal buffer/line driver (3-state ops) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_240 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_240 is
signal RS : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(9 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
signal OEA, OEB : std_logic;
signal IA, IB : std_logic_vector(3 downto 0);
begin
OEA <= JC(9);
OEB <= JC(8);
IA <= std_logic_vector(BC(4 downto 1));
IB <= std_logic_vector(BC(3 downto 0));
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
GG: for j in IA'range generate
begin
D(j) <= not IA(j) when OEA = '0' else 'Z';
D(j+4) <= not IB(j) when OEB = '0' else 'Z';
end generate;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS240N
port map(
X_1 => OEA, -- OEA\
X_2 => IA(0), -- IA0
X_3 => E(4), -- YB0\
X_4 => IA(1), -- IA1
X_5 => E(5), -- YB1\
X_6 => IA(2), -- IA2
X_7 => E(6), -- YB2\
X_8 => IA(3), -- IA3
X_9 => E(7), -- YB3\
X_10 => open, -- GND
X_11 => IB(3), -- IB3
X_12 => E(3), -- YA3\
X_13 => IB(2), -- IB2
X_14 => E(2), -- YA2\
X_15 => IB(1), -- IB1
X_16 => E(1), -- YA1\
X_17 => IB(0), -- IB0
X_18 => E(0), -- YA0\
X_19 => OEB, -- OEB\
X_20 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_241.vhd
0,0 → 1,95
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS241N: Octal buffer/line driver (3-state ops) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_241 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_241 is
signal RS : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(9 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
signal OEA, OEB : std_logic;
signal IA, IB : std_logic_vector(3 downto 0);
begin
OEA <= JC(9);
OEB <= JC(8);
IA <= std_logic_vector(BC(4 downto 1));
IB <= std_logic_vector(BC(3 downto 0));
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
GG: for j in IA'range generate
begin
D(j) <= IA(j) when OEA = '0' else 'Z';
D(j+4) <= IB(j) when OEB = '1' else 'Z';
end generate;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS241N
port map(
X_1 => OEA, -- OEA\
X_2 => IA(0), -- IA0
X_3 => E(4), -- YB0
X_4 => IA(1), -- IA1
X_5 => E(5), -- YB1
X_6 => IA(2), -- IA2
X_7 => E(6), -- YB2
X_8 => IA(3), -- IA3
X_9 => E(7), -- YB3
X_10 => open, -- GND
X_11 => IB(3), -- IB3
X_12 => E(3), -- YA3
X_13 => IB(2), -- IB2
X_14 => E(2), -- YA2
X_15 => IB(1), -- IB1
X_16 => E(1), -- YA1
X_17 => IB(0), -- IB0
X_18 => E(0), -- YA0
X_19 => OEB, -- OEB
X_20 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_242.vhd
0,0 → 1,95
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS242N: Quad bus transceiver (3-state outputs) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_242 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_242 is
signal RS : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(8 downto 1); -- Expected & actual results
signal A2B, B2A : std_logic;
signal IA : std_logic_vector(4 downto 1);
begin
IA <= std_logic_vector(JC(3 downto 0));
A2B <= BC(0);
B2A <= BC(0);
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-- Special version for bidirectional circuits
-----------------------------------------------------------------------
GG: process(all) is
begin
for j in IA'range loop
D(j) <= IA(j) xnor A2B;
D(j+4) <= IA(j) xor B2A;
E(j) <= not IA(j) when A2B = '0' else 'Z';
E(j+4) <= not IA(j) when B2A = '1' else 'Z';
end loop;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS242N
port map(
X_1 => A2B, -- A2B\
--
X_3 => E(1), -- A1
X_4 => E(2), -- A2
X_5 => E(3), -- A3
X_6 => E(4), -- A4
X_7 => open, -- GND
X_8 => E(8), -- B4\
X_9 => E(7), -- B3\
X_10 => E(6), -- B2\
X_11 => E(5), -- B1\
--
X_13 => B2A, -- B2A
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_243.vhd
0,0 → 1,95
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS243N: Quad bus transceiver (3-state outputs) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_243 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_243 is
signal RS : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(8 downto 1); -- Expected & actual results
signal A2B, B2A : std_logic;
signal IA : std_logic_vector(4 downto 1);
begin
IA <= std_logic_vector(JC(3 downto 0));
A2B <= BC(0);
B2A <= BC(0);
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-- Special version for bidirectional circuits
-----------------------------------------------------------------------
GG: process(all) is
begin
for j in IA'range loop
D(j) <= IA(j);
D(j+4) <= IA(j);
E(j) <= IA(j) when A2B = '0' else 'Z';
E(j+4) <= IA(j) when B2A = '1' else 'Z';
end loop;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS243N
port map(
X_1 => A2B, -- A2B\
--
X_3 => E(1), -- A1
X_4 => E(2), -- A2
X_5 => E(3), -- A3
X_6 => E(4), -- A4
X_7 => open, -- GND
X_8 => E(8), -- B4\
X_9 => E(7), -- B3\
X_10 => E(6), -- B2\
X_11 => E(5), -- B1\
--
X_13 => B2A, -- B2A
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_244.vhd
0,0 → 1,95
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS244N: Octal buffer/line driver (3-state ops) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_244 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_244 is
signal RS : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(9 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
signal OEA, OEB : std_logic;
signal IA, IB : std_logic_vector(3 downto 0);
begin
OEA <= JC(9);
OEB <= JC(8);
IA <= std_logic_vector(BC(4 downto 1));
IB <= std_logic_vector(BC(3 downto 0));
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
GG: for j in IA'range generate
begin
D(j) <= IA(j) when OEA = '0' else 'Z';
D(j+4) <= IB(j) when OEB = '0' else 'Z';
end generate;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS244N
port map(
X_1 => OEA, -- OEA\
X_2 => IA(0), -- IA0
X_3 => E(4), -- YB0
X_4 => IA(1), -- IA1
X_5 => E(5), -- YB1
X_6 => IA(2), -- IA2
X_7 => E(6), -- YB2
X_8 => IA(3), -- IA3
X_9 => E(7), -- YB3
X_10 => open, -- GND
X_11 => IB(3), -- IB3
X_12 => E(3), -- YA3
X_13 => IB(2), -- IB2
X_14 => E(2), -- YA2
X_15 => IB(1), -- IB1
X_16 => E(1), -- YA1
X_17 => IB(0), -- IB0
X_18 => E(0), -- YA0
X_19 => OEB, -- OEB\
X_20 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_245.vhd
0,0 → 1,101
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS245N: Octal bus transceiver (3-state outputs) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_245 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_245 is
signal RS : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(15 downto 0); -- Expected & actual results
signal A2B, ENB : std_logic;
signal IA : std_logic_vector(7 downto 0);
begin
IA <= std_logic_vector(JC);
A2B <= BC(0);
ENB <= BC(1);
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-- Special version for bidirectional circuits
-----------------------------------------------------------------------
GG: process(all) is
begin
for j in IA'range loop
D(j) <= IA(j) when A2B = '0' else 'Z';
D(j+8) <= IA(j) when A2B = '1' else 'Z';
E(j) <= IA(j) when A2B = '0' else 'Z';
E(j+8) <= IA(j) when A2B = '1' else 'Z';
end loop;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS245N
port map(
X_1 => A2B, -- A2B
X_2 => E(0), -- A0
X_3 => E(1), -- A1
X_4 => E(2), -- A2
X_5 => E(3), -- A3
X_6 => E(4), -- A4
X_7 => E(5), -- A5
X_8 => E(6), -- A6
X_9 => E(7), -- A7
X_10 => open, -- GND
X_11 => E(15), -- B7
X_12 => E(14), -- B6
X_13 => E(13), -- B5
X_14 => E(12), -- B4
X_15 => E(11), -- B3
X_16 => E(10), -- B2
X_17 => E(9), -- B1
X_18 => E(8), -- B0
X_19 => ENB, -- E\
X_20 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_251.vhd
0,0 → 1,84
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS251N: 8-input multiplexer (3-state outputs) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_251 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 75 ns;
Finish : time := 200 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_251 is
signal J, B : unsigned(11 downto 0); -- Test stimuli
signal D, E : std_logic_vector(1 downto 0); -- Expected & actual results
signal A : unsigned(2 downto 0);
signal chn : natural range 7 downto 0;
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
A <= B(3 downto 1);
chn <= TTL_to_integer(A);
D(1) <= not B(4+chn) when B(0) = '0' else 'Z';
D(0) <= notz(D(1));
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS251N
port map(
X_1 => B(7), -- I3
X_2 => B(6), -- I2
X_3 => B(5), -- I1
X_4 => B(4), -- I0
X_5 => E(0), -- Z
X_6 => E(1), -- Z\
X_7 => B(0), -- E\
X_8 => open, -- GND
X_9 => B(3), -- S2
X_10 => B(2), -- S1
X_11 => B(1), -- S0
X_12 => B(11), -- I7
X_13 => B(10), -- I6
X_14 => B(9), -- I5
X_15 => B(8), -- I4
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_253.vhd
0,0 → 1,85
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS253N: Dual 4-input mux. (common selects) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_253 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 50 ns;
Finish : time := 200 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_253 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(1 downto 0); -- Expected & actual results
signal A : unsigned(1 downto 0);
signal chn : natural range 3 downto 0;
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
A <= B(3 downto 2);
chn <= TTL_to_integer(A);
D(0) <= B(7-chn) when B(0) = '0' else 'Z';
D(1) <= B(chn+4) when B(1) = '0' else 'Z';
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS253N
port map(
X_1 => B(0), -- EA\
X_2 => B(3), -- S1
X_3 => B(4), -- I3A
X_4 => B(5), -- I2A
X_5 => B(6), -- I1A
X_6 => B(7), -- I0A
X_7 => E(0), -- ZA
X_8 => open, -- GND
X_9 => E(1), -- ZB
X_10 => B(4), -- I0B
X_11 => B(5), -- I1B
X_12 => B(6), -- I2B
X_13 => B(7), -- I3B
X_14 => B(2), -- S0
X_15 => B(1), -- EB\
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_256.vhd
0,0 → 1,98
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74256N: Dual 4-bit addressable latch --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_256 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 150 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_256 is
signal RS : std_logic;
signal CLK : std_logic;
signal EN : std_logic;
signal JC, BC : unsigned(4 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
process(all) is
begin
if falling_edge(BC(0)) then
EN <= '0' after 20 ns, '1' after 100 ns;
end if;
end process;
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(all) is
variable N : natural;
begin
N := to_integer(unsigned(BC(2 downto 1)));
if RS = '0' then
D <= (others => '0');
elsif EN = '0' then
D(N) <= BC(3);
D(4+N) <= BC(4);
end if;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS256N
port map(
X_1 => BC(1), -- A0
X_2 => BC(2), -- A1
X_3 => BC(3), -- DA
X_4 => E(0), -- O0A
X_5 => E(1), -- O1A
X_6 => E(2), -- O2A
X_7 => E(3), -- O3A
X_8 => open, -- GND
X_9 => E(4), -- O0B
X_10 => E(5), -- O1B
X_11 => E(6), -- O2B
X_12 => E(7), -- O3B
X_13 => BC(4), -- DB
X_14 => EN, -- E\
X_15 => RS, -- CL\
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_257.vhd
0,0 → 1,88
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS257N: Quad 2-input mux. (3-state outputs) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_257 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_257 is
signal J, B : unsigned(9 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(B) is
begin
if B(0) = '1' then
D <= (others => 'Z');
elsif B(1) = '0' then
D <= (B(8), B(6), B(4), B(2));
else
D <= (B(9), B(7), B(5), B(3));
end if;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS257N
port map(
X_1 => B(1), -- S
X_2 => B(2), -- I0A
X_3 => B(3), -- I1A
X_4 => E(0), -- ZA
X_5 => B(4), -- I0B
X_6 => B(5), -- I1B
X_7 => E(1), -- ZB
X_8 => open, -- GND
X_9 => E(3), -- ZD
X_10 => B(9), -- I1D
X_11 => B(8), -- I0D
X_12 => E(2), -- ZC
X_13 => B(7), -- I1C
X_14 => B(6), -- I0C
X_15 => B(0), -- E\
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_258.vhd
0,0 → 1,96
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS258N: Quad 2-input mux (3-state inverting) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_258 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_258 is
signal J, B : unsigned(9 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(B) is
variable Z : std_logic_vector(3 downto 0);
begin
if B(0) = '1' then
Z := (others => 'Z');
elsif B(1) = '0' then
Z := (B(8), B(6), B(4), B(2));
else
Z := (B(9), B(7), B(5), B(3));
end if;
for i in Z'range loop
if Z(i) = 'Z' then
D(i) <= 'Z';
else
D(i) <= not Z(i);
end if;
end loop;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS258N
port map(
X_1 => B(1), -- S
X_2 => B(2), -- I0A
X_3 => B(3), -- I1A
X_4 => E(0), -- ZA
X_5 => B(4), -- I0B
X_6 => B(5), -- I1B
X_7 => E(1), -- ZB
X_8 => open, -- GND
X_9 => E(3), -- ZD
X_10 => B(9), -- I1D
X_11 => B(8), -- I0D
X_12 => E(2), -- ZC
X_13 => B(7), -- I1C
X_14 => B(6), -- I0C
X_15 => B(0), -- E\
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_259.vhd
0,0 → 1,97
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74259N: 8-bit addressable latch --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_259 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 150 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_259 is
signal RS : std_logic;
signal CLK : std_logic;
signal EN : std_logic;
signal JC, BC : unsigned(4 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
process(all) is
begin
if falling_edge(BC(0)) then
EN <= '0' after 20 ns, '1' after 100 ns;
end if;
end process;
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(all) is
variable N : natural;
begin
N := to_integer(unsigned(BC(3 downto 1)));
if RS = '0' then
D <= (others => '0');
elsif EN = '0' then
D(N) <= BC(4);
end if;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS259N
port map(
X_1 => BC(1), -- A0
X_2 => BC(2), -- A1
X_3 => BC(3), -- A2
X_4 => E(0), -- Q0
X_5 => E(1), -- Q1
X_6 => E(2), -- Q2
X_7 => E(3), -- Q3
X_8 => open, -- GND
X_9 => E(4), -- Q4
X_10 => E(5), -- Q5
X_11 => E(6), -- Q6
X_12 => E(7), -- Q7
X_13 => BC(4), -- D
X_14 => EN, -- E\
X_15 => RS, -- CL\
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_26.vhd
0,0 → 1,79
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS26N: Quad 2-input NAND buffer (open collector)--
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_26 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_26 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= TTL_OC( not(J(0) and J(1)) );
D(1) <= TTL_OC( not(J(2) and J(3)) );
D(2) <= TTL_OC( not(J(4) and J(5)) );
D(3) <= TTL_OC( not(J(6) and J(7)) );
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS26N
port map(
X_1 => J(0), -- 1A
X_2 => J(1), -- 1B
X_3 => E(0), -- 1Y\
X_4 => J(2), -- 2A
X_5 => J(3), -- 2B
X_6 => E(1), -- 2Y\
X_7 => open, -- GND
X_8 => E(2), -- 3Y\
X_9 => J(4), -- 3B
X_10 => J(5), -- 3A
X_11 => E(3), -- 4Y\
X_12 => J(6), -- 4B
X_13 => J(7), -- 4A
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_260.vhd
0,0 → 1,77
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS260N: Dual 5-input NOR gate --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_260 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_260 is
signal J, B : unsigned(9 downto 0); -- Test stimuli
signal D, E : std_logic_vector(1 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= not( J(0) or J(1) or J(2) or J(3) or J(4) );
D(1) <= not( J(5) or J(6) or J(7) or J(8) or J(9) );
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS260N
port map(
X_1 => J(0), -- I1A
X_2 => J(1), -- I2A
X_3 => J(2), -- I3A
X_4 => J(5), -- I1B
X_5 => E(0), -- ZA\
X_6 => E(1), -- ZB\
X_7 => open, -- GND
X_8 => J(6), -- I2B
X_9 => J(7), -- I3B
X_10 => J(8), -- I4B
X_11 => J(9), -- I5B
X_12 => J(3), -- I4A
X_13 => J(4), -- I5A
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_266.vhd
0,0 → 1,79
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS266N: Quad 2-input XNOR gate (open collector) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_266 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_266 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= TTL_OC( not ( J(0) xor J(1) ) );
D(1) <= TTL_OC( not ( J(2) xor J(3) ) );
D(2) <= TTL_OC( not ( J(4) xor J(5) ) );
D(3) <= TTL_OC( not ( J(6) xor J(7) ) );
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS266N
port map(
X_1 => J(0), -- 1A
X_2 => J(1), -- 1B
X_3 => E(0), -- 1Y\
X_4 => E(1), -- 2Y\
X_5 => J(2), -- 2A
X_6 => J(3), -- 2B
X_7 => open, -- GND
X_8 => J(4), -- 3B
X_9 => J(5), -- 3A
X_10 => E(2), -- 3Y\
X_11 => E(3), -- 4Y\
X_12 => J(6), -- 4B
X_13 => J(7), -- 4A
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_27.vhd
0,0 → 1,78
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS27N: Triple 3-input NOR gate --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_27 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_27 is
signal J, B : unsigned(8 downto 0); -- Test stimuli
signal D, E : std_logic_vector(2 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= not( J(0) or J(1) or J(2) );
D(1) <= not( J(3) or J(4) or J(5) );
D(2) <= not( J(6) or J(7) or J(8) );
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS27N
port map(
X_1 => J(0), -- 1A
X_2 => J(1), -- 1B
X_3 => J(3), -- 2A
X_4 => J(4), -- 2B
X_5 => J(5), -- 2C
X_6 => E(1), -- 2Y\
X_7 => open, -- GND
X_8 => E(2), -- 3Y\
X_9 => J(6), -- 3C
X_10 => J(7), -- 3B
X_11 => J(8), -- 3A
X_12 => E(0), -- 1Y\
X_13 => J(2), -- 1C
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_273.vhd
0,0 → 1,92
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS273N: 8-bit D-type register with clear --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_273 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_273 is
signal RS : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(CLK, RS) is
begin
if RS = '0' then
D <= (others => '0');
elsif rising_edge(CLK) then
D <= std_logic_vector(BC);
end if;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS273N
port map(
X_1 => RS, -- MR\
X_2 => E(0), -- Q0
X_3 => BC(0), -- D0
X_4 => BC(1), -- D1
X_5 => E(1), -- Q1
X_6 => E(2), -- Q2
X_7 => BC(2), -- D2
X_8 => BC(3), -- D3
X_9 => E(3), -- Q3
X_10 => open, -- GND
X_11 => CLK, -- CP
X_12 => E(4), -- Q4
X_13 => BC(4), -- D4
X_14 => BC(5), -- D5
X_15 => E(5), -- Q5
X_16 => E(6), -- Q6
X_17 => BC(6), -- D6
X_18 => BC(7), -- D7
X_19 => E(7), -- Q7
X_20 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_279.vhd
0,0 → 1,112
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS279N: 4-bit S-R latch --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_279 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := warning
);
end entity;
 
architecture Test of Testbench_279 is
signal J, B : unsigned(11 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
signal X : std_logic_vector(11 downto 0); -- Shortened R-X-S pulses
signal CLK, RS : std_logic;
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => RS,
D => D,
E => E
);
process(CLK, RS) is -- Generate short R-S pulses
variable Y : std_logic_vector(11 downto 0);
begin
if RS = '0' then
X <= "011011011011"; -- General reset
elsif rising_edge(CLK) then
Y := std_logic_vector(J);
Y(9) := Y(9) or not Y(11); -- Reset dominates, all cases
Y(6) := Y(6) or not (Y(7) and Y(8));
Y(3) := Y(3) or not Y(5);
Y(1) := Y(1) or not Y(2);
Y(0) := Y(0) or not Y(2);
X <= Y, (others => '1') after Period / 2;
end if;
end process;
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(all) is
variable R, S : std_logic_vector(3 downto 0);
variable Z : std_logic_vector(1 downto 0);
begin
R := (X(11), X(8) and X(7), X(5), X(2));
S := (X(9), X(6), X(3), X(1) and X(0));
for i in R'range loop
Z := S(i) & R(i);
case Z is
when "11" => null;
when "01" => D(i) <= '1';
when "10" => D(i) <= '0';
when others => D(i) <= 'X';
end case;
end loop;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS279N
port map(
X_1 => X(2), -- 1R\
X_2 => X(1), -- 1S1\
X_3 => X(0), -- 1S2\
X_4 => E(0), -- 1Q
X_5 => X(5), -- 2R\
X_6 => X(3), -- 2S\
X_7 => E(1), -- 2Q
X_8 => open, -- GND
X_9 => E(2), -- 3Q
X_10 => X(6), -- 3S\
X_11 => X(7), -- 3R1\
X_12 => X(8), -- 3R2\
X_13 => E(3), -- 4Q
X_14 => X(9), -- 4S\
X_15 => X(11), -- 4R\
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_28.vhd
0,0 → 1,79
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS28N: Quad 2-input NOR buffer --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_28 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_28 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= not (J(0) or J(1));
D(1) <= not (J(2) or J(3));
D(2) <= not (J(4) or J(5));
D(3) <= not (J(6) or J(7));
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS28N
port map(
X_1 => E(0), -- 1Y\
X_2 => J(0), -- 1A
X_3 => J(1), -- 1B
X_4 => E(1), -- 2Y\
X_5 => J(2), -- 2A
X_6 => J(3), -- 2B
X_7 => open, -- GND
X_8 => J(4), -- 3B
X_9 => J(5), -- 3A
X_10 => E(2), -- 3Y\
X_11 => J(6), -- 4B
X_12 => J(7), -- 4A
X_13 => E(3), -- 4Y\
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_280.vhd
0,0 → 1,77
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS280N: 9-bit parity generator/checker --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_280 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_280 is
signal J, B : unsigned(8 downto 0); -- Test stimuli
signal D, E : std_logic_vector(1 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= xnor_reduce(std_logic_vector(J));
D(1) <= xor_reduce(std_logic_vector(J));
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS280N
port map(
X_1 => J(6), -- I6
X_2 => J(7), -- I7
--
X_4 => J(8), -- I8
X_5 => E(0), -- SE
X_6 => E(1), -- SO
X_7 => open, -- GND
X_8 => J(0), -- I0
X_9 => J(1), -- I1
X_10 => J(2), -- I2
X_11 => J(3), -- I3
X_12 => J(4), -- I4
X_13 => J(5), -- I5
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_283.vhd
0,0 → 1,90
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS283N: 4-bit binary full adder (fast carry) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_283 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_283 is
signal JC, BC : unsigned(8 downto 0); -- Test stimuli
signal D, E : std_logic_vector(4 downto 0); -- Expected & actual results
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(JC) is
variable X, Y, Z : natural := 0;
begin
if now > 1 ns then -- Meaningless to run at T=0
X := TTL_to_integer(JC(7 downto 4));
Y := TTL_to_integer(JC(3 downto 0));
Z := TTL_to_integer(JC(8 downto 8));
Z := Z + X + Y;
end if;
D <= std_logic_vector(to_unsigned(Z, D'length));
end process;
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS283N
port map(
X_1 => E(1), -- S1
X_2 => JC(5), -- B1
X_3 => JC(1), -- A1
X_4 => E(0), -- S0
X_5 => JC(0), -- A0
X_6 => JC(4), -- B0
X_7 => JC(8), -- C0
X_8 => open, -- GND
X_9 => E(4), -- C4
X_10 => E(3), -- S3
X_11 => JC(7), -- B3
X_12 => JC(3), -- A3
X_13 => E(2), -- S2
X_14 => JC(2), -- A2
X_15 => JC(6), -- B2
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_289.vhd
0,0 → 1,153
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS289N: 64-bit RAM (open collector) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_289 is -- Top-level bench
generic(
OC : boolean := true;
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_289 is
signal J, B : unsigned(5 downto 0); -- Unused
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
signal CLK, RS : std_logic;
signal CS, WR : std_logic := '1';
signal AD : TTLword := (others => '0');
signal DI, Q, QQ : TTLquad;
signal CE, WE : std_logic;
 
signal W : std_logic;
signal Phase : natural;
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate RAM-specific stimuli
-----------------------------------------------------------------------
CLKX: process(CLK, RS) is
begin
if RS = '0' then
Phase <= 0;
CS <= '1';
WR <= '1';
elsif rising_edge(CLK) then
case Phase is
when 0 => CS <= '0'; Phase <= 1;
when 1 => WR <= W; Phase <= 2;
when 2 => WR <= '1'; Phase <= 3;
when others => CS <= '1'; WR <= '1'; Phase <= 0;
end case;
end if;
end process;
UPDATE: process(CLK, RS) is
variable TD : unsigned(3 downto 0);
begin
if RS = '0' then
W <= '0';
AD <= (others => '0');
TD := "0110";
elsif rising_edge(CLK) and Phase = 3 then
if AD = "1111" then
W <= not W; -- Alternate read/write cycles
end if;
AD <= AD + 1;
TD := TD + 1;
end if;
for i in TD'range loop
DI(i+1) <= TD(i);
end loop;
end process;
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
CE <= WR and not CS;
WE <= not(WR or CS);
process(CE, WE, AD, DI) is
variable mem : TTLmem; -- Testbench memory
variable adr : TTLaddr;
variable QI : TTLquad;
begin
adr := TTL_to_integer(AD);
if WE'event and WE = '1' then
mem(adr) := not DI; -- Data is output inverted
end if;
if CE = '1' then
QI := mem(adr);
else
QI := (others => 'Z');
end if;
if OC then
for i in Q'range loop
Q(i) <= TTL_OC(QI(i));
end loop;
else
Q <= QI;
end if;
end process;
D <= Q;
E <= QQ;
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS89N
port map(
X_1 => AD(0), -- A0
X_2 => CS, -- CS\
X_3 => WR, -- WE\
X_4 => DI(1), -- D1
X_5 => QQ(1), -- Q1\
X_6 => DI(2), -- D2
X_7 => QQ(2), -- Q2\
X_8 => open, -- GND
X_9 => QQ(3), -- Q3\
X_10 => DI(3), -- D3
X_11 => QQ(4), -- Q4\
X_12 => DI(4), -- D4
X_13 => AD(3), -- A3
X_14 => AD(2), -- A2
X_15 => AD(1), -- A1
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_290.vhd
0,0 → 1,106
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS290N: BCD decade counter --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_290 is -- Top-level bench
generic(
StimClk : std_logic := '0';
CheckClk : std_logic := '1';
Period : time := 120 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_290 is
signal RS, C0, NRS : std_logic;
signal CLK : std_logic;
signal J, B : unsigned(1 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
RS <= not NRS;
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => NRS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(B, RS) is
variable Q0 : std_logic;
begin
if RS = '1' then
Q0 := '0';
elsif falling_edge(B(0)) then
Q0 := not Q0;
end if;
D(0) <= Q0;
end process;
process(D, RS) is
variable Q31 : unsigned(2 downto 0);
begin
if RS = '1' then
Q31 := (others => '0');
elsif falling_edge(D(0)) then
case TTL_to_integer(Q31) is
when 4 to 7 => Q31 := Q31 - 4;
when others => Q31 := Q31 + 1;
end case;
end if;
D(3 downto 1) <= std_logic_vector(Q31);
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS290N
port map(
X_1 => '0', -- MS1
--
X_3 => '0', -- MS2
X_4 => E(2), -- Q2
X_5 => E(1), -- Q1
--
X_7 => open, -- GND
X_8 => E(3), -- Q3
X_9 => C0, -- Q0
X_10 => B(0), -- CP0\
X_11 => C0, -- CP1\
X_12 => RS, -- MR1
X_13 => RS, -- MR2
X_14 => open -- Vcc
);
E(0) <= C0;
end architecture Test;
/trunk/Testbench/Testbench_293.vhd
0,0 → 1,103
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS293N: 4-bit binary counter --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_293 is -- Top-level bench
generic(
StimClk : std_logic := '0';
CheckClk : std_logic := '1';
Period : time := 150 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_293 is
signal RS, C0, NRS : std_logic;
signal CLK : std_logic;
signal J, B : unsigned(1 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
RS <= not NRS;
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => NRS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(B, RS) is
variable Q0 : std_logic;
begin
if RS = '1' then
Q0 := '0';
elsif falling_edge(B(0)) then
Q0 := not Q0;
end if;
D(0) <= Q0;
end process;
process(D, RS) is
variable Q31 : unsigned(2 downto 0);
begin
if RS = '1' then
Q31 := (others => '0');
elsif falling_edge(D(0)) then
Q31 := Q31 + 1;
end if;
D(3 downto 1) <= std_logic_vector(Q31);
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS293N
port map(
--
--
--
X_4 => E(2), -- Q2
X_5 => E(1), -- Q1
--
X_7 => open, -- GND
X_8 => E(3), -- Q3
X_9 => C0, -- Q0
X_10 => B(0), -- CP0\
X_11 => C0, -- CP1\
X_12 => RS, -- MR1
X_13 => RS, -- MR2
X_14 => open -- Vcc
);
E(0) <= C0;
end architecture Test;
/trunk/Testbench/Testbench_295.vhd
0,0 → 1,96
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS295AN: 4-bit shift register (3-state outputs) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_295 is -- Top-level bench
generic(
StimClk : std_logic := '0';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_295 is
signal RS : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(3 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
signal P, Q : std_logic_vector(3 downto 0);
signal CP, OE, PE, DS : std_logic := '1';
begin
P <= std_logic_vector(JC(3 downto 0));
DS <= JC(1);
CP <= CLK;
PE <= '1' when ((BC = "1000") or (RS = '0')) else '0';
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(CP) is
begin
if falling_edge(CP) then
if PE = '0' then
Q <= Q(2 downto 0) & DS;
else
Q <= P;
end if;
end if;
end process;
D <= Q when OE = '1' else (others => 'Z');
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS295AN
port map(
X_1 => DS, -- DS
X_2 => P(0), -- P0
X_3 => P(1), -- P1
X_4 => P(2), -- P2
X_5 => P(3), -- P3
X_6 => PE, -- PE
X_7 => open, -- GND
X_8 => OE, -- OE
X_9 => CP, -- CP\
X_10 => E(3), -- Q3
X_11 => E(2), -- Q2
X_12 => E(1), -- Q1
X_13 => E(0), -- Q0
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_298.vhd
0,0 → 1,92
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS298N: Quad 2-input mux. with register --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_298 is -- Top-level bench
generic(
StimClk : std_logic := '0';
CheckClk : std_logic := '0';
Period : time := 40 ns;
Finish : time := 50 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_298 is
signal J, B, Y : unsigned(9 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
signal CP, S, RS, CLK : std_logic;
 
begin
CP <= B(1) or (CLK and not RS);
Y <= B after 10 ns;
S <= Y(0);
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(CP) is
begin
if falling_edge(CP) then
if S = '0' then
D <= (Y(8), Y(6), Y(4), Y(2));
else
D <= (Y(9), Y(7), Y(5), Y(3));
end if;
end if;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS298N
port map(
X_1 => Y(5), -- I1B
X_2 => Y(3), -- I1A
X_3 => Y(2), -- I0A
X_4 => Y(4), -- I0B
X_5 => Y(7), -- I1C
X_6 => Y(9), -- I1D
X_7 => Y(8), -- I0D
X_8 => open, -- GND
X_9 => Y(6), -- I0C
X_10 => S, -- S
X_11 => CP, -- CP\
X_12 => E(3), -- QD
X_13 => E(2), -- QC
X_14 => E(1), -- QB
X_15 => E(0), -- QA
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_299.vhd
0,0 → 1,112
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS299N: 8 bit universal shift/storage register --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_299 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 40 ns;
Finish : time := 50 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_299 is
signal J, B : unsigned(13 downto 0); -- Test stimuli
signal D, E : std_logic_vector(9 downto 0); -- Expected & actual results
signal RS, CLK : std_logic;
signal OE : std_logic;
signal DI, R, DT : std_logic_vector(0 to 7);
alias S0 is J(8);
alias S1 is J(9);
alias OE1 is J(10);
alias OE2 is J(11);
alias DS0 is J(12);
alias DS7 is J(13);
 
begin
OE <= not((S1 and S0) or OE1 or OE2);
DI <= TTL_REV(J(7 downto 0)) when OE = '0' else (others => 'Z');
E <= "ZZ" & TTL_REV(DI);
DT <= TTL_REV(J(7 downto 0)) when OE = '0' else R;
D <= R(7) & R(0) & TTL_REV(DT);
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(RS, CLK) is
variable S : unsigned(1 downto 0);
begin
if RS = '0' then
R <= (others => '0');
elsif rising_edge(CLK) then
S := (S1, S0);
case S is
when "01" => R <= DS0 & R(0 to 6); -- Shift right
when "10" => R <= R(1 to 7) & DS7; -- Shift left
when "11" => R <= DT; -- Parallel load
when others => null; -- "00" hold
end case;
end if;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS299N
port map(
X_1 => S0, -- S0
X_2 => OE1, -- OE1\
X_3 => OE2, -- OE2\
X_4 => DI(6), -- IO6
X_5 => DI(4), -- IO4
X_6 => DI(2), -- IO2
X_7 => DI(0), -- IO0
X_8 => E(8), -- Q0
X_9 => RS, -- MR\
X_10 => open, -- GND
X_11 => DS0, -- DS0
X_12 => CLK, -- CP
X_13 => DI(1), -- IO1
X_14 => DI(3), -- IO3
X_15 => DI(5), -- IO5
X_16 => DI(7), -- IO7
X_17 => E(9), -- Q7
X_18 => DS7, -- DS7
X_19 => S1, -- S1
X_20 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_30.vhd
0,0 → 1,76
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS30N: 8-input NAND gate (Pinout A) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_30 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_30 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(0 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= nand_reduce(std_logic_vector(J(7 downto 0)));
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS30N
port map(
X_1 => J(0), -- 1A
X_2 => J(1), -- 1B
X_3 => J(2), -- 1C
X_4 => J(3), -- 1D
X_5 => J(4), -- 1E
X_6 => J(5), -- 1F
X_7 => open, -- GND
X_8 => E(0), -- 1Y\
--
--
X_11 => J(6), -- 1G
X_12 => J(7), -- 1H
--
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_32.vhd
0,0 → 1,79
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS32N: Quad 2-input OR gate --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_32 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_32 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= (J(0) or J(1));
D(1) <= (J(2) or J(3));
D(2) <= (J(4) or J(5));
D(3) <= (J(6) or J(7));
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS32N
port map(
X_1 => J(0), -- 1A
X_2 => J(1), -- 1B
X_3 => E(0), -- 1Y\
X_4 => J(2), -- 2A
X_5 => J(3), -- 2B
X_6 => E(1), -- 2Y\
X_7 => open, -- GND
X_8 => E(2), -- 3Y\
X_9 => J(4), -- 3B
X_10 => J(5), -- 3A
X_11 => E(3), -- 4Y\
X_12 => J(6), -- 4B
X_13 => J(7), -- 4A
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_322.vhd
0,0 → 1,116
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS322N: 8 bit ser/par register + sign extend --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_322 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 40 ns;
Finish : time := 50 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_322 is
signal J, B : unsigned(14 downto 0); -- Test stimuli
signal D, E : std_logic_vector(8 downto 0); -- Expected & actual results
signal RS, CLK : std_logic;
signal OEI, DIN : std_logic;
signal DI, R, DT : std_logic_vector(7 downto 0);
alias RE is J(8);
alias SP is J(9);
alias D0 is J(10);
alias D1 is J(11);
alias OE is J(12);
alias SE is J(13);
alias S is J(14);
 
begin
OEI <= (SP or RE) and not(OE);
DIN <= D0 when S = '0' else D1;
DI <= std_logic_vector(J(7 downto 0)) when OE = '1' else (others => 'Z');
E <= "Z" & DI;
DT <= std_logic_vector(J(7 downto 0)) when OE = '1' else
R when OEI = '1' else
(others => 'Z');
D <= R(0) & DT;
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(RS, CLK) is
variable SEL : unsigned(2 downto 0);
begin
if RS = '0' then
R <= (others => '0');
elsif rising_edge(CLK) then
SEL := RE & SP & SE;
case SEL is
when "011" => R <= DIN & R(7 downto 1); -- Shift right
when "010" => R <= R(7) & R(7 downto 1); -- Shift left
when "00-" => R <= DT; -- Parallel load
when others => null; -- Hold
end case;
end if;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS322N
port map(
X_1 => RE, -- RE\
X_2 => SP, -- S/P\
X_3 => D0, -- D0
X_4 => DI(7), -- IO7
X_5 => DI(5), -- IO5
X_6 => DI(3), -- IO3
X_7 => DI(1), -- IO1
X_8 => OE, -- OE\
X_9 => RS, -- MR\
X_10 => open, -- GND
X_11 => CLK, -- CP
X_12 => E(8), -- Q0
X_13 => DI(0), -- IO0
X_14 => DI(2), -- IO2
X_15 => DI(4), -- IO4
X_16 => DI(6), -- IO6
X_17 => D1, -- D1
X_18 => SE, -- SE\
X_19 => S, -- S
X_20 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_323.vhd
0,0 → 1,111
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS323N: 8 bit universal shift/storage register --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_323 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 40 ns;
Finish : time := 50 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_323 is
signal J, B : unsigned(13 downto 0); -- Test stimuli
signal D, E : std_logic_vector(9 downto 0); -- Expected & actual results
signal RS, CLK : std_logic;
signal OE : std_logic;
signal DI, R, DT : std_logic_vector(0 to 7);
alias S0 is J(8);
alias S1 is J(9);
alias OE1 is J(10);
alias OE2 is J(11);
alias DS0 is J(12);
alias DS7 is J(13);
 
begin
OE <= not((S1 and S0) or OE1 or OE2);
DI <= TTL_REV(J(7 downto 0)) when OE = '0' else (others => 'Z');
E <= "ZZ" & TTL_REV(DI);
DT <= TTL_REV(J(7 downto 0)) when OE = '0' else R;
D <= R(7) & R(0) & TTL_REV(DT);
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(RS, CLK) is
variable S : unsigned(2 downto 0);
begin
if rising_edge(CLK) then
S := (RS, S1, S0);
case S is
when "0--" => R <= (others => '0'); -- Sync. reset
when "101" => R <= DS0 & R(0 to 6); -- Shift right
when "110" => R <= R(1 to 7) & DS7; -- Shift left
when "111" => R <= DT; -- Parallel load
when others => null; -- "00" hold
end case;
end if;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS323N
port map(
X_1 => S0, -- S0
X_2 => OE1, -- OE1\
X_3 => OE2, -- OE2\
X_4 => DI(6), -- IO6
X_5 => DI(4), -- IO4
X_6 => DI(2), -- IO2
X_7 => DI(0), -- IO0
X_8 => E(8), -- Q0
X_9 => RS, -- SR\
X_10 => open, -- GND
X_11 => DS0, -- DS0
X_12 => CLK, -- CP
X_13 => DI(1), -- IO1
X_14 => DI(3), -- IO3
X_15 => DI(5), -- IO5
X_16 => DI(7), -- IO7
X_17 => E(9), -- Q7
X_18 => DS7, -- DS7
X_19 => S1, -- S1
X_20 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_33.vhd
0,0 → 1,79
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS33N: Quad 2-input NOR buffer (open collector) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_33 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_33 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= TTL_OC( not (J(0) or J(1)) );
D(1) <= TTL_OC( not (J(2) or J(3)) );
D(2) <= TTL_OC( not (J(4) or J(5)) );
D(3) <= TTL_OC( not (J(6) or J(7)) );
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS33N
port map(
X_1 => E(0), -- 1Y\
X_2 => J(0), -- 1A
X_3 => J(1), -- 1B
X_4 => E(1), -- 2Y\
X_5 => J(2), -- 2A
X_6 => J(3), -- 2B
X_7 => open, -- GND
X_8 => J(4), -- 3B
X_9 => J(5), -- 3A
X_10 => E(2), -- 3Y\
X_11 => J(6), -- 4B
X_12 => J(7), -- 4A
X_13 => E(3), -- 4Y\
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_352.vhd
0,0 → 1,85
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS352N: Dual 4-input mux. (common selects) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_352 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 50 ns;
Finish : time := 200 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_352 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(1 downto 0); -- Expected & actual results
signal A : unsigned(1 downto 0);
signal chn : natural range 3 downto 0;
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
A <= B(3 downto 2);
chn <= TTL_to_integer(A);
D(0) <= not((not B(0)) and B(7-chn));
D(1) <= not((not B(1)) and B(chn+4));
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS352N
port map(
X_1 => B(0), -- EA\
X_2 => B(3), -- S1
X_3 => B(4), -- I3A
X_4 => B(5), -- I2A
X_5 => B(6), -- I1A
X_6 => B(7), -- I0A
X_7 => E(0), -- ZA\
X_8 => open, -- GND
X_9 => E(1), -- ZB\
X_10 => B(4), -- I0B
X_11 => B(5), -- I1B
X_12 => B(6), -- I2B
X_13 => B(7), -- I3B
X_14 => B(2), -- S0
X_15 => B(1), -- EB\
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_353.vhd
0,0 → 1,85
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS353N: Dual 4-input mux. (common selects) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_353 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 50 ns;
Finish : time := 200 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_353 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(1 downto 0); -- Expected & actual results
signal A : unsigned(1 downto 0);
signal chn : natural range 3 downto 0;
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
A <= B(3 downto 2);
chn <= TTL_to_integer(A);
D(0) <= not(B(7-chn)) when B(0) = '0' else 'Z';
D(1) <= not(B(chn+4)) when B(1) = '0' else 'Z';
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS353N
port map(
X_1 => B(0), -- EA\
X_2 => B(3), -- S1
X_3 => B(4), -- I3A
X_4 => B(5), -- I2A
X_5 => B(6), -- I1A
X_6 => B(7), -- I0A
X_7 => E(0), -- ZA\
X_8 => open, -- GND
X_9 => E(1), -- ZB\
X_10 => B(4), -- I0B
X_11 => B(5), -- I1B
X_12 => B(6), -- I2B
X_13 => B(7), -- I3B
X_14 => B(2), -- S0
X_15 => B(1), -- EB\
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_365.vhd
0,0 → 1,81
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS365N: Hex 3-state buffer --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_365 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 50 ns;
Finish : time := 200 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_365 is
signal J, B : unsigned(5 downto 0); -- Test stimuli
signal D, E : std_logic_vector(5 downto 0); -- Expected & actual results
signal EN : std_logic;
begin
EN <= not(J(1) or J(0));
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D <= std_logic_vector(B) when EN = '1' else (others => 'Z');
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS365AN
port map(
X_1 => J(0), -- E1\
X_2 => B(0), -- A1
X_3 => E(0), -- Y1
X_4 => B(1), -- A2
X_5 => E(1), -- Y2
X_6 => B(2), -- A3
X_7 => E(2), -- Y3
X_8 => open, -- GND
X_9 => E(3), -- Y4
X_10 => B(3), -- A4
X_11 => E(4), -- Y5
X_12 => B(4), -- A5
X_13 => E(5), -- Y6
X_14 => B(5), -- A6
X_15 => J(1), -- E2\
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_366.vhd
0,0 → 1,81
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS366N: Hex 3-state buffer (inverting) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_366 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 50 ns;
Finish : time := 200 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_366 is
signal J, B : unsigned(5 downto 0); -- Test stimuli
signal D, E : std_logic_vector(5 downto 0); -- Expected & actual results
signal EN : std_logic;
begin
EN <= not(J(1) or J(0));
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D <= not std_logic_vector(B) when EN = '1' else (others => 'Z');
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS366AN
port map(
X_1 => J(0), -- E1\
X_2 => B(0), -- A1
X_3 => E(0), -- Y1\
X_4 => B(1), -- A2
X_5 => E(1), -- Y2\
X_6 => B(2), -- A3
X_7 => E(2), -- Y3\
X_8 => open, -- GND
X_9 => E(3), -- Y4\
X_10 => B(3), -- A4
X_11 => E(4), -- Y5\
X_12 => B(4), -- A5
X_13 => E(5), -- Y6\
X_14 => B(5), -- A6
X_15 => J(1), -- E2\
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_367.vhd
0,0 → 1,84
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS367N: 2- & 4-bit 3-state buffer --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_367 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 50 ns;
Finish : time := 200 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_367 is
signal J, B : unsigned(5 downto 0); -- Test stimuli
signal D, E : std_logic_vector(5 downto 0); -- Expected & actual results
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
G: for i in B'range generate
signal EN : std_logic;
begin
EN <= J(1) when i > 3 else J(0);
D(i) <= B(i) when EN = '0' else 'Z';
end generate;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS367AN
port map(
X_1 => J(0), -- E1\
X_2 => B(0), -- A1
X_3 => E(0), -- Y1
X_4 => B(1), -- A2
X_5 => E(1), -- Y2
X_6 => B(2), -- A3
X_7 => E(2), -- Y3
X_8 => open, -- GND
X_9 => E(3), -- Y4
X_10 => B(3), -- A4
X_11 => E(4), -- Y5
X_12 => B(4), -- A5
X_13 => E(5), -- Y6
X_14 => B(5), -- A6
X_15 => J(1), -- E2\
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_368.vhd
0,0 → 1,84
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS367N: 2- & 4-bit 3-state buffer (inverting) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_368 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 50 ns;
Finish : time := 200 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_368 is
signal J, B : unsigned(5 downto 0); -- Test stimuli
signal D, E : std_logic_vector(5 downto 0); -- Expected & actual results
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
G: for i in B'range generate
signal EN : std_logic;
begin
EN <= J(1) when i > 3 else J(0);
D(i) <= not B(i) when EN = '0' else 'Z';
end generate;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS368AN
port map(
X_1 => J(0), -- E1\
X_2 => B(0), -- A1
X_3 => E(0), -- Y1\
X_4 => B(1), -- A2
X_5 => E(1), -- Y2\
X_6 => B(2), -- A3
X_7 => E(2), -- Y3\
X_8 => open, -- GND
X_9 => E(3), -- Y4\
X_10 => B(3), -- A4
X_11 => E(4), -- Y5\
X_12 => B(4), -- A5
X_13 => E(5), -- Y6\
X_14 => B(5), -- A6
X_15 => J(1), -- E2\
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_37.vhd
0,0 → 1,79
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS37N: Quad 2-input NAND buffer --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_37 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_37 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= not (J(0) and J(1));
D(1) <= not (J(2) and J(3));
D(2) <= not (J(4) and J(5));
D(3) <= not (J(6) and J(7));
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS37N
port map(
X_1 => J(0), -- 1A
X_2 => J(1), -- 1B
X_3 => E(0), -- 1Y\
X_4 => J(2), -- 2A
X_5 => J(3), -- 2B
X_6 => E(1), -- 2Y\
X_7 => open, -- GND
X_8 => E(2), -- 3Y\
X_9 => J(4), -- 3B
X_10 => J(5), -- 3A
X_11 => E(3), -- 4Y\
X_12 => J(6), -- 4B
X_13 => J(7), -- 4A
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_373.vhd
0,0 → 1,93
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS373N: 8-bit transparent latch --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_373 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_373 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
signal R : std_logic_vector(7 downto 0); -- Latch
alias OE is J(0);
alias LE is J(1);
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(all) is
begin
if LE = '1' then
R <= std_logic_vector(B);
end if;
end process;
D <= R when OE = '0' else (others => 'Z');
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS373N
port map(
X_1 => OE, -- OE\
X_2 => E(0), -- Q0
X_3 => B(0), -- D0
X_4 => B(1), -- D1
X_5 => E(1), -- Q1
X_6 => E(2), -- Q2
X_7 => B(2), -- D2
X_8 => B(3), -- D3
X_9 => E(3), -- Q3
X_10 => open, -- GND
X_11 => LE, -- LE
X_12 => E(4), -- Q4
X_13 => B(4), -- D4
X_14 => B(5), -- D5
X_15 => E(5), -- Q5
X_16 => E(6), -- Q6
X_17 => B(6), -- D6
X_18 => B(7), -- D7
X_19 => E(7), -- Q7
X_20 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_374.vhd
0,0 → 1,93
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS374N: 8-bit D flipflop --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_374 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_374 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
signal R : std_logic_vector(7 downto 0); -- Latch
signal CLK : std_logic;
alias OE is J(0);
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(CLK) is
begin
if rising_edge(CLK) then
R <= std_logic_vector(B);
end if;
end process;
D <= R when OE = '0' else (others => 'Z');
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS374N
port map(
X_1 => OE, -- OE\
X_2 => E(0), -- Q0
X_3 => B(0), -- D0
X_4 => B(1), -- D1
X_5 => E(1), -- Q1
X_6 => E(2), -- Q2
X_7 => B(2), -- D2
X_8 => B(3), -- D3
X_9 => E(3), -- Q3
X_10 => open, -- GND
X_11 => CLK, -- CP
X_12 => E(4), -- Q4
X_13 => B(4), -- D4
X_14 => B(5), -- D5
X_15 => E(5), -- Q5
X_16 => E(6), -- Q6
X_17 => B(6), -- D6
X_18 => B(7), -- D7
X_19 => E(7), -- Q7
X_20 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_375.vhd
0,0 → 1,118
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS375N: 4-bit bistable latch --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_375 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_375 is
signal CLK : std_logic;
signal J, B : unsigned(5 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
signal S : std_logic_vector(3 downto 0);
signal E12, E34 : std_logic;
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(CLK) is
begin
if falling_edge(CLK) then
E12 <= J(4), '0' after 45 ns;
E34 <= J(5), '0' after 45 ns;
end if;
end process;
S <= (E34, E34, E12, E12);
G1: for i in 3 downto 0 generate
begin
process(S, J) is
begin
if S(i) = '1' then
D(i) <= J(i);
D(i+4) <= not J(i);
end if;
end process;
end generate;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS375N
-- port map(
-- X_1 => E(4), -- Q1\
-- X_2 => J(0), -- D1
-- X_3 => J(1), -- D2
-- X_4 => E34, -- E34
-- X_5 => open, -- Vcc
-- X_6 => J(2), -- D3
-- X_7 => J(3), -- D4
-- X_8 => E(7), -- Q4\
-- X_9 => E(3), -- Q4
-- X_10 => E(6), -- Q3\
-- X_11 => E(2), -- Q3
-- X_12 => open, -- GND
-- X_13 => E12, -- E12
-- X_14 => E(5), -- Q2\
-- X_15 => E(1), -- Q2
-- X_16 => E(0) -- Q1
-- );
port map(
X_1 => J(0), -- D1
X_2 => E(4), -- Q1\
X_3 => E(0), -- Q1
X_4 => E12, -- E12
X_5 => E(1), -- Q2
X_6 => E(5), -- Q2\
X_7 => J(1), -- D2
X_8 => open, -- GND
X_9 => J(2), -- D3
X_10 => E(6), -- Q3\
X_11 => E(2), -- Q3
X_12 => E34, -- E34
X_13 => E(3), -- Q4
X_14 => E(7), -- Q4\
X_15 => J(3), -- D4
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_377.vhd
0,0 → 1,96
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS377N: 8-bit D flipflop --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_377 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_377 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
signal R : std_logic_vector(7 downto 0); -- Latch
signal CLK : std_logic;
alias EN is J(0);
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(CLK) is
begin
if rising_edge(CLK) then
if EN = '0' then
R <= std_logic_vector(B);
end if;
end if;
end process;
D <= R;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS377N
port map(
X_1 => EN, -- EN\
X_2 => E(0), -- Q0
X_3 => B(0), -- D0
X_4 => B(1), -- D1
X_5 => E(1), -- Q1
X_6 => E(2), -- Q2
X_7 => B(2), -- D2
X_8 => B(3), -- D3
X_9 => E(3), -- Q3
X_10 => open, -- GND
X_11 => CLK, -- CP
X_12 => E(4), -- Q4
X_13 => B(4), -- D4
X_14 => B(5), -- D5
X_15 => E(5), -- Q5
X_16 => E(6), -- Q6
X_17 => B(6), -- D6
X_18 => B(7), -- D7
X_19 => E(7), -- Q7
X_20 => open -- Vcc
);
 
end architecture Test;
/trunk/Testbench/Testbench_378.vhd
0,0 → 1,92
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS378N: 8-bit D flipflop --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_378 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_378 is
signal J, B : unsigned(5 downto 0); -- Test stimuli
signal D, E : std_logic_vector(5 downto 0); -- Expected & actual results
signal R : std_logic_vector(5 downto 0); -- Register
signal CLK : std_logic;
alias EN is J(0);
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(CLK) is
begin
if rising_edge(CLK) then
if EN = '0' then
R <= std_logic_vector(B);
end if;
end if;
end process;
D <= R;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS378N
port map(
X_1 => EN, -- E\
X_2 => E(0), -- Q0
X_3 => B(0), -- D0
X_4 => B(1), -- D1
X_5 => E(1), -- Q1
X_6 => B(2), -- D2
X_7 => E(2), -- Q2
X_8 => open, -- GND
X_9 => CLK, -- CP
X_10 => E(3), -- Q3
X_11 => B(3), -- D3
X_12 => E(4), -- Q4
X_13 => B(4), -- D4
X_14 => B(5), -- D5
X_15 => E(5), -- Q5
X_16 => open -- Vcc
);
 
end architecture Test;
/trunk/Testbench/Testbench_379.vhd
0,0 → 1,93
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS379N: 4-bit D flipflop --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_379 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_379 is
signal J, B : unsigned(3 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
signal R, N : std_logic_vector(3 downto 0); -- Register
signal CLK : std_logic;
alias EN is J(0);
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(CLK) is
begin
if rising_edge(CLK) then
if EN = '0' then
R <= std_logic_vector(B);
end if;
end if;
end process;
N <= not R;
D <= N & R;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS379N
port map(
X_1 => EN, -- E\
X_2 => E(0), -- Q0
X_3 => E(4), -- Q0\
X_4 => B(0), -- D0
X_5 => B(1), -- D1
X_6 => E(5), -- Q1\
X_7 => E(1), -- Q1
X_8 => open, -- GND
X_9 => CLK, -- CP
X_10 => E(2), -- Q2
X_11 => E(6), -- Q2\
X_12 => B(2), -- D2
X_13 => B(3), -- D3
X_14 => E(7), -- Q3\
X_15 => E(3), -- Q3
X_16 => open -- Vcc
);
 
end architecture Test;
/trunk/Testbench/Testbench_38.vhd
0,0 → 1,79
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS38N: Quad 2-input NAND buffer (open collector)--
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_38 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_38 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= TTL_OC( not (J(0) and J(1)) );
D(1) <= TTL_OC( not (J(2) and J(3)) );
D(2) <= TTL_OC( not (J(4) and J(5)) );
D(3) <= TTL_OC( not (J(6) and J(7)) );
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS38N
port map(
X_1 => J(0), -- 1A
X_2 => J(1), -- 1B
X_3 => E(0), -- 1Y\
X_4 => J(2), -- 2A
X_5 => J(3), -- 2B
X_6 => E(1), -- 2Y\
X_7 => open, -- GND
X_8 => E(2), -- 3Y\
X_9 => J(4), -- 3B
X_10 => J(5), -- 3A
X_11 => E(3), -- 4Y\
X_12 => J(6), -- 4B
X_13 => J(7), -- 4A
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_386.vhd
0,0 → 1,79
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS386N: Quad 2-input XOR gate --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_386 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_386 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= J(0) xor J(1);
D(1) <= J(2) xor J(3);
D(2) <= J(4) xor J(5);
D(3) <= J(6) xor J(7);
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS386N
port map(
X_1 => J(0), -- 1A
X_2 => J(1), -- 1B
X_3 => E(0), -- 1Y\
X_4 => E(1), -- 2Y\
X_5 => J(2), -- 2A
X_6 => J(3), -- 2B
X_7 => open, -- GND
X_8 => J(4), -- 3B
X_9 => J(5), -- 3A
X_10 => E(2), -- 3Y\
X_11 => E(3), -- 4Y\
X_12 => J(6), -- 4B
X_13 => J(7), -- 4A
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_39.vhd
0,0 → 1,79
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS39N: Quad 2-input NAND buffer (open collector)--
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_39 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_39 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= TTL_OC( not (J(0) and J(1)) );
D(1) <= TTL_OC( not (J(2) and J(3)) );
D(2) <= TTL_OC( not (J(4) and J(5)) );
D(3) <= TTL_OC( not (J(6) and J(7)) );
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS39N
port map(
X_1 => E(0), -- 1Y\
X_2 => J(0), -- 1A
X_3 => J(1), -- 1B
X_4 => E(1), -- 2Y\
X_5 => J(2), -- 2A
X_6 => J(3), -- 2B
X_7 => open, -- GND
X_8 => J(4), -- 3B
X_9 => J(5), -- 3A
X_10 => E(2), -- 3Y\
X_11 => J(6), -- 4B
X_12 => J(7), -- 4A
X_13 => E(3), -- 4Y\
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_390.vhd
0,0 → 1,112
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS390N: Dual decade counter --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_390 is -- Top-level bench
generic(
StimClk : std_logic := '0';
CheckClk : std_logic := '1';
Period : time := 120 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_390 is
signal RS, NRS, C0, C1 : std_logic;
signal CLK : std_logic;
signal J, B : unsigned(1 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
 
begin
RS <= not NRS;
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => NRS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
CA: process(B, RS) is
variable NA : natural;
begin
if RS = '1' then
NA := 0;
elsif falling_edge(B(0)) then
case NA is
when 9 | 11 | 13 | 15 => NA := NA - 9;
when others => NA := NA + 1;
end case;
end if;
D(3 downto 0) <= std_logic_vector(to_unsigned(NA, 4));
end process;
CB: process(B, RS) is
variable NB : natural;
begin
if RS = '1' then
NB := 0;
elsif falling_edge(B(1)) then
case NB is
when 9 | 11 | 13 | 15 => NB := NB - 9;
when others => NB := NB + 1;
end case;
end if;
D(7 downto 4) <= std_logic_vector(to_unsigned(NB, 4));
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS390N
port map(
X_1 => B(0), -- CPA0\
X_2 => RS, -- MRA
X_3 => C0, -- Q0A
X_4 => C0, -- CPA1\
X_5 => E(1), -- Q1A
X_6 => E(2), -- Q2A
X_7 => E(3), -- Q3A
X_8 => open, -- GND
X_9 => E(7), -- Q3B
X_10 => E(6), -- Q2B
X_11 => E(5), -- Q1B
X_12 => C1, -- CPB1\
X_13 => C1, -- Q0B
X_14 => RS, -- MRB
X_15 => B(1), -- CPB0\
X_16 => open -- Vcc
);
E(0) <= C0;
E(4) <= C1;
end architecture Test;
/trunk/Testbench/Testbench_393.vhd
0,0 → 1,108
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS393N: Dual 4-bit binary counter --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_393 is -- Top-level bench
generic(
StimClk : std_logic := '0';
CheckClk : std_logic := '1';
Period : time := 120 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_393 is
signal RS, NRS : std_logic;
signal CLK : std_logic;
signal J, B : unsigned(1 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
 
begin
RS <= not NRS;
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => NRS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
CA: process(B, RS) is
variable NA : natural;
begin
if RS = '1' then
NA := 0;
elsif falling_edge(B(0)) then
case NA is
when 15 => NA := 0;
when others => NA := NA + 1;
end case;
end if;
D(3 downto 0) <= std_logic_vector(to_unsigned(NA, 4));
end process;
CB: process(B, RS) is
variable NB : natural;
begin
if RS = '1' then
NB := 0;
elsif falling_edge(B(1)) then
case NB is
when 15 => NB := 0;
when others => NB := NB + 1;
end case;
end if;
D(7 downto 4) <= std_logic_vector(to_unsigned(NB, 4));
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS393N
port map(
X_1 => B(0), -- CPA\
X_2 => RS, -- MRA
X_3 => E(0), -- Q0A
X_4 => E(1), -- Q1A
X_5 => E(2), -- Q2A
X_6 => E(3), -- Q3A
X_7 => open, -- GND
X_8 => E(7), -- Q3B
X_9 => E(6), -- Q2B
X_10 => E(5), -- Q1B
X_11 => E(4), -- Q0B
X_12 => RS, -- MRB
X_13 => B(1), -- CPB\
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_395.vhd
0,0 → 1,100
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS395N: 4-bit shift/load register --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_395 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 75 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_395 is
signal RS : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(3 downto 0); -- Test stimuli
signal D, E : std_logic_vector(4 downto 0); -- Expected & actual results
signal R : std_logic_vector(3 downto 0);
alias S is JC(0);
alias OE is JC(1);
alias DS is JC(2);
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(RS, CLK) is
begin
if RS = '0' then
R <= (others => '0');
elsif falling_edge(CLK) then
if S = '0' then
R <= R(2 downto 0) & DS;
else
R <= std_logic_vector(BC);
end if;
end if;
end process;
D(4) <= R(3);
D(3 downto 0) <= R when OE = '0' else (others => 'Z');
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS395N
port map(
X_1 => RS, -- MR\
X_2 => DS, -- DS
X_3 => BC(0), -- P0
X_4 => BC(1), -- P1
X_5 => BC(2), -- P2
X_6 => BC(3), -- P3
X_7 => S, -- S
X_8 => open, -- GND
X_9 => OE, -- OE\
X_10 => CLK, -- CP\
X_11 => E(4), -- Q3
X_12 => E(3), -- O3
X_13 => E(2), -- O2
X_14 => E(1), -- O1
X_15 => E(0), -- O0
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_40.vhd
0,0 → 1,77
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS40N: Dual 4-input NAND buffer (Pinout A) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_40 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_40 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(1 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= not( J(0) and J(1) and J(2) and J(3) );
D(1) <= not( J(4) and J(5) and J(6) and J(7) );
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS40N
port map(
X_1 => J(0), -- 1A
X_2 => J(1), -- 1B
--
X_4 => J(2), -- 1C
X_5 => J(3), -- 1D
X_6 => E(0), -- 1Y\
X_7 => open, -- GND
X_8 => E(1), -- 2Y\
X_9 => J(4), -- 2D
X_10 => J(5), -- 2C
--
X_12 => J(6), -- 2B
X_13 => J(7), -- 2A
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_42.vhd
0,0 → 1,87
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS42N: 1-of-10 decoder --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_42 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_42 is
signal J, B : unsigned(3 downto 0); -- Test stimuli
signal D, E : std_logic_vector(9 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(J) is
variable N : natural;
begin
D <= (others => '1'); -- Default
N := TTL_to_integer(J(3 downto 0));
if N < 10 then
D(N) <= '0';
end if;
end process;
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS42N
port map(
X_1 => E(0), -- Q0\
X_2 => E(1), -- Q1\
X_3 => E(2), -- Q2\
X_4 => E(3), -- Q3\
X_5 => E(4), -- Q4\
X_6 => E(5), -- Q5\
X_7 => E(6), -- Q6\
X_8 => open, -- GND
X_9 => E(7), -- Q7\
X_10 => E(8), -- Q8\
X_11 => E(9), -- Q9\
X_12 => J(3), -- A3
X_13 => J(2), -- A2
X_14 => J(1), -- A1
X_15 => J(0), -- A0
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_45.vhd
0,0 → 1,87
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN7445N: 1-of-10 decoder/driver (open collector) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_45 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 120 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_45 is
signal J, B : unsigned(3 downto 0); -- Test stimuli
signal D, E : std_logic_vector(9 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(J) is
variable N : natural;
begin
D <= (others => 'Z'); -- Default
N := TTL_to_integer(J(3 downto 0));
if N < 10 then
D(N) <= '0';
end if;
end process;
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN7445N
port map(
X_1 => E(0), -- Q0\
X_2 => E(1), -- Q1\
X_3 => E(2), -- Q2\
X_4 => E(3), -- Q3\
X_5 => E(4), -- Q4\
X_6 => E(5), -- Q5\
X_7 => E(6), -- Q6\
X_8 => open, -- GND
X_9 => E(7), -- Q7\
X_10 => E(8), -- Q8\
X_11 => E(9), -- Q9\
X_12 => J(3), -- A3
X_13 => J(2), -- A2
X_14 => J(1), -- A1
X_15 => J(0), -- A0
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_490.vhd
0,0 → 1,110
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS490N: Dual decade counter --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_490 is -- Top-level bench
generic(
StimClk : std_logic := '0';
CheckClk : std_logic := '1';
Period : time := 120 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_490 is
signal RS, NRS, C0, C1 : std_logic;
signal CLK : std_logic;
signal J, B : unsigned(1 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
 
begin
RS <= not NRS;
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => NRS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
CA: process(B, RS) is
variable NA : natural;
begin
if RS = '1' then
NA := 0;
elsif falling_edge(B(0)) then
case NA is
when 11 | 13 | 15 => NA := NA - 9;
when others => NA := NA + 1;
end case;
end if;
D(3 downto 0) <= std_logic_vector(to_unsigned(NA, 4));
end process;
CB: process(B, RS) is
variable NB : natural;
begin
if RS = '1' then
NB := 0;
elsif falling_edge(B(1)) then
case NB is
when 11 | 13 | 15 => NB := NB - 9;
when others => NB := NB + 1;
end case;
end if;
D(7 downto 4) <= std_logic_vector(to_unsigned(NB, 4));
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS490N
port map(
X_1 => B(0), -- CPA\
X_2 => RS, -- MRA
X_3 => E(0), -- Q0A
X_4 => '0', -- MSA
X_5 => E(1), -- Q1A
X_6 => E(2), -- Q2A
X_7 => E(3), -- Q3A
X_8 => open, -- GND
X_9 => E(7), -- Q3B
X_10 => E(6), -- Q2B
X_11 => E(5), -- Q1B
X_12 => '0', -- MSB
X_13 => E(4), -- Q0B
X_14 => RS, -- MRB
X_15 => B(1), -- CPB\
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_51.vhd
0,0 → 1,78
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS51N: Dual 2-wide, 2/3-input AOI (Pinout B) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_51 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_51 is
signal J, B : unsigned(9 downto 0); -- Test stimuli
signal D, E : std_logic_vector(1 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= not( (J(0) and J(1)) or (J(2) and J(3)) );
D(1) <= not( (J(4) and J(5) and J(6)) or (J(7) and J(8) and J(9)) );
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS51N
port map(
X_1 => J(9), -- 2A1
X_2 => J(0), -- 1A1
X_3 => J(1), -- 1A2
X_4 => J(2), -- 1B1
X_5 => J(3), -- 1B2
X_6 => E(0), -- 1Y\
X_7 => open, -- GND
X_8 => E(1), -- 2Y\
X_9 => J(4), -- 2B3
X_10 => J(5), -- 2B2
X_11 => J(6), -- 2B1
X_12 => J(7), -- 2A3
X_13 => J(8), -- 2A2
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_533.vhd
0,0 → 1,93
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS533N: 8-bit transparent latch (inverting) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_533 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_533 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
signal R : std_logic_vector(7 downto 0); -- Latch
alias OE is J(0);
alias LE is J(1);
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(all) is
begin
if LE = '1' then
R <= not std_logic_vector(B);
end if;
end process;
D <= R when OE = '0' else (others => 'Z');
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS533N
port map(
X_1 => OE, -- OE\
X_2 => E(0), -- Q0\
X_3 => B(0), -- D0
X_4 => B(1), -- D1
X_5 => E(1), -- Q1\
X_6 => E(2), -- Q2\
X_7 => B(2), -- D2
X_8 => B(3), -- D3
X_9 => E(3), -- Q3\
X_10 => open, -- GND
X_11 => LE, -- LE
X_12 => E(4), -- Q4\
X_13 => B(4), -- D4
X_14 => B(5), -- D5
X_15 => E(5), -- Q5\
X_16 => E(6), -- Q6\
X_17 => B(6), -- D6
X_18 => B(7), -- D7
X_19 => E(7), -- Q7\
X_20 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_534.vhd
0,0 → 1,93
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS534N: 8-bit D flipflop (inverting) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_534 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_534 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
signal R : std_logic_vector(7 downto 0); -- Latch
signal CLK : std_logic;
alias OE is J(0);
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(CLK) is
begin
if rising_edge(CLK) then
R <= not std_logic_vector(B);
end if;
end process;
D <= R when OE = '0' else (others => 'Z');
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS534N
port map(
X_1 => OE, -- OE\
X_2 => E(0), -- Q0\
X_3 => B(0), -- D0
X_4 => B(1), -- D1
X_5 => E(1), -- Q1\
X_6 => E(2), -- Q2\
X_7 => B(2), -- D2
X_8 => B(3), -- D3
X_9 => E(3), -- Q3\
X_10 => open, -- GND
X_11 => CLK, -- CP
X_12 => E(4), -- Q4\
X_13 => B(4), -- D4
X_14 => B(5), -- D5
X_15 => E(5), -- Q5\
X_16 => E(6), -- Q6\
X_17 => B(6), -- D6
X_18 => B(7), -- D7
X_19 => E(7), -- Q7\
X_20 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_54.vhd
0,0 → 1,77
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS54N: 4-wide 2-input AOI gate (Pinout C) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_54 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_54 is
signal J, B : unsigned(9 downto 0); -- Test stimuli
signal D, E : std_logic_vector(0 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= not( (J(0) and J(1)) or (J(2) and J(3) and J(4)) or
(J(8) and J(9)) or (J(5) and J(6) and J(7)) );
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS54N
port map(
X_1 => J(0), -- 1A1
X_2 => J(1), -- 1A2
X_3 => J(2), -- 1B1
X_4 => J(3), -- 1B2
X_5 => J(4), -- 1B3
X_6 => E(0), -- 1Y\
X_7 => open, -- GND
--
X_9 => J(5), -- 1D3
X_10 => J(6), -- 1D2
X_11 => J(7), -- 1D1
X_12 => J(8), -- 1C2
X_13 => J(9), -- 1C1
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_540.vhd
0,0 → 1,91
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS540N: Octal buffer/line driver (3-state ops) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_540 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_540 is
signal RS, OE : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(9 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
signal I : std_logic_vector(7 downto 0);
alias OEA is JC(9);
alias OEB is JC(8);
begin
I <= std_logic_vector(BC(7 downto 0));
OE <= not(OEA or OEB);
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D <= not I when OE = '1' else (others => 'Z');
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS540N
port map(
X_1 => OEA, -- E1\
X_2 => I(0), -- A0
X_3 => I(1), -- A1
X_4 => I(2), -- A2
X_5 => I(3), -- A3
X_6 => I(4), -- A4
X_7 => I(5), -- A5
X_8 => I(6), -- A6
X_9 => I(7), -- A7
X_10 => open, -- GND
X_11 => E(7), -- Y7\
X_12 => E(6), -- Y6\
X_13 => E(5), -- Y5\
X_14 => E(4), -- Y4\
X_15 => E(3), -- Y3\
X_16 => E(2), -- Y2\
X_17 => E(1), -- Y1\
X_18 => E(0), -- Y0\
X_19 => OEB, -- E2\
X_20 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_541.vhd
0,0 → 1,91
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS540N: Octal buffer/line driver (3-state ops) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_541 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_541 is
signal RS, OE : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(9 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
signal I : std_logic_vector(7 downto 0);
alias OEA is JC(9);
alias OEB is JC(8);
begin
I <= std_logic_vector(BC(7 downto 0));
OE <= not(OEA or OEB);
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D <= I when OE = '1' else (others => 'Z');
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS541N
port map(
X_1 => OEA, -- E1\
X_2 => I(0), -- A0
X_3 => I(1), -- A1
X_4 => I(2), -- A2
X_5 => I(3), -- A3
X_6 => I(4), -- A4
X_7 => I(5), -- A5
X_8 => I(6), -- A6
X_9 => I(7), -- A7
X_10 => open, -- GND
X_11 => E(7), -- Y7\
X_12 => E(6), -- Y6\
X_13 => E(5), -- Y5\
X_14 => E(4), -- Y4\
X_15 => E(3), -- Y3\
X_16 => E(2), -- Y2\
X_17 => E(1), -- Y1\
X_18 => E(0), -- Y0\
X_19 => OEB, -- E2\
X_20 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_55.vhd
0,0 → 1,77
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS55N: 2-wide 4-input AOI gate (Pinout B) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_55 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_55 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(0 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= not( (J(0) and J(1) and J(2) and J(3)) or
(J(4) and J(5) and J(6) and J(7)) );
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS55N
port map(
X_1 => J(0), -- 1A1
X_2 => J(1), -- 1A2
X_3 => J(2), -- 1A3
X_4 => J(3), -- 1A4
--
--
X_7 => open, -- GND
X_8 => E(0), -- 1Y\
--
X_10 => J(4), -- 1B4
X_11 => J(5), -- 1B3
X_12 => J(6), -- 1B2
X_13 => J(7), -- 1B1
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_563.vhd
0,0 → 1,93
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS563N: 8-bit transparent latch --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_563 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_563 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
signal R : std_logic_vector(7 downto 0); -- Latch
alias OE is J(0);
alias LE is J(1);
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(all) is
begin
if LE = '1' then
R <= std_logic_vector(B);
end if;
end process;
D <= not R when OE = '0' else (others => 'Z');
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS563N
port map(
X_1 => OE, -- OE\
X_2 => B(0), -- D0
X_3 => B(1), -- D1
X_4 => B(2), -- D2
X_5 => B(3), -- D3
X_6 => B(4), -- D4
X_7 => B(5), -- D5
X_8 => B(6), -- D6
X_9 => B(7), -- D7
X_10 => open, -- GND
X_11 => LE, -- LE
X_12 => E(7), -- O7\
X_13 => E(6), -- O6\
X_14 => E(5), -- O5\
X_15 => E(4), -- O4\
X_16 => E(3), -- O3\
X_17 => E(2), -- O2\
X_18 => E(1), -- O1\
X_19 => E(0), -- O0\
X_20 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_564.vhd
0,0 → 1,93
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS564N: 8-bit D flipflop --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_564 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_564 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
signal R : std_logic_vector(7 downto 0); -- Latch
signal CLK : std_logic;
alias OE is J(0);
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(CLK) is
begin
if rising_edge(CLK) then
R <= std_logic_vector(B);
end if;
end process;
D <= not R when OE = '0' else (others => 'Z');
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS564N
port map(
X_1 => OE, -- OE\
X_2 => B(0), -- D0
X_3 => B(1), -- D1
X_4 => B(2), -- D2
X_5 => B(3), -- D3
X_6 => B(4), -- D4
X_7 => B(5), -- D5
X_8 => B(6), -- D6
X_9 => B(7), -- D7
X_10 => open, -- GND
X_11 => CLK, -- CP
X_12 => E(7), -- O7
X_13 => E(6), -- O6
X_14 => E(5), -- O5
X_15 => E(4), -- O4
X_16 => E(3), -- O3
X_17 => E(2), -- O2
X_18 => E(1), -- O1
X_19 => E(0), -- O0
X_20 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_573.vhd
0,0 → 1,93
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS573N: 8-bit transparent latch --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_573 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_573 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
signal R : std_logic_vector(7 downto 0); -- Latch
alias OE is J(0);
alias LE is J(1);
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(all) is
begin
if LE = '1' then
R <= std_logic_vector(B);
end if;
end process;
D <= R when OE = '0' else (others => 'Z');
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS573N
port map(
X_1 => OE, -- OE\
X_2 => B(0), -- D0
X_3 => B(1), -- D1
X_4 => B(2), -- D2
X_5 => B(3), -- D3
X_6 => B(4), -- D4
X_7 => B(5), -- D5
X_8 => B(6), -- D6
X_9 => B(7), -- D7
X_10 => open, -- GND
X_11 => LE, -- LE
X_12 => E(7), -- O7\
X_13 => E(6), -- O6\
X_14 => E(5), -- O5\
X_15 => E(4), -- O4\
X_16 => E(3), -- O3\
X_17 => E(2), -- O2\
X_18 => E(1), -- O1\
X_19 => E(0), -- O0\
X_20 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_574.vhd
0,0 → 1,93
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS574N: 8-bit D flipflop --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_574 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_574 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
signal R : std_logic_vector(7 downto 0); -- Latch
signal CLK : std_logic;
alias OE is J(0);
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(CLK) is
begin
if rising_edge(CLK) then
R <= std_logic_vector(B);
end if;
end process;
D <= R when OE = '0' else (others => 'Z');
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS574N
port map(
X_1 => OE, -- OE\
X_2 => B(0), -- D0
X_3 => B(1), -- D1
X_4 => B(2), -- D2
X_5 => B(3), -- D3
X_6 => B(4), -- D4
X_7 => B(5), -- D5
X_8 => B(6), -- D6
X_9 => B(7), -- D7
X_10 => open, -- GND
X_11 => CLK, -- CP
X_12 => E(7), -- O7
X_13 => E(6), -- O6
X_14 => E(5), -- O5
X_15 => E(4), -- O4
X_16 => E(3), -- O3
X_17 => E(2), -- O2
X_18 => E(1), -- O1
X_19 => E(0), -- O0
X_20 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_64.vhd
0,0 → 1,79
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74S64N: 4-2-3-2 input AND-OR-Invert gate --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_64 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_64 is
signal J, B : unsigned(10 downto 0); -- Test stimuli
signal D, E : std_logic_vector(0 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= not( (J(0) and J(1) and J(2) and J(3)) or
(J(4) and J(5)) or
(J(6) and J(7) and J(8)) or
(J(9) and J(10)) );
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74S64N
port map(
X_1 => J(0), -- 1D1
X_2 => J(4), -- 1A1
X_3 => J(5), -- 1A2
X_4 => J(6), -- 1B1
X_5 => J(7), -- 1B2
X_6 => J(8), -- 1B3
X_7 => open, -- GND
X_8 => E(0), -- 1Y\
X_9 => J(9), -- 1C2
X_10 => J(10), -- 1C1
X_11 => J(1), -- 1D4
X_12 => J(2), -- 1D3
X_13 => J(3), -- 1D2
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_65.vhd
0,0 → 1,79
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74S65N: 4-2-3-2 input AOI gate (open collector) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_65 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_65 is
signal J, B : unsigned(10 downto 0); -- Test stimuli
signal D, E : std_logic_vector(1 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= TTL_OC( not( (J(0) and J(1) and J(2) and J(3)) or
(J(4) and J(5)) or
(J(6) and J(7) and J(8)) or
(J(9) and J(10)) ) );
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74S65N
port map(
X_1 => J(0), -- 1D1
X_2 => J(4), -- 1A1
X_3 => J(5), -- 1A2
X_4 => J(6), -- 1B1
X_5 => J(7), -- 1B2
X_6 => J(8), -- 1B3
X_7 => open, -- GND
X_8 => E(0), -- 1Y\
X_9 => J(9), -- 1C2
X_10 => J(10), -- 1C1
X_11 => J(1), -- 1D4
X_12 => J(2), -- 1D3
X_13 => J(3), -- 1D2
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_670.vhd
0,0 → 1,132
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS670N: 4 X 4 register file (3-state) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_670 is -- Top-level bench
generic(
OC : boolean := true;
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_670 is
subtype T_quad is std_logic_vector(4 downto 1);
type T_mem is array(3 downto 0) of T_quad;
subtype T_addr is natural range 3 downto 0;
 
signal J, B : unsigned(5 downto 0); -- Unused
signal D, E : T_quad; -- Expected & actual results
signal CLK, RS : std_logic;
signal RA, WA : unsigned(1 downto 0) := (others => '0');
signal DI : unsigned(4 downto 0);
signal RE, WE : std_logic := '1';
signal Phase : natural;
 
begin
RA <= J(1 downto 0);
WA <= B(1 downto 0);
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate RAM-specific stimuli
-----------------------------------------------------------------------
CLKX: process(CLK, RS) is
variable ER : std_logic;
begin
ER := '1';
WE <= '1';
if RS = '0' then
DI <= (others => '0');
elsif rising_edge(CLK) then
DI <= DI + 1;
case to_integer(DI) is
when 5 | 6 | 7 | 8 => WE <= '0' after 15 ns;
when 9 |10 | 11 | 12 => ER := '0';
when 16 => DI <= (others => '0');
when others => null;
end case;
RE <= ER;
end if;
end process;
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(all) is
variable mem : T_mem; -- Testbench memory
variable AR, AW : natural;
variable QI : T_quad;
begin
AR := TTL_to_integer(RA);
AW := TTL_to_integer(WA);
D <= (others => 'Z');
if WE = '0' then
mem(AW) := std_logic_vector(DI(3 downto 0));
end if;
if RE = '0' then
QI := mem(AR);
for i in D'range loop
D(i) <= QI(i);
end loop;
end if;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS670N
port map(
X_1 => DI(1), -- D2
X_2 => DI(2), -- D3
X_3 => DI(3), -- D4
X_4 => RA(1), -- RA1
X_5 => RA(0), -- RA0
X_6 => E(4), -- Q4
X_7 => E(3), -- Q3
X_8 => open, -- GND
X_9 => E(2), -- Q2
X_10 => E(1), -- Q1
X_11 => RE, -- RE\
X_12 => WE, -- WE\
X_13 => WA(1), -- WA1
X_14 => WA(0), -- WA0
X_15 => DI(0), -- D1
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_68.vhd
0,0 → 1,125
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS68N: Dual 4-bit decade counter --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_68 is -- Top-level bench
generic(
StimClk : std_logic := '0';
CheckClk : std_logic := '0';
Period : time := 120 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_68 is
signal RS, C0 : std_logic;
signal CLK : std_logic;
signal J, B : unsigned(1 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
-- Low bits: the 2+5 counter
process(B, RS) is
variable Q0 : std_logic;
begin
if RS = '0' then
Q0 := '0';
elsif falling_edge(B(0)) then
Q0 := not Q0;
end if;
D(0) <= Q0;
end process;
process(D, RS) is
variable Q31 : unsigned(2 downto 0);
begin
if RS = '0' then
Q31 := (others => '0');
elsif falling_edge(D(0)) then
case TTL_to_integer(Q31) is
when 4 to 7 => Q31 := Q31 - 4;
when others => Q31 := Q31 + 1;
end case;
end if;
D(3 downto 1) <= std_logic_vector(Q31);
end process;
-- High bits: straight BCD counter
process(B, RS) is
variable Q30 : unsigned(3 downto 0);
begin
if RS = '0' then
Q30 := (others => '0');
elsif falling_edge(B(1)) then
case TTL_to_integer(Q30) is
when 9 => Q30 := "0000";
when 11 => Q30 := "0010";
when 13 => Q30 := "0100";
when 15 => Q30 := "0110";
when others => Q30 := Q30 + 1;
end case;
end if;
D(7 downto 4) <= std_logic_vector(Q30);
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS68N
port map(
X_1 => B(0), -- 1CLKA
X_2 => E(1), -- 1QB
X_3 => E(3), -- 1QD
X_4 => RS, -- \1CLR
X_5 => E(6), -- 2QC
--
X_7 => E(4), -- 2QA
X_8 => open, -- GND
X_9 => B(1), -- 2CLK
X_10 => E(5), -- 2QB
X_11 => RS, -- \2CLR
X_12 => E(7), -- 2QD
X_13 => E(2), -- 1QC
X_14 => C0, -- 1QA
X_15 => C0, -- 1CLKB
X_16 => open -- Vcc
);
E(0) <= C0;
end architecture Test;
/trunk/Testbench/Testbench_69.vhd
0,0 → 1,116
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS69N: Dual 4-bit binary counter --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_69 is -- Top-level bench
generic(
StimClk : std_logic := '0';
CheckClk : std_logic := '0';
Period : time := 120 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_69 is
signal RS, C0 : std_logic;
signal CLK : std_logic;
signal J, B : unsigned(1 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
-- Low bits: the 2+8 counter
process(B, RS) is
variable Q0 : std_logic;
begin
if RS = '0' then
Q0 := '0';
elsif falling_edge(B(0)) then
Q0 := not Q0;
end if;
D(0) <= Q0;
end process;
process(D, RS) is
variable Q31 : unsigned(2 downto 0);
begin
if RS = '0' then
Q31 := (others => '0');
elsif falling_edge(D(0)) then
Q31 := Q31 + 1;
end if;
D(3 downto 1) <= std_logic_vector(Q31);
end process;
-- High bits: straight binary counter
process(B, RS) is
variable Q30 : unsigned(3 downto 0);
begin
if RS = '0' then
Q30 := (others => '0');
elsif falling_edge(B(1)) then
Q30 := Q30 + 1;
end if;
D(7 downto 4) <= std_logic_vector(Q30);
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS69N
port map(
X_1 => B(0), -- 1CLKA
X_2 => E(1), -- 1QB
X_3 => E(3), -- 1QD
X_4 => RS, -- \1CLR
X_5 => E(6), -- 2QC
--
X_7 => E(4), -- 2QA
X_8 => open, -- GND
X_9 => B(1), -- 2CLK
X_10 => E(5), -- 2QB
X_11 => RS, -- \2CLR
X_12 => E(7), -- 2QD
X_13 => E(2), -- 1QC
X_14 => C0, -- 1QA
X_15 => C0, -- 1CLKB
X_16 => open -- Vcc
);
E(0) <= C0;
end architecture Test;
/trunk/Testbench/Testbench_70.vhd
0,0 → 1,99
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS70N: JK edge-triggered flipflop (Pinout A) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_70 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 120 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_70 is
signal RS, CLK : std_logic;
signal J, K : std_logic;
signal JC, BC : unsigned(5 downto 0); -- Test stimuli
signal D, E : std_logic_vector(1 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
SIM: process(CLK, RS) is
variable JK : std_logic_vector(1 downto 0);
begin
if RS = '0' then
D(0) <= '0';
elsif rising_edge(CLK) then
JK := J & K;
case JK is
when "00" => null;
when "01" => D(0) <= '0';
when "10" => D(0) <= '1';
when "11" => D(0) <= not D(0);
when others => null;
end case;
end if;
end process;
D(1) <= not D(0);
J <= BC(0) and BC(1) and not BC(2);
K <= BC(3) and BC(4) and not BC(5);
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS70N
port map(
--
X_2 => RS, -- CD\
X_3 => BC(0), -- J1
X_4 => BC(1), -- J2
X_5 => BC(2), -- J3\
X_6 => E(1), -- Q\
X_7 => open, -- GND
X_8 => E(0), -- Q
X_9 => BC(5), -- K3\
X_10 => BC(3), -- K1
X_11 => BC(4), -- K2
X_12 => CLK, -- CP
X_13 => '1', -- SD\
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_71.vhd
0,0 → 1,99
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS71N: JK master-slave flipflop (AND/OR inputs) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_71 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 120 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_71 is
signal RS, J, K : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(1 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
SIM: process(CLK, RS) is
variable JK : std_logic_vector(1 downto 0);
begin
if RS = '0' then -- Here, set
D(0) <= '1';
elsif falling_edge(CLK) then
JK := J & K;
case JK is
when "00" => null;
when "01" => D(0) <= '0';
when "10" => D(0) <= '1';
when "11" => D(0) <= not D(0);
when others => null;
end case;
end if;
end process;
D(1) <= not D(0);
J <= (BC(0) and BC(1)) or (BC(2) and BC(3));
K <= (BC(4) and BC(5)) or (BC(6) and BC(7));
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS71N
port map(
X_1 => BC(0), -- J1A
X_2 => BC(1), -- J1B
X_3 => BC(2), -- J2A
X_4 => BC(3), -- J2B
X_5 => RS, -- SD\
X_6 => E(0), -- Q
X_7 => open, -- GND
X_8 => E(1), -- Q\
X_9 => BC(4), -- K1A
X_10 => BC(5), -- K1B
X_11 => BC(6), -- K2A
X_12 => BC(7), -- K2B
X_13 => CLK, -- CP
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_72.vhd
0,0 → 1,99
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS72N: JK master-slave flipflop (AND inputs) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_72 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 120 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_72 is
signal RS, J, K : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(5 downto 0); -- Test stimuli
signal D, E : std_logic_vector(1 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
SIM: process(CLK, RS) is
variable JK : std_logic_vector(1 downto 0);
begin
if RS = '0' then
D(0) <= '0';
elsif falling_edge(CLK) then
JK := J & K;
case JK is
when "00" => null;
when "01" => D(0) <= '0';
when "10" => D(0) <= '1';
when "11" => D(0) <= not D(0);
when others => null;
end case;
end if;
end process;
D(1) <= not D(0);
J <= BC(0) and BC(1) and BC(2);
K <= BC(3) and BC(4) and BC(5);
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS72N
port map(
--
X_2 => RS, -- CD\
X_3 => BC(0), -- J1
X_4 => BC(1), -- J2
X_5 => BC(2), -- J3
X_6 => E(1), -- Q\
X_7 => open, -- GND
X_8 => E(0), -- Q
X_9 => BC(3), -- K1
X_10 => BC(4), -- K2
X_11 => BC(5), -- K3
X_12 => CLK, -- CP\
X_13 => '1', -- SD\
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_73.vhd
0,0 → 1,98
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS73N: Dual JK flipflop --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_73 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 120 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_73 is
signal RS : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(3 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
G: for i in 1 downto 0 generate
begin
SIM: process(CLK, RS) is
variable JK : std_logic_vector(1 downto 0);
begin
if RS = '0' then
D(i) <= '0';
elsif falling_edge(CLK) then
JK := BC(i) & BC(2+i);
case JK is
when "00" => null;
when "01" => D(i) <= '0';
when "10" => D(i) <= '1';
when "11" => D(i) <= not D(i);
when others => null;
end case;
end if;
end process;
D(i+2) <= not D(i);
end generate;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS73N
port map(
X_1 => CLK, -- CP1\
X_2 => RS, -- CD1\
X_3 => BC(2), -- K1
X_4 => open, -- Vcc
X_5 => CLK, -- CP2\
X_6 => RS, -- CD2\
X_7 => BC(1), -- J2
X_8 => E(3), -- Q2\
X_9 => E(1), -- Q2
X_10 => BC(3), -- K2
X_11 => open, -- GND
X_12 => E(0), -- Q1
X_13 => E(2), -- Q1\
X_14 => BC(0) -- J1
);
end architecture Test;
/trunk/Testbench/Testbench_74.vhd
0,0 → 1,90
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS74N: Dual D-type +ve edge-triggered flipflop --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_74 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 120 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_74 is
signal RS : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(1 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
G: for i in 1 downto 0 generate
begin
SIM: process(CLK, RS) is
begin
if RS = '0' then
D(i) <= '0';
elsif rising_edge(CLK) then
D(i) <= BC(i);
end if;
end process;
D(i+2) <= not D(i);
end generate;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS74N
port map(
X_1 => RS, -- CD1\
X_2 => BC(0), -- D1
X_3 => CLK, -- CP1
X_4 => '1', -- SD1\
X_5 => E(0), -- Q1
X_6 => E(2), -- Q1\
X_7 => open, -- GND
X_8 => E(3), -- Q2\
X_9 => E(1), -- Q2
X_10 => '1', -- SD2\
X_11 => CLK, -- CP2
X_12 => BC(1), -- D2
X_13 => RS, -- CD2\
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_75.vhd
0,0 → 1,100
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS75N: 4-bit bistable latch --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_75 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_75 is
signal CLK : std_logic;
signal J, B : unsigned(5 downto 0); -- Test stimuli
signal D, E : std_logic_vector(7 downto 0); -- Expected & actual results
signal S : std_logic_vector(3 downto 0);
signal E12, E34 : std_logic;
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(CLK) is
begin
if falling_edge(CLK) then
E12 <= J(4), '0' after 45 ns;
E34 <= J(5), '0' after 45 ns;
end if;
end process;
S <= (E34, E34, E12, E12);
G1: for i in 3 downto 0 generate
begin
process(S, J) is
begin
if S(i) = '1' then
D(i) <= J(i);
D(i+4) <= not J(i);
end if;
end process;
end generate;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS75N
port map(
X_1 => E(4), -- Q1\
X_2 => J(0), -- D1
X_3 => J(1), -- D2
X_4 => E34, -- E34
X_5 => open, -- Vcc
X_6 => J(2), -- D3
X_7 => J(3), -- D4
X_8 => E(7), -- Q4\
X_9 => E(3), -- Q4
X_10 => E(6), -- Q3\
X_11 => E(2), -- Q3
X_12 => open, -- GND
X_13 => E12, -- E12
X_14 => E(5), -- Q2\
X_15 => E(1), -- Q2
X_16 => E(0) -- Q1
);
end architecture Test;
/trunk/Testbench/Testbench_76.vhd
0,0 → 1,100
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS76N: Dual JK flipflop --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_76 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 120 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_76 is
signal RS : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(3 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
G: for i in 1 downto 0 generate
begin
SIM: process(CLK, RS) is
variable JK : std_logic_vector(1 downto 0);
begin
if RS = '0' then
D(i) <= '0';
elsif falling_edge(CLK) then
JK := BC(i) & BC(2+i);
case JK is
when "00" => null;
when "01" => D(i) <= '0';
when "10" => D(i) <= '1';
when "11" => D(i) <= not D(i);
when others => null;
end case;
end if;
end process;
D(i+2) <= not D(i);
end generate;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS76N
port map(
X_1 => CLK, -- CP1\
X_2 => '1', -- SD1\
X_3 => RS, -- CD1\
X_4 => BC(0), -- J1
X_5 => open, -- Vcc
X_6 => CLK, -- CP2\
X_7 => '1', -- SD2\
X_8 => RS, -- CD2\
X_9 => BC(1), -- J2
X_10 => E(3), -- Q2\
X_11 => E(1), -- Q2
X_12 => BC(3), -- K2
X_13 => open, -- GND
X_14 => E(2), -- Q1\
X_15 => E(0), -- Q1
X_16 => BC(2) -- K1
);
end architecture Test;
/trunk/Testbench/Testbench_77.vhd
0,0 → 1,87
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS77N: Quad D-type latch --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_77 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_77 is
signal J, B : unsigned(5 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
signal S : std_logic_vector(3 downto 0);
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
S <= (J(5), J(5), J(4), J(4));
G1: for i in 3 downto 0 generate
begin
process(S, J) is
begin
if S(i) = '1' then
D(i) <= J(i);
end if;
end process;
end generate;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS77N
port map(
X_1 => J(0), -- D1
X_2 => J(1), -- D2
X_3 => J(5), -- E34
X_4 => open, -- Vcc
X_5 => J(2), -- D3
X_6 => J(3), -- D4
--
X_8 => E(3), -- Q4
X_9 => E(2), -- Q3
--
X_11 => open, -- GND
X_12 => J(4), -- E12
X_13 => E(1), -- Q2
X_14 => E(0) -- Q1
);
end architecture Test;
/trunk/Testbench/Testbench_78.vhd
0,0 → 1,98
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS78N: Dual JK flipflop (Pinout A) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_78 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 120 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_78 is
signal RS : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(3 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
G: for i in 1 downto 0 generate
begin
SIM: process(CLK, RS) is
variable JK : std_logic_vector(1 downto 0);
begin
if RS = '0' then
D(i) <= '0';
elsif falling_edge(CLK) then
JK := BC(i) & BC(2+i);
case JK is
when "00" => null;
when "01" => D(i) <= '0';
when "10" => D(i) <= '1';
when "11" => D(i) <= not D(i);
when others => null;
end case;
end if;
end process;
D(i+2) <= not D(i);
end generate;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS78N
port map(
X_1 => BC(2), -- K1
X_2 => E(0), -- Q1
X_3 => E(2), -- Q1\
X_4 => BC(0), -- J1
X_5 => E(3), -- Q2\
X_6 => E(1), -- Q2
X_7 => open, -- GND
X_8 => BC(3), -- K2
X_9 => CLK, -- CP\
X_10 => '1', -- SD2\
X_11 => BC(1), -- J2
X_12 => RS, -- CD\
X_13 => '1', -- SD1\
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_80.vhd
0,0 → 1,96
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN7480N: Gated full adder (Pinout A) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_80 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_80 is
signal JC, BC : unsigned(6 downto 0); -- Test stimuli
signal D, E : std_logic_vector(2 downto 0); -- Expected & actual results
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(BC) is
variable AX, BX, A, B : std_logic;
variable IP : std_logic_vector(2 downto 0);
begin
AX := not (BC(3) and BC(4));
BX := not (BC(5) and BC(6));
A := not (AX and BC(1));
B := not (BX and BC(2));
IP := (BC(0), B, A);
case IP is
when "000" => D(2) <= '1'; D(1) <= '1'; D(0) <= '0';
when "001" => D(2) <= '1'; D(1) <= '0'; D(0) <= '1';
when "010" => D(2) <= '1'; D(1) <= '0'; D(0) <= '1';
when "011" => D(2) <= '0'; D(1) <= '1'; D(0) <= '0';
when "100" => D(2) <= '0'; D(1) <= '0'; D(0) <= '1';
when "101" => D(2) <= '1'; D(1) <= '1'; D(0) <= '0';
when "110" => D(2) <= '1'; D(1) <= '1'; D(0) <= '0';
when "111" => D(2) <= '0'; D(1) <= '0'; D(0) <= '1';
when others => D <= (others => 'X');
end case;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN7480N
port map(
-- BX
X_2 => BC(2), -- BC
X_3 => BC(0), -- CN
X_4 => E(2), -- CNP1\
X_5 => E(0), -- S
X_6 => E(1), -- S\
X_7 => open, -- GND
X_8 => BC(3), -- A1
X_9 => BC(4), -- A2
-- AX
X_11 => BC(1), -- AC
X_12 => BC(5), -- B1
X_13 => BC(6), -- B2
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_82.vhd
0,0 → 1,84
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN7482N: 2-bit full adder --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_82 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_82 is
signal JC, BC : unsigned(4 downto 0); -- Test stimuli
signal D, E : std_logic_vector(2 downto 0); -- Expected & actual results
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(BC) is
variable A, B, C : unsigned(2 downto 0);
begin
A := ('0', BC(1), BC(3));
B := ('0', BC(0), BC(2));
C := A + B + BC(4);
(D(2), D(0), D(1)) <= C;
end process;
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN7482N
port map(
X_1 => E(1), -- S1
X_2 => BC(3), -- A1
X_3 => BC(2), -- B1
X_4 => open, -- Vcc
X_5 => BC(4), -- CIN
--
--
--
--
X_10 => E(2), -- C2
X_11 => open, -- GND
X_12 => E(0), -- S2
X_13 => BC(0), -- B2
X_14 => BC(1) -- A2
);
end architecture Test;
/trunk/Testbench/Testbench_83.vhd
0,0 → 1,89
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS83AN: 4-bit binary full adder (fast carry) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_83 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_83 is
signal JC, BC : unsigned(8 downto 0); -- Test stimuli
signal D, E : std_logic_vector(4 downto 0); -- Expected & actual results
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(JC) is
variable X, Y, Z : natural := 0;
begin
if now > 1 ns then -- Meaningless to run at T=0
X := TTL_to_integer(JC(7 downto 4));
Y := TTL_to_integer(JC(3 downto 0));
Z := TTL_to_integer(JC(8 downto 8));
Z := Z + X + Y;
end if;
D <= std_logic_vector(to_unsigned(Z, D'length));
end process;
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS83AN
port map(
X_1 => JC(3), -- A3
X_2 => E(2), -- S2
X_3 => JC(2), -- A2
X_4 => JC(6), -- B2
X_5 => open, -- Vcc
X_6 => E(1), -- S1
X_7 => JC(5), -- B1
X_8 => JC(1), -- A1
X_9 => E(0), -- S0
X_10 => JC(0), -- A0
X_11 => JC(4), -- B0
X_12 => open, -- GND
X_13 => JC(8), -- C0
X_14 => E(4), -- C4
X_15 => E(3), -- S3
X_16 => JC(7) -- B3
);
end architecture Test;
/trunk/Testbench/Testbench_85.vhd
0,0 → 1,105
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS85N: 4-bit magnitude comparator --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_85 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_85 is
signal JC, BC : unsigned(10 downto 0); -- Test stimuli
signal D, E : std_logic_vector(2 downto 0); -- Expected & actual results
alias inLT is JC(10);
alias inEQ is JC( 9);
alias inGT is JC( 8);
alias A is JC(7 downto 4);
alias B is JC(3 downto 0);
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(JC) is
variable LT, EQ, GT : std_logic;
variable INCOND : std_logic_vector(2 downto 0);
begin
LT := '0';
EQ := '0';
GT := '0';
if A < B then LT := '1';
elsif A > B then GT := '1';
else
INCOND := inGT & inLT & inEQ;
case INCOND is
when "100" => GT := '1';
when "010" => LT := '1';
when "000" => GT := '1'; LT := '1';
when "110" => null;
when others => EQ := '1';
end case;
end if;
D <= (LT, EQ, GT);
end process;
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS85N
port map(
X_1 => JC(3), -- B3
X_2 => inLT, -- IA<B
X_3 => inEQ, -- IA=B
X_4 => inGT, -- IA>B
X_5 => E(0), -- OA>B
X_6 => E(1), -- OA=B
X_7 => E(2), -- OA<B
X_8 => open, -- GND
X_9 => JC(0), -- B0
X_10 => JC(4), -- A0
X_11 => JC(1), -- B1
X_12 => JC(5), -- A1
X_13 => JC(6), -- A2
X_14 => JC(2), -- B2
X_15 => JC(7), -- A3
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_86.vhd
0,0 → 1,79
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS86N: Quad 2-input XOR gate --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_86 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_86 is
signal J, B : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
D(0) <= J(0) xor J(1);
D(1) <= J(2) xor J(3);
D(2) <= J(4) xor J(5);
D(3) <= J(6) xor J(7);
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS86N
port map(
X_1 => J(0), -- 1A
X_2 => J(1), -- 1B
X_3 => E(0), -- 1Y\
X_4 => J(2), -- 2A
X_5 => J(3), -- 2B
X_6 => E(1), -- 2Y\
X_7 => open, -- GND
X_8 => E(2), -- 3Y\
X_9 => J(4), -- 3B
X_10 => J(5), -- 3A
X_11 => E(3), -- 4Y\
X_12 => J(6), -- 4B
X_13 => J(7), -- 4A
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_87.vhd
0,0 → 1,84
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74H87N: 4-bit true/complement, zero-one element --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_87 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '0';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_87 is
signal J, B : unsigned(5 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => open,
RS => open,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(J) is
variable S1, S2 : std_logic;
begin
S1 := not J(0);
S2 := J(1);
for i in E'range loop
D(i) <= S2 xor (not(S1 and J(i+2)));
end loop;
end process;
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74H87N
port map(
X_1 => J(1), -- S2
X_2 => J(2), -- I1
X_3 => E(0), -- Q1
--
X_5 => J(3), -- I2
X_6 => E(1), -- Q2
X_7 => open, -- GND
X_8 => J(0), -- S1
X_9 => E(2), -- Q3
X_10 => J(4), -- I3
--
X_12 => E(3), -- Q4
X_13 => J(5), -- I4
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_89.vhd
0,0 → 1,153
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS89N: 64-bit RAM (open collector) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_89 is -- Top-level bench
generic(
OC : boolean := true;
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 120 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_89 is
signal J, B : unsigned(5 downto 0); -- Unused
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
signal CLK, RS : std_logic;
signal CS, WR : std_logic := '1';
signal AD : TTLword := (others => '0');
signal DI, Q, QQ : TTLquad;
signal CE, WE : std_logic;
 
signal W : std_logic;
signal Phase : natural;
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate RAM-specific stimuli
-----------------------------------------------------------------------
CLKX: process(CLK, RS) is
begin
if RS = '0' then
Phase <= 0;
CS <= '1';
WR <= '1';
elsif rising_edge(CLK) then
case Phase is
when 0 => CS <= '0'; Phase <= 1;
when 1 => WR <= W; Phase <= 2;
when 2 => WR <= '1'; Phase <= 3;
when others => CS <= '1'; WR <= '1'; Phase <= 0;
end case;
end if;
end process;
UPDATE: process(CLK, RS) is
variable TD : unsigned(3 downto 0);
begin
if RS = '0' then
W <= '0';
AD <= (others => '0');
TD := "0110";
elsif rising_edge(CLK) and Phase = 3 then
if AD = "1111" then
W <= not W; -- Alternate read/write cycles
end if;
AD <= AD + 1;
TD := TD + 1;
end if;
for i in TD'range loop
DI(i+1) <= TD(i);
end loop;
end process;
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
CE <= WR and not CS;
WE <= not(WR or CS);
process(CE, WE, AD, DI) is
variable mem : TTLmem; -- Testbench memory
variable adr : TTLaddr;
variable QI : TTLquad;
begin
adr := TTL_to_integer(AD);
if WE'event and WE = '1' then
mem(adr) := not DI; -- Data is output inverted
end if;
if CE = '1' then
QI := mem(adr);
else
QI := (others => 'Z');
end if;
if OC then
for i in Q'range loop
Q(i) <= TTL_OC(QI(i));
end loop;
else
Q <= QI;
end if;
end process;
D <= Q;
E <= QQ;
 
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS89N
port map(
X_1 => AD(0), -- A0
X_2 => CS, -- CS\
X_3 => WR, -- WE\
X_4 => DI(1), -- D1
X_5 => QQ(1), -- Q1\
X_6 => DI(2), -- D2
X_7 => QQ(2), -- Q2\
X_8 => open, -- GND
X_9 => QQ(3), -- Q3\
X_10 => DI(3), -- D3
X_11 => QQ(4), -- Q4\
X_12 => DI(4), -- D4
X_13 => AD(3), -- A3
X_14 => AD(2), -- A2
X_15 => AD(1), -- A1
X_16 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_90.vhd
0,0 → 1,106
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS90AN: Decade counter (ripple) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_90 is -- Top-level bench
generic(
StimClk : std_logic := '0';
CheckClk : std_logic := '1';
Period : time := 120 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_90 is
signal RS, NRS, C0 : std_logic;
signal CLK : std_logic;
signal J, B : unsigned(1 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
RS <= not NRS;
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => NRS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(B, RS) is
variable Q0 : std_logic;
begin
if RS = '1' then
Q0 := '0';
elsif falling_edge(B(0)) then
Q0 := not Q0;
end if;
D(0) <= Q0;
end process;
process(D, RS) is
variable Q31 : unsigned(2 downto 0);
begin
if RS = '1' then
Q31 := (others => '0');
elsif falling_edge(D(0)) then
case TTL_to_integer(Q31) is
when 4 to 7 => Q31 := Q31 - 4;
when others => Q31 := Q31 + 1;
end case;
end if;
D(3 downto 1) <= std_logic_vector(Q31);
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS90AN
port map(
X_1 => C0, -- CP1\
X_2 => RS, -- MR1
X_3 => RS, -- MR2
--
X_5 => open, -- Vcc
X_6 => '0', -- MS1
X_7 => '0', -- MS2
X_8 => E(2), -- Q2
X_9 => E(1), -- Q1
X_10 => open, -- GND
X_11 => E(3), -- Q3
X_12 => C0, -- Q0
--
X_14 => B(0) -- CP0\
);
E(0) <= C0;
end architecture Test;
/trunk/Testbench/Testbench_91.vhd
0,0 → 1,86
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS91AN: 8-bit shift register (Pinout A) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_91 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 120 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_91 is
signal RS : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(2 downto 0); -- Test stimuli
signal D, E : std_logic_vector(1 downto 0); -- Expected & actual results
 
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(CLK) is
variable SR : std_logic_vector(7 downto 0) := (others => 'U');
begin
if rising_edge(CLK) then
SR := SR(6 downto 0) & nand_reduce(std_logic_vector(JC(1 downto 0)));
D(0) <= SR(7);
D(1) <= not SR(7);
end if;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS91AN
port map(
--
--
--
--
X_5 => open, -- Vcc
--
--
--
X_9 => CLK, -- CP
X_10 => open, -- GND
X_11 => JC(1), -- B
X_12 => JC(0), -- A
X_13 => E(0), -- Q
X_14 => E(1) -- Q\
);
end architecture Test;
/trunk/Testbench/Testbench_92.vhd
0,0 → 1,107
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS92N: Divide-by-12 counter (ripple) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_92 is -- Top-level bench
generic(
StimClk : std_logic := '0';
CheckClk : std_logic := '1';
Period : time := 120 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_92 is
signal RS, NRS, C0 : std_logic;
signal CLK : std_logic;
signal J, B : unsigned(1 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
RS <= not NRS;
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => NRS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(B, RS) is
variable Q0 : std_logic;
begin
if RS = '1' then
Q0 := '0';
elsif falling_edge(B(0)) then
Q0 := not Q0;
end if;
D(0) <= Q0;
end process;
process(D, RS) is
variable Q31 : unsigned(2 downto 0);
begin
if RS = '1' then
Q31 := (others => '0');
elsif falling_edge(D(0)) then
case TTL_to_integer(Q31) is
when 3 | 6 => Q31 := "000";
when 2 => Q31 := "100";
when others => Q31 := Q31 + 1;
end case;
end if;
D(3 downto 1) <= std_logic_vector(Q31);
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS92N
port map(
X_1 => C0, -- CP1\
--
--
--
X_5 => open, -- Vcc
X_6 => RS, -- MR1
X_7 => RS, -- MR2
X_8 => E(3), -- Q3
X_9 => E(2), -- Q2
X_10 => open, -- GND
X_11 => E(1), -- Q1
X_12 => C0, -- Q0
--
X_14 => B(0) -- CP0\
);
E(0) <= C0;
end architecture Test;
/trunk/Testbench/Testbench_93.vhd
0,0 → 1,103
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS93N: Divide-by-16 (binary) counter (ripple) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_93 is -- Top-level bench
generic(
StimClk : std_logic := '0';
CheckClk : std_logic := '1';
Period : time := 150 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_93 is
signal RS, NRS, C0 : std_logic;
signal CLK : std_logic;
signal J, B : unsigned(1 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
 
begin
RS <= not NRS;
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => NRS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(B, RS) is
variable Q0 : std_logic;
begin
if RS = '1' then
Q0 := '0';
elsif falling_edge(B(0)) then
Q0 := not Q0;
end if;
D(0) <= Q0;
end process;
process(D, RS) is
variable Q31 : unsigned(2 downto 0);
begin
if RS = '1' then
Q31 := (others => '0');
elsif falling_edge(D(0)) then
Q31 := Q31 + 1;
end if;
D(3 downto 1) <= std_logic_vector(Q31);
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS93N
port map(
X_1 => C0, -- CP1\
X_2 => RS, -- MR1
X_3 => RS, -- MR2
--
X_5 => open, -- Vcc
--
--
X_8 => E(2), -- Q2
X_9 => E(1), -- Q1
X_10 => open, -- GND
X_11 => E(3), -- Q3
X_12 => C0, -- Q0
--
X_14 => B(0) -- CP0\
);
E(0) <= C0;
end architecture Test;
/trunk/Testbench/Testbench_94.vhd
0,0 → 1,118
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS94N: 4-bit shift register --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_94 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 100 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_94 is
signal RS, RSH : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(0 downto 0); -- Expected & actual results
signal L1, L2 : std_logic;
signal P1, P2, LR : std_logic_vector(3 downto 0);
alias DS is BC(0);
begin
RSH <= not RS;
P1 <= std_logic_vector(BC(3 downto 0));
P2 <= std_logic_vector(BC(7 downto 4));
process(RS, CLK) is
variable X : unsigned(5 downto 0);
begin
if RSH = '1' then
L1 <= '0';
L2 <= '0';
elsif falling_edge(CLK) then -- Inactive clock edge
X := BC(5 downto 0);
case X is
when "010101" => L1 <= '1';
when "101010" => L2 <= '1';
when others => L1 <= '0'; L2 <= '0';
end case;
end if;
end process;
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(CLK, RS, L1, L2) is
variable SR : std_logic_vector(3 downto 0);
begin
if RS = '0' then
SR := (others => '0');
elsif (L1 or L2) = '1' then -- Asynchronous load
for i in SR'range loop
SR(i) := SR(i) or (L1 and P1(i)) or (L2 and P2(i));
end loop;
elsif rising_edge(CLK) then
SR := SR(2 downto 0) & DS;
end if;
D(0) <= SR(3);
LR <= SR; -- Visibility
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS94N
port map(
X_1 => P1(0), -- P1A
X_2 => P1(1), -- P1B
X_3 => P1(2), -- P1C
X_4 => P1(3), -- P1D
X_5 => open, -- Vcc
X_6 => L1, -- PL1
X_7 => DS, -- DS
X_8 => CLK, -- CP
X_9 => E(0), -- QD
X_10 => RSH, -- CL
X_11 => P2(3), -- P2D
X_12 => open, -- GND
X_13 => P2(2), -- P2C
X_14 => P2(1), -- P2B
X_15 => L2, -- PL2
X_16 => P2(0) -- P2A
);
end architecture Test;
/trunk/Testbench/Testbench_95.vhd
0,0 → 1,114
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS95N: 4-bit right/left shift register --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_95 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 50 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_95 is
signal RS : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(3 downto 0); -- Test stimuli
signal D, E : std_logic_vector(3 downto 0); -- Expected & actual results
signal P : std_logic_vector(3 downto 0);
signal CP1, CP2, PE, DS : std_logic := '1';
begin
P <= std_logic_vector(JC(3 downto 0));
DS <= JC(1);
process(CLK, RS) is -- Generate special clocks, etc.
variable X : unsigned(3 downto 0);
variable IPE, IC1, IC2 : std_logic := '1';
begin
if rising_edge(CLK) then
CP1 <= IC1;
CP2 <= IC2;
IC1 := '1';
IC2 := '1';
X := BC(X'range);
if (X = "1000") or (RS = '0') then
IPE := '1';
IC2 := '0'; -- Load
else
IPE := '0';
IC1 := '0'; -- Shift
end if;
elsif falling_edge(CLK) then
CP1 <= '1';
CP2 <= '1';
PE <= IPE;
end if;
end process;
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(CP1, CP2) is
begin
if falling_edge(CP1) and PE = '0' then
D <= D(2 downto 0) & DS;
elsif falling_edge(CP2) and PE = '1' then
D <= P;
end if;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS95N
port map(
X_1 => DS, -- DS
X_2 => P(0), -- P0
X_3 => P(1), -- P1
X_4 => P(2), -- P2
X_5 => P(3), -- P3
X_6 => PE, -- PE
X_7 => open, -- GND
X_8 => CP2, -- CP2\
X_9 => CP1, -- CP1\
X_10 => E(3), -- Q3
X_11 => E(2), -- Q2
X_12 => E(1), -- Q1
X_13 => E(0), -- Q0
X_14 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_96.vhd
0,0 → 1,114
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- June, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for SN74LS96N: 5-bit shift register --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
use work.LSTTL.all;
use work.TTLPrivate.all;
entity Testbench_96 is -- Top-level bench
generic(
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 120 ns;
Finish : time := 20 us;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_96 is
signal RS, RSX : std_logic;
signal CLK : std_logic;
signal JC, BC : unsigned(7 downto 0); -- Test stimuli
signal D, E : std_logic_vector(4 downto 0); -- Expected & actual results
signal L : std_logic := '0';
signal P : std_logic_vector(4 downto 0);
alias DS is BC(0);
begin
P <= std_logic_vector(BC(4 downto 0));
process(RS, CLK) is
variable X : unsigned(5 downto 0);
begin
if RS = '0' then
RSX <= '0';
L <= '0';
elsif falling_edge(CLK) then
X := BC(5 downto 0);
case X is
when "000010" => RSX <= '1';
when "001111" => RSX <= '0', '1' after 50 ns;
when "010011" => L <= '1', '0' after 50 ns; -- Just a short pulse
when others => null;
end case;
end if;
end process;
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => JC,
B => BC,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(CLK, RSX, L) is
variable SR : std_logic_vector(4 downto 0);
begin
if RSX = '0' then
SR := (others => '0');
elsif L = '1' then -- Asynchronous load
SR := SR or P;
elsif rising_edge(CLK) then
SR := SR(3 downto 0) & DS;
end if;
D <= SR;
end process;
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: SN74LS96N
port map(
X_1 => CLK, -- CP
X_2 => P(0), -- P0
X_3 => P(1), -- P1
X_4 => P(2), -- P2
X_5 => open, -- Vcc
X_6 => P(3), -- P3
X_7 => P(4), -- P4
X_8 => L, -- PL
X_9 => DS, -- DS
X_10 => E(4), -- Q4
X_11 => E(3), -- Q3
X_12 => open, -- GND
X_13 => E(2), -- Q2
X_14 => E(1), -- Q1
X_15 => E(0), -- Q0
X_16 => RSX -- CL\
);
end architecture Test;
/trunk/Testbench/Testbench_CY7C1021.vhd
0,0 → 1,210
-----------------------------------------------------------------------
-- Basic SRAM models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for CY7C1021: 64k x 16 SRAM (Cypress, 10 ns) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
 
use work.TTLPrivate.all;
use work.Memories.all;
entity Testbench_CY7C1021 is -- Top-level bench
generic(
OC : boolean := false;
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 100 ns;
Finish : time := 30 ms;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_CY7C1021 is
subtype TDATA is std_logic_vector(15 downto 0);
subtype TADDR is unsigned(15 downto 0);
constant KADTOP : natural := (2**(TADDR'high+1))-1;
subtype TADNUM is natural range KADTOP downto 0;
type TMEM is array(KADTOP downto 0) of TDATA;
 
signal J, B : unsigned(10 downto 0); -- Unused
signal D, E : TDATA; -- Expected & actual results
signal CLK, RS : std_logic;
signal CS, WR : std_logic := '1';
signal AD : TADDR := (others => '0');
signal DI : TDATA;
signal W : std_logic;
signal Phase : natural;
signal OE : std_logic;
signal BHE, BLE : std_logic;
constant AD1 : TADDR := (others => '1');
constant ID1 : unsigned(TDATA'range) := "0000000000000010";
begin
BHE <= '0';
BLE <= '0';
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate RAM-specific stimuli
-----------------------------------------------------------------------
CLKX: process(CLK, RS) is
begin
if RS = '0' then
Phase <= 0;
CS <= '1';
WR <= '1';
OE <= '1';
elsif rising_edge(CLK) then
case Phase is
when 0 => CS <= '0'; Phase <= 1; OE <= '1';
when 1 => WR <= W; Phase <= 2; OE <= not W;
when 2 => WR <= '1'; Phase <= 3; OE <= '1';
when others => CS <= '1'; WR <= '1'; Phase <= 0; OE <= '1';
end case;
end if;
end process;
UPDATE: process(CLK, RS) is
variable TD : unsigned(TDATA'range);
begin
if RS = '0' then
W <= '0';
AD <= (others => '0');
TD := ID1;
elsif rising_edge(CLK) and Phase = 3 then
if AD = AD1 then
W <= not W; -- Alternate read/write cycles
end if;
AD <= AD + 1;
TD := TD + 1;
end if;
DI <= TDATA(TD);
end process;
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(all) is
variable mem : TMEM; -- Testbench memory
variable adr : TADNUM;
variable QI : TDATA;
begin
D <= E; -- Default, if not active
if CS = '0' then -- Device active
adr := TTL_to_integer(AD);
if rising_edge(WR) then -- Rising (ie trailing) edge
mem(adr) := DI;
end if;
if OE = '0' then -- Reading
QI := mem(adr);
else
QI := (others => 'Z');
end if;
if OC then -- Simulate open collector
for i in D'range loop
D(i) <= TTL_OC(QI(i));
end loop;
else
D <= QI;
end if;
end if;
end process;
process(CLK) is -- During writes, mimic the data
begin
if falling_edge(CLK) then
if W = '0' then
case Phase is
when 1 | 2 => D <= E;
when others => D <= (others => 'Z');
end case;
end if;
end if;
end process;
E <= DI when (W = '0') and (Phase = 1 or Phase = 2) else (others => 'Z');
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: CY7C1021
generic map(
fnevn => "", -- Name of even-byte initialisation file (if any)
fnodd => "" -- Name of odd-byte initialisation file (if any)
)
port map(
X_1 => AD(4), -- A4
X_2 => AD(3), -- A3
X_3 => AD(2), -- A2
X_4 => AD(1), -- A1
X_5 => AD(0), -- A0
X_6 => CS, -- CE\
X_7 => E(0), -- IO0
X_8 => E(1), -- IO1
X_9 => E(2), -- IO2
X_10 => E(3), -- IO3
X_11 => open, -- Vcc
X_12 => open, -- GND
X_13 => E(4), -- IO4
X_14 => E(5), -- IO5
X_15 => E(6), -- IO6
X_16 => E(7), -- IO7
X_17 => WR, -- WE\
X_18 => AD(15), -- A15
X_19 => AD(14), -- A14
X_20 => AD(13), -- A13
X_21 => AD(12), -- A12
-- X_22
-- X_23
X_24 => AD(11), -- A11
X_25 => AD(10), -- A10
X_26 => AD(9), -- A9
X_27 => AD(8), -- A8
-- X_28
X_29 => E(8), -- IO8
X_30 => E(9), -- IO9
X_31 => E(10), -- IO10
X_32 => E(11), -- IO11
X_33 => open, -- VCC
X_34 => open, -- GND
X_35 => E(12), -- IO12
X_36 => E(13), -- IO13
X_37 => E(14), -- IO14
X_38 => E(15), -- IO15
X_39 => BLE, -- BLE\
X_40 => BHE, -- BHE\
X_41 => OE, -- OE\
X_42 => AD(7), -- A7
X_43 => AD(6), -- A6
X_44 => AD(5) -- A5
);
end architecture Test;
/trunk/Testbench/Testbench_HM6116.vhd
0,0 → 1,186
-----------------------------------------------------------------------
-- Basic SRAM models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for HM6116: 2k x 8 SRAM --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
 
use work.TTLPrivate.all;
use work.Memories.all;
entity Testbench_HM6116 is -- Top-level bench
generic(
OC : boolean := false;
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 100 ns;
Finish : time := 2 ms;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_HM6116 is
subtype TDATA is std_logic_vector(7 downto 0);
subtype TADDR is unsigned(10 downto 0);
constant KADTOP : natural := (2**(TADDR'high+1))-1;
subtype TADNUM is natural range KADTOP downto 0;
type TMEM is array(KADTOP downto 0) of TDATA;
 
signal J, B : unsigned(10 downto 0); -- Unused
signal D, E : TDATA; -- Expected & actual results
signal CLK, RS : std_logic;
signal CS, WR : std_logic := '1';
signal AD : TADDR := (others => '0');
signal DI : TDATA;
signal W : std_logic;
signal Phase : natural;
signal OE : std_logic;
constant AD1 : TADDR := (others => '1');
constant ID1 : unsigned(TDATA'range) := "00000010";
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate RAM-specific stimuli
-----------------------------------------------------------------------
CLKX: process(CLK, RS) is
begin
if RS = '0' then
Phase <= 0;
CS <= '1';
WR <= '1';
OE <= '1';
elsif rising_edge(CLK) then
case Phase is
when 0 => CS <= '0'; Phase <= 1; OE <= '1';
when 1 => WR <= W; Phase <= 2; OE <= not W;
when 2 => WR <= '1'; Phase <= 3; OE <= '1';
when others => CS <= '1'; WR <= '1'; Phase <= 0; OE <= '1';
end case;
end if;
end process;
UPDATE: process(CLK, RS) is
variable TD : unsigned(TDATA'range);
begin
if RS = '0' then
W <= '0';
AD <= (others => '0');
TD := ID1;
elsif rising_edge(CLK) and Phase = 3 then
if AD = AD1 then
W <= not W; -- Alternate read/write cycles
end if;
AD <= AD + 1;
TD := TD + 1;
end if;
DI <= TDATA(TD);
end process;
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(all) is
variable mem : TMEM; -- Testbench memory
variable adr : TADNUM;
variable QI : TDATA;
begin
D <= E; -- Default, if not active
if CS = '0' then -- Device active
adr := TTL_to_integer(AD);
if rising_edge(WR) then -- Rising (ie trailing) edge
mem(adr) := DI;
end if;
if OE = '0' then -- Reading
QI := mem(adr);
else
QI := (others => 'Z');
end if;
if OC then -- Simulate open collector
for i in D'range loop
D(i) <= TTL_OC(QI(i));
end loop;
else
D <= QI;
end if;
end if;
end process;
process(CLK) is -- During writes, mimic the data
begin
if falling_edge(CLK) then
if W = '0' then
case Phase is
when 1 | 2 => D <= E;
when others => D <= (others => 'Z');
end case;
end if;
end if;
end process;
E <= DI when (W = '0') and (Phase = 1 or Phase = 2) else (others => 'Z');
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: HM6116
generic map(
fname => "" -- Name of initialisation file (if any)
)
port map(
X_1 => AD(7), -- A7
X_2 => AD(6), -- A6
X_3 => AD(5), -- A5
X_4 => AD(4), -- A4
X_5 => AD(3), -- A3
X_6 => AD(2), -- A2
X_7 => AD(1), -- A1
X_8 => AD(0), -- A0
X_9 => E(0), -- IO0
X_10 => E(1), -- IO1
X_11 => E(2), -- IO2
X_12 => open, -- GND
X_13 => E(3), -- IO3
X_14 => E(4), -- IO4
X_15 => E(5), -- IO5
X_16 => E(6), -- IO6
X_17 => E(7), -- IO7
X_18 => CS, -- CS\
X_19 => AD(10), -- A10
X_20 => OE, -- OE\
X_21 => WR, -- WE\
X_22 => AD(9), -- A9
X_23 => AD(8), -- A8
X_24 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_IS61C1024.vhd
0,0 → 1,194
-----------------------------------------------------------------------
-- Basic SRAM models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for IS61C1024: 128k x 8 SRAM (ISSI, 20 ns) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
 
use work.TTLPrivate.all;
use work.Memories.all;
entity Testbench_IS61C1024 is -- Top-level bench
generic(
OC : boolean := false;
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 50 ns;
Finish : time := 53 ms;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_IS61C1024 is
subtype TDATA is std_logic_vector(7 downto 0);
subtype TADDR is unsigned(16 downto 0);
constant KADTOP : natural := (2**(TADDR'high+1))-1;
subtype TADNUM is natural range KADTOP downto 0;
type TMEM is array(KADTOP downto 0) of TDATA;
 
signal J, B : unsigned(10 downto 0); -- Unused
signal D, E : TDATA; -- Expected & actual results
signal CLK, RS : std_logic;
signal CS, WR : std_logic := '1';
signal AD : TADDR := (others => '0');
signal DI : TDATA;
signal W : std_logic;
signal Phase : natural;
signal OE : std_logic;
constant AD1 : TADDR := (others => '1');
constant ID1 : unsigned(TDATA'range) := "00000010";
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate RAM-specific stimuli
-----------------------------------------------------------------------
CLKX: process(CLK, RS) is
begin
if RS = '0' then
Phase <= 0;
CS <= '1';
WR <= '1';
OE <= '1';
elsif rising_edge(CLK) then
case Phase is
when 0 => CS <= '0'; Phase <= 1; OE <= '1';
when 1 => WR <= W; Phase <= 2; OE <= not W;
when 2 => WR <= '1'; Phase <= 3; OE <= '1';
when others => CS <= '1'; WR <= '1'; Phase <= 0; OE <= '1';
end case;
end if;
end process;
UPDATE: process(CLK, RS) is
variable TD : unsigned(TDATA'range);
begin
if RS = '0' then
W <= '0';
AD <= (others => '0');
TD := ID1;
elsif rising_edge(CLK) and Phase = 3 then
if AD = AD1 then
W <= not W; -- Alternate read/write cycles
end if;
AD <= AD + 1;
TD := TD + 1;
end if;
DI <= TDATA(TD);
end process;
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(all) is
variable mem : TMEM; -- Testbench memory
variable adr : TADNUM;
variable QI : TDATA;
begin
D <= E; -- Default, if not active
if CS = '0' then -- Device active
adr := TTL_to_integer(AD);
if rising_edge(WR) then -- Rising (ie trailing) edge
mem(adr) := DI;
end if;
if OE = '0' then -- Reading
QI := mem(adr);
else
QI := (others => 'Z');
end if;
if OC then -- Simulate open collector
for i in D'range loop
D(i) <= TTL_OC(QI(i));
end loop;
else
D <= QI;
end if;
end if;
end process;
process(CLK) is -- During writes, mimic the data
begin
if falling_edge(CLK) then
if W = '0' then
case Phase is
when 1 | 2 => D <= E;
when others => D <= (others => 'Z');
end case;
end if;
end if;
end process;
E <= DI when (W = '0') and (Phase = 1 or Phase = 2) else (others => 'Z');
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: IS61C1024
generic map(
fname => "" -- Name of initialisation file (if any)
)
port map(
-- X_1
X_2 => AD(16), -- A16
X_3 => AD(14), -- A14
X_4 => AD(12), -- A12
X_5 => AD(7), -- A7
X_6 => AD(6), -- A6
X_7 => AD(5), -- A5
X_8 => AD(4), -- A4
X_9 => AD(3), -- A3
X_10 => AD(2), -- A2
X_11 => AD(1), -- A1
X_12 => AD(0), -- A0
X_13 => E(0), -- IO0
X_14 => E(1), -- IO1
X_15 => E(2), -- IO2
X_16 => open, -- GND
X_17 => E(3), -- IO3
X_18 => E(4), -- IO4
X_19 => E(5), -- IO5
X_20 => E(6), -- IO6
X_21 => E(7), -- IO7
X_22 => CS, -- CE1\
X_23 => AD(10), -- A10
X_24 => OE, -- OE\
X_25 => AD(11), -- A11
X_26 => AD(9), -- A9
X_27 => AD(8), -- A8
X_28 => AD(13), -- A13
X_29 => WR, -- WE\
X_30 => '1', -- CE2
X_31 => AD(15), -- A15
X_32 => open -- Vcc
);
end architecture Test;
/trunk/Testbench/Testbench_MB84256.vhd
0,0 → 1,191
-----------------------------------------------------------------------
-- Basic SRAM models (VHDL) --
-- David R Brooks --
-- December, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- Testbench for MB84256: 32k x 8 SRAM (Fujitsu, 100 ns) --
-----------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
use ieee.numeric_std.all;
 
use work.TTLPrivate.all;
use work.Memories.all;
entity Testbench_MB84256 is -- Top-level bench
generic(
OC : boolean := false;
StimClk : std_logic := '1';
CheckClk : std_logic := '1';
Period : time := 100 ns;
Finish : time := 30 ms;
SevLevel : severity_level := failure
);
end entity;
 
architecture Test of Testbench_MB84256 is
subtype TDATA is std_logic_vector(7 downto 0);
subtype TADDR is unsigned(14 downto 0);
constant KADTOP : natural := (2**(TADDR'high+1))-1;
subtype TADNUM is natural range KADTOP downto 0;
type TMEM is array(KADTOP downto 0) of TDATA;
 
signal J, B : unsigned(10 downto 0); -- Unused
signal D, E : TDATA; -- Expected & actual results
signal CLK, RS : std_logic;
signal CS, WR : std_logic := '1';
signal AD : TADDR := (others => '0');
signal DI : TDATA;
signal W : std_logic;
signal Phase : natural;
signal OE : std_logic;
constant AD1 : TADDR := (others => '1');
constant ID1 : unsigned(TDATA'range) := "00000010";
begin
-----------------------------------------------------------------------
-- Standard testbench components
-----------------------------------------------------------------------
TB: TTLBench
generic map(
StimClk => StimClk,
CheckClk => CheckClk,
Period => Period,
Finish => Finish,
SevLevel => SevLevel
)
port map(
J => J,
B => B,
CLK => CLK,
RS => RS,
D => D,
E => E
);
-----------------------------------------------------------------------
-- Generate RAM-specific stimuli
-----------------------------------------------------------------------
CLKX: process(CLK, RS) is
begin
if RS = '0' then
Phase <= 0;
CS <= '1';
WR <= '1';
OE <= '1';
elsif rising_edge(CLK) then
case Phase is
when 0 => CS <= '0'; Phase <= 1; OE <= '1';
when 1 => WR <= W; Phase <= 2; OE <= not W;
when 2 => WR <= '1'; Phase <= 3; OE <= '1';
when others => CS <= '1'; WR <= '1'; Phase <= 0; OE <= '1';
end case;
end if;
end process;
UPDATE: process(CLK, RS) is
variable TD : unsigned(TDATA'range);
begin
if RS = '0' then
W <= '0';
AD <= (others => '0');
TD := ID1;
elsif rising_edge(CLK) and Phase = 3 then
if AD = AD1 then
W <= not W; -- Alternate read/write cycles
end if;
AD <= AD + 1;
TD := TD + 1;
end if;
DI <= TDATA(TD);
end process;
-----------------------------------------------------------------------
-- Generate expected results (with zero delays)
-----------------------------------------------------------------------
process(all) is
variable mem : TMEM; -- Testbench memory
variable adr : TADNUM;
variable QI : TDATA;
begin
D <= E; -- Default, if not active
if CS = '0' then -- Device active
adr := TTL_to_integer(AD);
if rising_edge(WR) then -- Rising (ie trailing) edge
mem(adr) := DI;
end if;
if OE = '0' then -- Reading
QI := mem(adr);
else
QI := (others => 'Z');
end if;
if OC then -- Simulate open collector
for i in D'range loop
D(i) <= TTL_OC(QI(i));
end loop;
else
D <= QI;
end if;
end if;
end process;
process(CLK) is -- During writes, mimic the data
begin
if falling_edge(CLK) then
if W = '0' then
case Phase is
when 1 | 2 => D <= E;
when others => D <= (others => 'Z');
end case;
end if;
end if;
end process;
E <= DI when (W = '0') and (Phase = 1 or Phase = 2) else (others => 'Z');
-----------------------------------------------------------------------
-- Device Under Test...
-----------------------------------------------------------------------
DUT: MB84256
generic map(
fname => "" -- Name of initialisation file (if any)
)
port map(
X_1 => AD(14), -- A14
X_2 => AD(12), -- A12
X_3 => AD(7), -- A7
X_4 => AD(6), -- A6
X_5 => AD(5), -- A5
X_6 => AD(4), -- A4
X_7 => AD(3), -- A3
X_8 => AD(2), -- A2
X_9 => AD(1), -- A1
X_10 => AD(0), -- A0
X_11 => E(0), -- IO0
X_12 => E(1), -- IO1
X_13 => E(2), -- IO2
X_14 => open, -- GND
X_15 => E(3), -- IO3
X_16 => E(4), -- IO4
X_17 => E(5), -- IO5
X_18 => E(6), -- IO6
X_19 => E(7), -- IO7
X_20 => CS, -- CS\
X_21 => AD(10), -- A10
X_22 => OE, -- OE\
X_23 => AD(11), -- A11
X_24 => AD(9), -- A9
X_25 => AD(8), -- A8
X_26 => AD(13), -- A13
X_27 => WR, -- WE\
X_28 => open -- Vcc
);
end architecture Test;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.