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
    /
    from Rev 11 to Rev 12
    Reverse comparison

Rev 11 → Rev 12

/ttl_library/trunk/TTLParts.vhd
0,0 → 1,13060
-----------------------------------------------------------------------
-- Bipolar TTL models (VHDL) --
-- David R Brooks --
-- May, 2016. Perth, Australia --
-- Compliance: VHDL 2008 --
-- NB Simulation only: they are not synthesizable. --
-- Based on: Fairchild TTL Data Book (see for pinouts) --
-- Signetics Low-Power Schottky Pocket Guide, 1978 --
-- Part names are in Texas format, ie SN74LSxxN --
-- The LS part is given when available, else the basic 74 part. --
-- Pinouts & naming agree with Altium libraries & VHDL netlister. --
-----------------------------------------------------------------------
 
-----------------------------------------------------------------------
-- SN74LS00N: Quad 2-input NAND gate (Pinout A)
-- Verified 28/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS00N is
generic(
tPLH : time := 10 ns;
tPHL : time := 10 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : in std_logic; -- 1B
X_3 : out std_logic; -- 1Y\
X_4 : in std_logic; -- 2A
X_5 : in std_logic; -- 2B
X_6 : out std_logic; -- 2Y\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 3Y\
X_9 : in std_logic; -- 3B
X_10 : in std_logic; -- 3A
X_11 : out std_logic; -- 4Y\
X_12 : in std_logic; -- 4B
X_13 : in std_logic; -- 4A
X_14 : inout std_logic -- Vcc
);
end entity SN74LS00N;
 
architecture BEHAV of SN74LS00N is
signal A : TTLInputs (1 to 4, 1 to 2);
signal Y : TTLOutputs(1 to 4);
begin
A <= ( (X_1, X_2), (X_4, X_5), (X_9, X_10), (X_12, X_13) );
(X_3, X_6, X_8, X_11) <= Y;
G: TTLgate
generic map(
mode => Zand, -- Zand, Zor, Zxor, Zbuf
invert => '1', -- '1' will invert the output
ohigh => '1', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN7401N: Quad 2-input NAND gate (open collector) (Pinout A)
-- Verified 29/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN7401N is
generic(
tPLH : time := 45 ns;
tPHL : time := 15 ns
);
port(
X_1 : out std_logic; -- 1Y\
X_2 : in std_logic; -- 1A
X_3 : in std_logic; -- 1B
X_4 : out std_logic; -- 2Y\
X_5 : in std_logic; -- 2A
X_6 : in std_logic; -- 2B
X_7 : inout std_logic; -- GND
X_8 : in std_logic; -- 3B
X_9 : in std_logic; -- 3A
X_10 : out std_logic; -- 3Y\
X_11 : in std_logic; -- 4B
X_12 : in std_logic; -- 4A
X_13 : out std_logic; -- 4Y\
X_14 : inout std_logic -- Vcc
);
end entity SN7401N;
 
architecture BEHAV of SN7401N is
signal A : TTLInputs (1 to 4, 1 to 2);
signal Y : TTLOutputs(1 to 4);
begin
A <= ( (X_2, X_3), (X_5, X_6), (X_8, X_9), (X_11, X_12) );
(X_1, X_4, X_10, X_13) <= Y;
G: TTLgate
generic map(
mode => Zand, -- Zand, Zor, Zxor, Zbuf
invert => '1', -- '1' will invert the output
ohigh => 'Z', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS02N: Quad 2-input NOR gate (Pinout A)
-- Verified 29/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS02N is
generic(
tPLH : time := 15 ns;
tPHL : time := 15 ns
);
port(
X_1 : out std_logic; -- 1Y\
X_2 : in std_logic; -- 1A
X_3 : in std_logic; -- 1B
X_4 : out std_logic; -- 2Y\
X_5 : in std_logic; -- 2A
X_6 : in std_logic; -- 2B
X_7 : inout std_logic; -- GND
X_8 : in std_logic; -- 3B
X_9 : in std_logic; -- 3A
X_10 : out std_logic; -- 3Y\
X_11 : in std_logic; -- 4B
X_12 : in std_logic; -- 4A
X_13 : out std_logic; -- 4Y\
X_14 : inout std_logic -- Vcc
);
end entity SN74LS02N;
 
architecture BEHAV of SN74LS02N is
signal A : TTLInputs (1 to 4, 1 to 2);
signal Y : TTLOutputs(1 to 4);
begin
A <= ( (X_2, X_3), (X_5, X_6), (X_8, X_9), (X_11, X_12) );
(X_1, X_4, X_10, X_13) <= Y;
G: TTLgate
generic map(
mode => Zor, -- Zand, Zor, Zxor, Zbuf
invert => '1', -- '1' will invert the output
ohigh => '1', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS03N: Quad 2-input NAND gate (open collector)
-- Verified 28/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS03N is
generic(
tPLH : time := 22 ns;
tPHL : time := 18 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : in std_logic; -- 1B
X_3 : out std_logic; -- 1Y\
X_4 : in std_logic; -- 2A
X_5 : in std_logic; -- 2B
X_6 : out std_logic; -- 2Y\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 3Y\
X_9 : in std_logic; -- 3B
X_10 : in std_logic; -- 3A
X_11 : out std_logic; -- 4Y\
X_12 : in std_logic; -- 4B
X_13 : in std_logic; -- 4A
X_14 : inout std_logic -- Vcc
);
end entity SN74LS03N;
 
architecture BEHAV of SN74LS03N is
signal A : TTLInputs (1 to 4, 1 to 2);
signal Y : TTLOutputs(1 to 4);
begin
A <= ( (X_1, X_2), (X_4, X_5), (X_9, X_10), (X_12, X_13) );
(X_3, X_6, X_8, X_11) <= Y;
G: TTLgate
generic map(
mode => Zand, -- Zand, Zor, Zxor, Zbuf
invert => '1', -- '1' will invert the output
ohigh => 'Z', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS04N: Hex inverter (Pinout A)
-- Verified 30/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS04N is
generic(
tPLH : time := 10 ns;
tPHL : time := 10 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : out std_logic; -- 1Y\
X_3 : in std_logic; -- 2A
X_4 : out std_logic; -- 2Y\
X_5 : in std_logic; -- 3A
X_6 : out std_logic; -- 3Y\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 4Y\
X_9 : in std_logic; -- 4A
X_10 : out std_logic; -- 5Y\
X_11 : in std_logic; -- 5A
X_12 : out std_logic; -- 6Y\
X_13 : in std_logic; -- 6A
X_14 : inout std_logic -- Vcc
);
end entity SN74LS04N;
 
architecture BEHAV of SN74LS04N is
signal A : TTLInputs (1 to 6, 1 to 1);
signal Y : TTLOutputs(1 to 6);
begin
A(1,1) <= X_1; -- Can't use aggregates when the substring has only 1 element
A(2,1) <= X_3;
A(3,1) <= X_5;
A(4,1) <= X_9;
A(5,1) <= X_11;
A(6,1) <= X_13;
(X_2, X_4, X_6, X_8, X_10, X_12) <= Y;
G: TTLgate
generic map(
mode => Zbuf, -- Zand, Zor, Zxor, Zbuf
invert => '1', -- '1' will invert the output
ohigh => '1', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS05N: Hex inverter (open collector) (Pinout A)
-- Verified 30/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS05N is
generic(
tPLH : time := 32 ns;
tPHL : time := 28 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : out std_logic; -- 1Y\
X_3 : in std_logic; -- 2A
X_4 : out std_logic; -- 2Y\
X_5 : in std_logic; -- 3A
X_6 : out std_logic; -- 3Y\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 4Y\
X_9 : in std_logic; -- 4A
X_10 : out std_logic; -- 5Y\
X_11 : in std_logic; -- 5A
X_12 : out std_logic; -- 6Y\
X_13 : in std_logic; -- 6A
X_14 : inout std_logic -- Vcc
);
end entity SN74LS05N;
 
architecture BEHAV of SN74LS05N is
signal A : TTLInputs (1 to 6, 1 to 1);
signal Y : TTLOutputs(1 to 6);
begin
A(1,1) <= X_1; -- Can't use aggregates when the substring has only 1 element
A(2,1) <= X_3;
A(3,1) <= X_5;
A(4,1) <= X_9;
A(5,1) <= X_11;
A(6,1) <= X_13;
(X_2, X_4, X_6, X_8, X_10, X_12) <= Y;
G: TTLgate
generic map(
mode => Zbuf, -- Zand, Zor, Zxor, Zbuf
invert => '1', -- '1' will invert the output
ohigh => 'Z', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN7406N: Hex inverter (high voltage open collector)
-- Verified 30/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN7406N is
generic(
tPLH : time := 15 ns;
tPHL : time := 23 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : out std_logic; -- 1Y\
X_3 : in std_logic; -- 2A
X_4 : out std_logic; -- 2Y\
X_5 : in std_logic; -- 3A
X_6 : out std_logic; -- 3Y\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 4Y\
X_9 : in std_logic; -- 4A
X_10 : out std_logic; -- 5Y\
X_11 : in std_logic; -- 5A
X_12 : out std_logic; -- 6Y\
X_13 : in std_logic; -- 6A
X_14 : inout std_logic -- Vcc
);
end entity SN7406N;
 
architecture BEHAV of SN7406N is
signal A : TTLInputs (1 to 6, 1 to 1);
signal Y : TTLOutputs(1 to 6);
begin
A(1,1) <= X_1; -- Can't use aggregates when the substring has only 1 element
A(2,1) <= X_3;
A(3,1) <= X_5;
A(4,1) <= X_9;
A(5,1) <= X_11;
A(6,1) <= X_13;
(X_2, X_4, X_6, X_8, X_10, X_12) <= Y;
G: TTLgate
generic map(
mode => Zbuf, -- Zand, Zor, Zxor, Zbuf
invert => '1', -- '1' will invert the output
ohigh => 'Z', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN7407N: Hex buffer (high voltage open collector)
-- Verified 30/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN7407N is
generic(
tPLH : time := 10 ns;
tPHL : time := 30 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : out std_logic; -- 1Y\
X_3 : in std_logic; -- 2A
X_4 : out std_logic; -- 2Y\
X_5 : in std_logic; -- 3A
X_6 : out std_logic; -- 3Y\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 4Y\
X_9 : in std_logic; -- 4A
X_10 : out std_logic; -- 5Y\
X_11 : in std_logic; -- 5A
X_12 : out std_logic; -- 6Y\
X_13 : in std_logic; -- 6A
X_14 : inout std_logic -- Vcc
);
end entity SN7407N;
 
architecture BEHAV of SN7407N is
signal A : TTLInputs (1 to 6, 1 to 1);
signal Y : TTLOutputs(1 to 6);
begin
A(1,1) <= X_1; -- Can't use aggregates when the substring has only 1 element
A(2,1) <= X_3;
A(3,1) <= X_5;
A(4,1) <= X_9;
A(5,1) <= X_11;
A(6,1) <= X_13;
(X_2, X_4, X_6, X_8, X_10, X_12) <= Y;
G: TTLgate
generic map(
mode => Zbuf, -- Zand, Zor, Zxor, Zbuf
invert => '0', -- '1' will invert the output
ohigh => 'Z', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS08N: Quad 2-input and gate (Pinout A)
-- Verified 28/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS08N is
generic(
tPLH : time := 15 ns;
tPHL : time := 20 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : in std_logic; -- 1B
X_3 : out std_logic; -- 1Y
X_4 : in std_logic; -- 2A
X_5 : in std_logic; -- 2B
X_6 : out std_logic; -- 2Y
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 3Y
X_9 : in std_logic; -- 3B
X_10 : in std_logic; -- 3A
X_11 : out std_logic; -- 4Y
X_12 : in std_logic; -- 4B
X_13 : in std_logic; -- 4A
X_14 : inout std_logic -- Vcc
);
end entity SN74LS08N;
 
architecture BEHAV of SN74LS08N is
signal A : TTLInputs (1 to 4, 1 to 2);
signal Y : TTLOutputs(1 to 4);
begin
A <= ( (X_1, X_2), (X_4, X_5), (X_9, X_10), (X_12, X_13) );
(X_3, X_6, X_8, X_11) <= Y;
G: TTLgate
generic map(
mode => Zand, -- Zand, Zor, Zxor, Zbuf
invert => '0', -- '1' will invert the output
ohigh => '1', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS09N: Quad 2-input and gate (open collector)
-- Verified 28/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS09N is
generic(
tPLH : time := 35 ns;
tPHL : time := 35 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : in std_logic; -- 1B
X_3 : out std_logic; -- 1Y
X_4 : in std_logic; -- 2A
X_5 : in std_logic; -- 2B
X_6 : out std_logic; -- 2Y
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 3Y
X_9 : in std_logic; -- 3B
X_10 : in std_logic; -- 3A
X_11 : out std_logic; -- 4Y
X_12 : in std_logic; -- 4B
X_13 : in std_logic; -- 4A
X_14 : inout std_logic -- Vcc
);
end entity SN74LS09N;
 
architecture BEHAV of SN74LS09N is
signal A : TTLInputs (1 to 4, 1 to 2);
signal Y : TTLOutputs(1 to 4);
begin
A <= ( (X_1, X_2), (X_4, X_5), (X_9, X_10), (X_12, X_13) );
(X_3, X_6, X_8, X_11) <= Y;
G: TTLgate
generic map(
mode => Zand, -- Zand, Zor, Zxor, Zbuf
invert => '0', -- '1' will invert the output
ohigh => 'Z', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS10N: Triple 3-input NAND gate (Pinout A)
-- Verified 30/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS10N is
generic(
tPLH : time := 15 ns;
tPHL : time := 15 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : in std_logic; -- 1B
X_3 : in std_logic; -- 2A
X_4 : in std_logic; -- 2B
X_5 : in std_logic; -- 2C
X_6 : out std_logic; -- 2Y\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 3Y\
X_9 : in std_logic; -- 3C
X_10 : in std_logic; -- 3B
X_11 : in std_logic; -- 3A
X_12 : out std_logic; -- 1Y\
X_13 : in std_logic; -- 1C
X_14 : inout std_logic -- Vcc
);
end entity SN74LS10N;
 
architecture BEHAV of SN74LS10N is
signal A : TTLInputs (1 to 3, 1 to 3);
signal Y : TTLOutputs(1 to 3);
begin
A <= ( (X_1, X_2, X_13), (X_3, X_4, X_5), (X_9, X_10, X_11) );
(X_12, X_6, X_8) <= Y;
G: TTLgate
generic map(
mode => Zand, -- Zand, Zor, Zxor, Zbuf
invert => '1', -- '1' will invert the output
ohigh => '1', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
 
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS11N: Triple 3-input and gate (Pinout A)
-- Verified 30/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS11N is
generic(
tPLH : time := 15 ns;
tPHL : time := 20 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : in std_logic; -- 1B
X_3 : in std_logic; -- 2A
X_4 : in std_logic; -- 2B
X_5 : in std_logic; -- 2C
X_6 : out std_logic; -- 2Y\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 3Y\
X_9 : in std_logic; -- 3C
X_10 : in std_logic; -- 3B
X_11 : in std_logic; -- 3A
X_12 : out std_logic; -- 1Y\
X_13 : in std_logic; -- 1C
X_14 : inout std_logic -- Vcc
);
end entity SN74LS11N;
 
architecture BEHAV of SN74LS11N is
signal A : TTLInputs (1 to 3, 1 to 3);
signal Y : TTLOutputs(1 to 3);
begin
A <= ( (X_1, X_2, X_13), (X_3, X_4, X_5), (X_9, X_10, X_11) );
(X_12, X_6, X_8) <= Y;
G: TTLgate
generic map(
mode => Zand, -- Zand, Zor, Zxor, Zbuf
invert => '0', -- '1' will invert the output
ohigh => '1', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
 
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS12N: Triple 3-input NAND gate (open collector)
-- Verified 30/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS12N is
generic(
tPLH : time := 32 ns;
tPHL : time := 28 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : in std_logic; -- 1B
X_3 : in std_logic; -- 2A
X_4 : in std_logic; -- 2B
X_5 : in std_logic; -- 2C
X_6 : out std_logic; -- 2Y\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 3Y\
X_9 : in std_logic; -- 3C
X_10 : in std_logic; -- 3B
X_11 : in std_logic; -- 3A
X_12 : out std_logic; -- 1Y\
X_13 : in std_logic; -- 1C
X_14 : inout std_logic -- Vcc
);
end entity SN74LS12N;
 
architecture BEHAV of SN74LS12N is
signal A : TTLInputs (1 to 3, 1 to 3);
signal Y : TTLOutputs(1 to 3);
begin
A <= ( (X_1, X_2, X_13), (X_3, X_4, X_5), (X_9, X_10, X_11) );
(X_12, X_6, X_8) <= Y;
G: TTLgate
generic map(
mode => Zand, -- Zand, Zor, Zxor, Zbuf
invert => '1', -- '1' will invert the output
ohigh => 'Z', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
 
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS13N: Dual 4-input NAND Schmitt trigger
-- Verified 30/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS13N is
generic(
tPLH : time := 22 ns;
tPHL : time := 27 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : in std_logic; -- 1B
--
X_4 : in std_logic; -- 1C
X_5 : in std_logic; -- 1D
X_6 : out std_logic; -- 1Y\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 2Y\
X_9 : in std_logic; -- 2D
X_10 : in std_logic; -- 2C
--
X_12 : in std_logic; -- 2B
X_13 : in std_logic; -- 2A
X_14 : inout std_logic -- Vcc
);
end entity SN74LS13N;
 
architecture BEHAV of SN74LS13N is
signal A : TTLInputs (1 to 2, 1 to 4);
signal Y : TTLOutputs(1 to 2);
begin
A <= ( (X_1, X_2, X_4, X_5), (X_9, X_10, X_12, X_13) );
(X_6, X_8) <= Y;
G: TTLgate
generic map(
mode => Zand, -- Zand, Zor, Zxor, Zbuf
invert => '1', -- '1' will invert the output
ohigh => '1', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
 
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS14N: Hex Schmitt trigger inverter
-- Verified 30/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS14N is
generic(
tPLH : time := 22 ns;
tPHL : time := 22 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : out std_logic; -- 1Y\
X_3 : in std_logic; -- 2A
X_4 : out std_logic; -- 2Y\
X_5 : in std_logic; -- 3A
X_6 : out std_logic; -- 3Y\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 4Y\
X_9 : in std_logic; -- 4A
X_10 : out std_logic; -- 5Y\
X_11 : in std_logic; -- 5A
X_12 : out std_logic; -- 6Y\
X_13 : in std_logic; -- 6A
X_14 : inout std_logic -- Vcc
);
end entity SN74LS14N;
 
architecture BEHAV of SN74LS14N is
signal A : TTLInputs (1 to 6, 1 to 1);
signal Y : TTLOutputs(1 to 6);
begin
A(1,1) <= X_1; -- Can't use aggregates when the substring has only 1 element
A(2,1) <= X_3;
A(3,1) <= X_5;
A(4,1) <= X_9;
A(5,1) <= X_11;
A(6,1) <= X_13;
(X_2, X_4, X_6, X_8, X_10, X_12) <= Y;
G: TTLgate
generic map(
mode => Zbuf, -- Zand, Zor, Zxor, Zbuf
invert => '1', -- '1' will invert the output
ohigh => '1', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS15N: Triple 3-input and gate (open collector)
-- Verified 30/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS15N is
generic(
tPLH : time := 35 ns;
tPHL : time := 35 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : in std_logic; -- 1B
X_3 : in std_logic; -- 2A
X_4 : in std_logic; -- 2B
X_5 : in std_logic; -- 2C
X_6 : out std_logic; -- 2Y\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 3Y\
X_9 : in std_logic; -- 3C
X_10 : in std_logic; -- 3B
X_11 : in std_logic; -- 3A
X_12 : out std_logic; -- 1Y\
X_13 : in std_logic; -- 1C
X_14 : inout std_logic -- Vcc
);
end entity SN74LS15N;
 
architecture BEHAV of SN74LS15N is
signal A : TTLInputs (1 to 3, 1 to 3);
signal Y : TTLOutputs(1 to 3);
begin
A <= ( (X_1, X_2, X_13), (X_3, X_4, X_5), (X_9, X_10, X_11) );
(X_12, X_6, X_8) <= Y;
G: TTLgate
generic map(
mode => Zand, -- Zand, Zor, Zxor, Zbuf
invert => '0', -- '1' will invert the output
ohigh => 'Z', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
 
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN7416N: Hex inverter/driver (high voltage open collector)
-- Verified 30/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN7416N is
generic(
tPLH : time := 15 ns;
tPHL : time := 23 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : out std_logic; -- 1Y\
X_3 : in std_logic; -- 2A
X_4 : out std_logic; -- 2Y\
X_5 : in std_logic; -- 3A
X_6 : out std_logic; -- 3Y\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 4Y\
X_9 : in std_logic; -- 4A
X_10 : out std_logic; -- 5Y\
X_11 : in std_logic; -- 5A
X_12 : out std_logic; -- 6Y\
X_13 : in std_logic; -- 6A
X_14 : inout std_logic -- Vcc
);
end entity SN7416N;
 
architecture BEHAV of SN7416N is
signal A : TTLInputs (1 to 6, 1 to 1);
signal Y : TTLOutputs(1 to 6);
begin
A(1,1) <= X_1; -- Can't use aggregates when the substring has only 1 element
A(2,1) <= X_3;
A(3,1) <= X_5;
A(4,1) <= X_9;
A(5,1) <= X_11;
A(6,1) <= X_13;
(X_2, X_4, X_6, X_8, X_10, X_12) <= Y;
G: TTLgate
generic map(
mode => Zbuf, -- Zand, Zor, Zxor, Zbuf
invert => '1', -- '1' will invert the output
ohigh => 'Z', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN7417N: Hex buffer/driver (high voltage open collector)
-- Verified 30/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN7417N is
generic(
tPLH : time := 10 ns;
tPHL : time := 30 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : out std_logic; -- 1Y\
X_3 : in std_logic; -- 2A
X_4 : out std_logic; -- 2Y\
X_5 : in std_logic; -- 3A
X_6 : out std_logic; -- 3Y\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 4Y\
X_9 : in std_logic; -- 4A
X_10 : out std_logic; -- 5Y\
X_11 : in std_logic; -- 5A
X_12 : out std_logic; -- 6Y\
X_13 : in std_logic; -- 6A
X_14 : inout std_logic -- Vcc
);
end entity SN7417N;
 
architecture BEHAV of SN7417N is
signal A : TTLInputs (1 to 6, 1 to 1);
signal Y : TTLOutputs(1 to 6);
begin
A(1,1) <= X_1; -- Can't use aggregates when the substring has only 1 element
A(2,1) <= X_3;
A(3,1) <= X_5;
A(4,1) <= X_9;
A(5,1) <= X_11;
A(6,1) <= X_13;
(X_2, X_4, X_6, X_8, X_10, X_12) <= Y;
G: TTLgate
generic map(
mode => Zbuf, -- Zand, Zor, Zxor, Zbuf
invert => '0', -- '1' will invert the output
ohigh => 'Z', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS20N: Dual 4-input NAND gate (Pinout A)
-- Verified 30/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS20N is
generic(
tPLH : time := 15 ns;
tPHL : time := 15 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : in std_logic; -- 1B
--
X_4 : in std_logic; -- 1C
X_5 : in std_logic; -- 1D
X_6 : out std_logic; -- 1Y\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 2Y\
X_9 : in std_logic; -- 2D
X_10 : in std_logic; -- 2C
--
X_12 : in std_logic; -- 2B
X_13 : in std_logic; -- 2A
X_14 : inout std_logic -- Vcc
);
end entity SN74LS20N;
 
architecture BEHAV of SN74LS20N is
signal A : TTLInputs (1 to 2, 1 to 4);
signal Y : TTLOutputs(1 to 2);
begin
A <= ( (X_1, X_2, X_4, X_5), (X_9, X_10, X_12, X_13) );
(X_6, X_8) <= Y;
G: TTLgate
generic map(
mode => Zand, -- Zand, Zor, Zxor, Zbuf
invert => '1', -- '1' will invert the output
ohigh => '1', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
 
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS21N: Dual 4-input and gate (Pinout A)
-- Verified 30/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS21N is
generic(
tPLH : time := 15 ns;
tPHL : time := 20 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : in std_logic; -- 1B
--
X_4 : in std_logic; -- 1C
X_5 : in std_logic; -- 1D
X_6 : out std_logic; -- 1Y\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 2Y\
X_9 : in std_logic; -- 2D
X_10 : in std_logic; -- 2C
--
X_12 : in std_logic; -- 2B
X_13 : in std_logic; -- 2A
X_14 : inout std_logic -- Vcc
);
end entity SN74LS21N;
 
architecture BEHAV of SN74LS21N is
signal A : TTLInputs (1 to 2, 1 to 4);
signal Y : TTLOutputs(1 to 2);
begin
A <= ( (X_1, X_2, X_4, X_5), (X_9, X_10, X_12, X_13) );
(X_6, X_8) <= Y;
G: TTLgate
generic map(
mode => Zand, -- Zand, Zor, Zxor, Zbuf
invert => '0', -- '1' will invert the output
ohigh => '1', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
 
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS22N: Dual 4-input NAND gate (open collector) (Pinout A)
-- Verified 30/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS22N is
generic(
tPLH : time := 22 ns;
tPHL : time := 18 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : in std_logic; -- 1B
--
X_4 : in std_logic; -- 1C
X_5 : in std_logic; -- 1D
X_6 : out std_logic; -- 1Y\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 2Y\
X_9 : in std_logic; -- 2D
X_10 : in std_logic; -- 2C
--
X_12 : in std_logic; -- 2B
X_13 : in std_logic; -- 2A
X_14 : inout std_logic -- Vcc
);
end entity SN74LS22N;
 
architecture BEHAV of SN74LS22N is
signal A : TTLInputs (1 to 2, 1 to 4);
signal Y : TTLOutputs(1 to 2);
begin
A <= ( (X_1, X_2, X_4, X_5), (X_9, X_10, X_12, X_13) );
(X_6, X_8) <= Y;
G: TTLgate
generic map(
mode => Zand, -- Zand, Zor, Zxor, Zbuf
invert => '1', -- '1' will invert the output
ohigh => 'Z', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
 
end architecture BEHAV;
 
-- SN7423N: Expandable dual 4-input NOR gate (with strobe)
-- SN7425N: Dual 4-input NOR gate (with strobe)
 
-----------------------------------------------------------------------
-- SN74LS26N: Quad 2-input NAND buffer (open collector)
-- Verified 29/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS26N is
generic(
tPLH : time := 22 ns;
tPHL : time := 18 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : in std_logic; -- 1B
X_3 : out std_logic; -- 1Y\
X_4 : in std_logic; -- 2A
X_5 : in std_logic; -- 2B
X_6 : out std_logic; -- 2Y\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 3Y\
X_9 : in std_logic; -- 3B
X_10 : in std_logic; -- 3A
X_11 : out std_logic; -- 4Y\
X_12 : in std_logic; -- 4B
X_13 : in std_logic; -- 4A
X_14 : inout std_logic -- Vcc
);
end entity SN74LS26N;
 
architecture BEHAV of SN74LS26N is
signal A : TTLInputs (1 to 4, 1 to 2);
signal Y : TTLOutputs(1 to 4);
begin
A <= ( (X_1, X_2), (X_4, X_5), (X_9, X_10), (X_12, X_13) );
(X_3, X_6, X_8, X_11) <= Y;
G: TTLgate
generic map(
mode => Zand, -- Zand, Zor, Zxor, Zbuf
invert => '1', -- '1' will invert the output
ohigh => 'Z', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS27N: Triple 3-input NOR gate
-- Verified 30/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS27N is
generic(
tPLH : time := 13 ns;
tPHL : time := 13 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : in std_logic; -- 1B
X_3 : in std_logic; -- 2A
X_4 : in std_logic; -- 2B
X_5 : in std_logic; -- 2C
X_6 : out std_logic; -- 2Y\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 3Y\
X_9 : in std_logic; -- 3C
X_10 : in std_logic; -- 3B
X_11 : in std_logic; -- 3A
X_12 : out std_logic; -- 1Y\
X_13 : in std_logic; -- 1C
X_14 : inout std_logic -- Vcc
);
end entity SN74LS27N;
 
architecture BEHAV of SN74LS27N is
signal A : TTLInputs (1 to 3, 1 to 3);
signal Y : TTLOutputs(1 to 3);
begin
A <= ( (X_1, X_2, X_13), (X_3, X_4, X_5), (X_9, X_10, X_11) );
(X_12, X_6, X_8) <= Y;
G: TTLgate
generic map(
mode => Zor, -- Zand, Zor, Zxor, Zbuf
invert => '1', -- '1' will invert the output
ohigh => '1', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
 
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS28N: Quad 2-input NOR buffer
-- Verified 29/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS28N is
generic(
tPLH : time := 20 ns;
tPHL : time := 20 ns
);
port(
X_1 : out std_logic; -- 1Y\
X_2 : in std_logic; -- 1A
X_3 : in std_logic; -- 1B
X_4 : out std_logic; -- 2Y\
X_5 : in std_logic; -- 2A
X_6 : in std_logic; -- 2B
X_7 : inout std_logic; -- GND
X_8 : in std_logic; -- 3B
X_9 : in std_logic; -- 3A
X_10 : out std_logic; -- 3Y\
X_11 : in std_logic; -- 4B
X_12 : in std_logic; -- 4A
X_13 : out std_logic; -- 4Y\
X_14 : inout std_logic -- Vcc
);
end entity SN74LS28N;
 
architecture BEHAV of SN74LS28N is
signal A : TTLInputs (1 to 4, 1 to 2);
signal Y : TTLOutputs(1 to 4);
begin
A <= ( (X_2, X_3), (X_5, X_6), (X_8, X_9), (X_11, X_12) );
(X_1, X_4, X_10, X_13) <= Y;
G: TTLgate
generic map(
mode => Zor, -- Zand, Zor, Zxor, Zbuf
invert => '1', -- '1' will invert the output
ohigh => '1', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS30N: 8-input NAND gate (Pinout A)
-- Verified 30/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS30N is
generic(
tPLH : time := 15 ns;
tPHL : time := 20 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : in std_logic; -- 1B
X_3 : in std_logic; -- 1C
X_4 : in std_logic; -- 1D
X_5 : in std_logic; -- 1E
X_6 : in std_logic; -- 1F
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 1Y\
--
--
X_11 : in std_logic; -- 1G
X_12 : in std_logic; -- 1H
--
X_14 : inout std_logic -- Vcc
);
end entity SN74LS30N;
 
architecture BEHAV of SN74LS30N is
signal A : TTLInputs (1 to 1, 1 to 8);
signal Y : TTLOutputs(1 to 1);
begin
A(1,1) <= X_1; -- Can't use aggregates with single gate
A(1,2) <= X_2;
A(1,3) <= X_3;
A(1,4) <= X_4;
A(1,5) <= X_5;
A(1,6) <= X_6;
A(1,7) <= X_11;
A(1,8) <= X_12;
X_8 <= Y(1);
G: TTLgate
generic map(
mode => Zand, -- Zand, Zor, Zxor, Zbuf
invert => '1', -- '1' will invert the output
ohigh => '1', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS32N: Quad 2-input or gate
-- Verified 28/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS32N is
generic(
tPLH : time := 15 ns;
tPHL : time := 15 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : in std_logic; -- 1B
X_3 : out std_logic; -- 1Y
X_4 : in std_logic; -- 2A
X_5 : in std_logic; -- 2B
X_6 : out std_logic; -- 2Y
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 3Y
X_9 : in std_logic; -- 3B
X_10 : in std_logic; -- 3A
X_11 : out std_logic; -- 4Y
X_12 : in std_logic; -- 4B
X_13 : in std_logic; -- 4A
X_14 : inout std_logic -- Vcc
);
end entity SN74LS32N;
 
architecture BEHAV of SN74LS32N is
signal A : TTLInputs (1 to 4, 1 to 2);
signal Y : TTLOutputs(1 to 4);
begin
A <= ( (X_1, X_2), (X_4, X_5), (X_9, X_10), (X_12, X_13) );
(X_3, X_6, X_8, X_11) <= Y;
G: TTLgate
generic map(
mode => Zor, -- Zand, Zor, Zxor, Zbuf
invert => '0', -- '1' will invert the output
ohigh => '1', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS33N: Quad 2-input NOR buffer (open collector)
-- Verified 29/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS33N is
generic(
tPLH : time := 32 ns;
tPHL : time := 28 ns
);
port(
X_1 : out std_logic; -- 1Y\
X_2 : in std_logic; -- 1A
X_3 : in std_logic; -- 1B
X_4 : out std_logic; -- 2Y\
X_5 : in std_logic; -- 2A
X_6 : in std_logic; -- 2B
X_7 : inout std_logic; -- GND
X_8 : in std_logic; -- 3B
X_9 : in std_logic; -- 3A
X_10 : out std_logic; -- 3Y\
X_11 : in std_logic; -- 4B
X_12 : in std_logic; -- 4A
X_13 : out std_logic; -- 4Y\
X_14 : inout std_logic -- Vcc
);
end entity SN74LS33N;
 
architecture BEHAV of SN74LS33N is
signal A : TTLInputs (1 to 4, 1 to 2);
signal Y : TTLOutputs(1 to 4);
begin
A <= ( (X_2, X_3), (X_5, X_6), (X_8, X_9), (X_11, X_12) );
(X_1, X_4, X_10, X_13) <= Y;
G: TTLgate
generic map(
mode => Zor, -- Zand, Zor, Zxor, Zbuf
invert => '1', -- '1' will invert the output
ohigh => 'Z', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS37N: Quad 2-input NAND buffer
-- Verified 28/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS37N is
generic(
tPLH : time := 20 ns;
tPHL : time := 20 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : in std_logic; -- 1B
X_3 : out std_logic; -- 1Y\
X_4 : in std_logic; -- 2A
X_5 : in std_logic; -- 2B
X_6 : out std_logic; -- 2Y\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 3Y\
X_9 : in std_logic; -- 3B
X_10 : in std_logic; -- 3A
X_11 : out std_logic; -- 4Y\
X_12 : in std_logic; -- 4B
X_13 : in std_logic; -- 4A
X_14 : inout std_logic -- Vcc
);
end entity SN74LS37N;
 
architecture BEHAV of SN74LS37N is
signal A : TTLInputs (1 to 4, 1 to 2);
signal Y : TTLOutputs(1 to 4);
begin
A <= ( (X_1, X_2), (X_4, X_5), (X_9, X_10), (X_12, X_13) );
(X_3, X_6, X_8, X_11) <= Y;
G: TTLgate
generic map(
mode => Zand, -- Zand, Zor, Zxor, Zbuf
invert => '1', -- '1' will invert the output
ohigh => '1', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS38N: Quad 2-input NAND buffer (open collector)
-- Verified 28/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS38N is
generic(
tPLH : time := 20 ns;
tPHL : time := 20 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : in std_logic; -- 1B
X_3 : out std_logic; -- 1Y\
X_4 : in std_logic; -- 2A
X_5 : in std_logic; -- 2B
X_6 : out std_logic; -- 2Y\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 3Y\
X_9 : in std_logic; -- 3B
X_10 : in std_logic; -- 3A
X_11 : out std_logic; -- 4Y\
X_12 : in std_logic; -- 4B
X_13 : in std_logic; -- 4A
X_14 : inout std_logic -- Vcc
);
end entity SN74LS38N;
 
architecture BEHAV of SN74LS38N is
signal A : TTLInputs (1 to 4, 1 to 2);
signal Y : TTLOutputs(1 to 4);
begin
A <= ( (X_1, X_2), (X_4, X_5), (X_9, X_10), (X_12, X_13) );
(X_3, X_6, X_8, X_11) <= Y;
G: TTLgate
generic map(
mode => Zand, -- Zand, Zor, Zxor, Zbuf
invert => '1', -- '1' will invert the output
ohigh => 'Z', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS39N: Quad 2-input NAND buffer (open collector) (Pinout A)
-- Verified 29/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS39N is
generic(
tPLH : time := 22 ns;
tPHL : time := 18 ns
);
port(
X_1 : out std_logic; -- 1Y\
X_2 : in std_logic; -- 1A
X_3 : in std_logic; -- 1B
X_4 : out std_logic; -- 2Y\
X_5 : in std_logic; -- 2A
X_6 : in std_logic; -- 2B
X_7 : inout std_logic; -- GND
X_8 : in std_logic; -- 3B
X_9 : in std_logic; -- 3A
X_10 : out std_logic; -- 3Y\
X_11 : in std_logic; -- 4B
X_12 : in std_logic; -- 4A
X_13 : out std_logic; -- 4Y\
X_14 : inout std_logic -- Vcc
);
end entity SN74LS39N;
 
architecture BEHAV of SN74LS39N is
signal A : TTLInputs (1 to 4, 1 to 2);
signal Y : TTLOutputs(1 to 4);
begin
A <= ( (X_2, X_3), (X_5, X_6), (X_8, X_9), (X_11, X_12) );
(X_1, X_4, X_10, X_13) <= Y;
G: TTLgate
generic map(
mode => Zand, -- Zand, Zor, Zxor, Zbuf
invert => '1', -- '1' will invert the output
ohigh => 'Z', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS40N: Dual 4-input NAND buffer (Pinout A)
-- Verified 30/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS40N is
generic(
tPLH : time := 24 ns;
tPHL : time := 24 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : in std_logic; -- 1B
--
X_4 : in std_logic; -- 1C
X_5 : in std_logic; -- 1D
X_6 : out std_logic; -- 1Y\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 2Y\
X_9 : in std_logic; -- 2D
X_10 : in std_logic; -- 2C
--
X_12 : in std_logic; -- 2B
X_13 : in std_logic; -- 2A
X_14 : inout std_logic -- Vcc
);
end entity SN74LS40N;
 
architecture BEHAV of SN74LS40N is
signal A : TTLInputs (1 to 2, 1 to 4);
signal Y : TTLOutputs(1 to 2);
begin
A <= ( (X_1, X_2, X_4, X_5), (X_9, X_10, X_12, X_13) );
(X_6, X_8) <= Y;
G: TTLgate
generic map(
mode => Zand, -- Zand, Zor, Zxor, Zbuf
invert => '1', -- '1' will invert the output
ohigh => '1', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
 
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS42N: 1-of-10 decoder
-- Verified 30/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS42N is
generic(
tPLH : time := 20 ns;
tPHL : time := 27 ns
);
port(
X_1 : out std_logic; -- Q0\
X_2 : out std_logic; -- Q1\
X_3 : out std_logic; -- Q2\
X_4 : out std_logic; -- Q3\
X_5 : out std_logic; -- Q4\
X_6 : out std_logic; -- Q5\
X_7 : out std_logic; -- Q6\
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- Q7\
X_10 : out std_logic; -- Q8\
X_11 : out std_logic; -- Q9\
X_12 : in std_logic; -- A3
X_13 : in std_logic; -- A2
X_14 : in std_logic; -- A1
X_15 : in std_logic; -- A0
X_16 : inout std_logic -- Vcc
);
end entity SN74LS42N;
 
architecture BEHAV of SN74LS42N is
signal OP, Y : std_logic_vector(15 downto 0);
begin
process(all) is
variable AT : unsigned(3 downto 0);
variable AD : natural range(OP'range);
begin
AT := (X_12 & X_13 & X_14 & X_15);
AD := TTL_to_integer(AT);
OP <= (others => '1');
OP(AD) <= '0';
end process;
G1: for i in OP'range generate
begin
DL: TTLdelay
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => OP(i),
B => Y(i)
);
end generate;
( X_11, X_10, X_9, X_7, X_6, X_5, X_4, X_3, X_2, X_1 ) <= Y(9 downto 0);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN7445N: 1-of-10 decoder/driver (open collector)
-- Verified 30/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN7445N is
generic(
tPLH : time := 50 ns;
tPHL : time := 50 ns
);
port(
X_1 : out std_logic; -- Q0\
X_2 : out std_logic; -- Q1\
X_3 : out std_logic; -- Q2\
X_4 : out std_logic; -- Q3\
X_5 : out std_logic; -- Q4\
X_6 : out std_logic; -- Q5\
X_7 : out std_logic; -- Q6\
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- Q7\
X_10 : out std_logic; -- Q8\
X_11 : out std_logic; -- Q9\
X_12 : in std_logic; -- A3
X_13 : in std_logic; -- A2
X_14 : in std_logic; -- A1
X_15 : in std_logic; -- A0
X_16 : inout std_logic -- Vcc
);
end entity SN7445N;
 
architecture BEHAV of SN7445N is
signal OP, Y, Z : std_logic_vector(15 downto 0);
begin
process(all) is
variable AT : unsigned(3 downto 0);
variable AD : natural range(OP'range);
begin
AT := (X_12 & X_13 & X_14 & X_15);
AD := TTL_to_integer(AT);
OP <= (others => '1');
OP(AD) <= '0';
end process;
G1: for i in OP'range generate
begin
DL: TTLdelay
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => OP(i),
B => Y(i)
);
Z(i) <= '0' when Y(i) = '0' else 'Z'; -- Open collectors
end generate;
( X_11, X_10, X_9, X_7, X_6, X_5, X_4, X_3, X_2, X_1 ) <= Z(9 downto 0);
end architecture BEHAV;
 
-- SN74LS47N: BCD to 7-segment decoder/driver
-- SN74LS48N: BCD to 7-segment decoder
-- SN74LS49N: BCD to 7-segment decoder
-- SN7450P: Expandable dual 2-wide 2-input and-or-invert gate
 
-----------------------------------------------------------------------
-- SN74LS51N: Dual 2-wide, 2/3-input and-or-Invert gate (Pinout B)
-- Verified 30/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS51N is
generic(
tPLH : time := 20 ns;
tPHL : time := 20 ns
);
port(
X_1 : in std_logic; -- 2A1
X_2 : in std_logic; -- 1A1
X_3 : in std_logic; -- 1A2
X_4 : in std_logic; -- 1B1
X_5 : in std_logic; -- 1B2
X_6 : out std_logic; -- 1Y\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 2Y\
X_9 : in std_logic; -- 2B3
X_10 : in std_logic; -- 2B2
X_11 : in std_logic; -- 2B1
X_12 : in std_logic; -- 2A3
X_13 : in std_logic; -- 2A2
X_14 : inout std_logic -- Vcc
);
end entity SN74LS51N;
 
architecture BEHAV of SN74LS51N is
signal Y : std_logic_vector(2 downto 1);
begin
Y(1) <= not( (X_2 and X_3) or (X_4 and X_5));
Y(2) <= not( (X_1 and X_12 and X_13) or (X_9 and X_10 and X_11));
G1: TTLdelay
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => Y(1),
B => X_6
);
 
G2: TTLdelay
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => Y(2),
B => X_8
);
 
end architecture BEHAV;
 
-- SN74H52: Expandable 2-2-2-3-input and-or gate
-- SN74H53: Expandable 2-2-2-3-input and-or-Invert gate
 
-----------------------------------------------------------------------
-- SN74LS54N: 4-wide 2-input and-or-Invert gate (Pinout C)
-- Verified 30/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS54N is
generic(
tPLH : time := 20 ns;
tPHL : time := 20 ns
);
port(
X_1 : in std_logic; -- 1A1
X_2 : in std_logic; -- 1A2
X_3 : in std_logic; -- 1B1
X_4 : in std_logic; -- 1B2
X_5 : in std_logic; -- 1B3
X_6 : out std_logic; -- 1Y\
X_7 : inout std_logic; -- GND
--
X_9 : in std_logic; -- 1D3
X_10 : in std_logic; -- 1D2
X_11 : in std_logic; -- 1D1
X_12 : in std_logic; -- 1C2
X_13 : in std_logic; -- 1C1
X_14 : inout std_logic -- Vcc
);
end entity SN74LS54N;
 
architecture BEHAV of SN74LS54N is
signal Y : std_logic;
begin
Y <= not( (X_1 and X_2) or
(X_3 and X_4 and X_5 ) or
(X_9 and X_10 and X_11) or
(X_12 and X_13) );
G1: TTLdelay
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => Y,
B => X_6
);
 
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS55N: 2-wide 4-input and-or-Invert gate (Pinout B)
-- Verified 30/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS55N is
generic(
tPLH : time := 15 ns;
tPHL : time := 15 ns
);
port(
X_1 : in std_logic; -- 1A1
X_2 : in std_logic; -- 1A2
X_3 : in std_logic; -- 1A3
X_4 : in std_logic; -- 1A4
--
--
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 1Y\
--
X_10 : in std_logic; -- 1B4
X_11 : in std_logic; -- 1B3
X_12 : in std_logic; -- 1B2
X_13 : in std_logic; -- 1B1
X_14 : inout std_logic -- Vcc
);
end entity SN74LS55N;
 
architecture BEHAV of SN74LS55N is
signal Y : std_logic;
begin
Y <= not( (X_1 and X_2 and X_3 and X_4) or
(X_10 and X_11 and X_12 and X_13) );
G1: TTLdelay
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => Y,
B => X_8
);
 
end architecture BEHAV;
 
-- SN74H60: Dual 4-input expander
-- SN74H61: Triple 3-input expander
-- SN74H62: 3-2-2-3-input And-Or expander
 
-----------------------------------------------------------------------
-- SN74S64N: 4-2-3-2 input and-or-Invert gate
-- Verified 30/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74S64N is
generic(
tPLH : time := 5.5 ns;
tPHL : time := 5.5 ns
);
port(
X_1 : in std_logic; -- 1D1
X_2 : in std_logic; -- 1A1
X_3 : in std_logic; -- 1A2
X_4 : in std_logic; -- 1B1
X_5 : in std_logic; -- 1B2
X_6 : in std_logic; -- 1B3
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 1Y\
X_9 : in std_logic; -- 1C2
X_10 : in std_logic; -- 1C1
X_11 : in std_logic; -- 1D4
X_12 : in std_logic; -- 1D3
X_13 : in std_logic; -- 1D2
X_14 : inout std_logic -- Vcc
);
end entity SN74S64N;
 
architecture BEHAV of SN74S64N is
signal Y : std_logic;
begin
Y <= not( (X_2 and X_3) or
(X_4 and X_5 and X_6) or
(X_9 and X_10) or
(X_11 and X_12 and X_13 and X_1) );
G1: TTLdelay
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => Y,
B => X_8
);
 
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74S65N: 4-2-3-2 input and-or-Invert gate (open collector)
-- Verified 30/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74S65N is
generic(
tPLH : time := 7.5 ns;
tPHL : time := 8.5 ns
);
port(
X_1 : in std_logic; -- 1D1
X_2 : in std_logic; -- 1A1
X_3 : in std_logic; -- 1A2
X_4 : in std_logic; -- 1B1
X_5 : in std_logic; -- 1B2
X_6 : in std_logic; -- 1B3
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 1Y\
X_9 : in std_logic; -- 1C2
X_10 : in std_logic; -- 1C1
X_11 : in std_logic; -- 1D4
X_12 : in std_logic; -- 1D3
X_13 : in std_logic; -- 1D2
X_14 : inout std_logic -- Vcc
);
end entity SN74S65N;
 
architecture BEHAV of SN74S65N is
signal Y, Z : std_logic;
begin
Y <= not( (X_2 and X_3) or
(X_4 and X_5 and X_6) or
(X_9 and X_10) or
(X_11 and X_12 and X_13 and X_1) );
G1: TTLdelay
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => Y,
B => Z
);
 
X_8 <= '0' when Z = '0' else 'Z'; -- Open collector
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS68N: Dual 4-bit decade counter
-- Verified 01/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS68N is
generic(
tPLH10 : time := 11 ns;
tPHL10 : time := 21 ns;
tPLH11 : time := 12 ns; -- From CLK2
tPHL11 : time := 18 ns;
tPLH12 : time := 23 ns;
tPHL12 : time := 32 ns; -- Worst delay = tPHL10 + tPHL12 = 53 ns
tPLH13 : time := 12 ns;
tPHL13 : time := 20 ns;
tPLH20 : time := 11 ns;
tPHL20 : time := 21 ns;
tPLH21 : time := 24 ns; -- From CLK1
tPHL21 : time := 29 ns;
tPLH22 : time := 35 ns;
tPHL22 : time := 40 ns;
tPLH23 : time := 24 ns;
tPHL23 : time := 29 ns
);
port(
X_1 : in std_logic; -- 1CLKA
X_2 : out std_logic; -- 1QB
X_3 : out std_logic; -- 1QD
X_4 : in std_logic; -- \1CLR
X_5 : out std_logic; -- 2QC
--
X_7 : out std_logic; -- 2QA
X_8 : inout std_logic; -- GND
X_9 : in std_logic; -- 2CLK
X_10 : out std_logic; -- 2QB
X_11 : in std_logic; -- \2CLR
X_12 : out std_logic; -- 2QD
X_13 : out std_logic; -- 1QC
X_14 : out std_logic; -- 1QA
X_15 : in std_logic; -- 1CLKB
X_16 : inout std_logic -- Vcc
);
end entity SN74LS68N;
 
architecture BEHAV of SN74LS68N is
signal rst1, rst2 : std_logic;
signal q02 : std_logic;
begin
rst1 <= not X_4;
rst2 <= not X_11;
C1: SN74LS90AN
generic map(
tPLH0 => tPLH10,
tPHL0 => tPHL10,
tPLH1 => tPLH11, -- Delays not shortened: Q0 is explicit
tPHL1 => tPHL11,
tPLH2 => tPLH12,
tPHL2 => tPHL12,
tPLH3 => tPLH13,
tPHL3 => tPHL13
)
port map(
X_1 => X_15, -- CP1\
X_2 => rst1, -- MR1
X_3 => rst1, -- MR2
--
X_5 => open, -- Vcc
X_6 => '0', -- MS1
X_7 => '0', -- MS2
X_8 => X_13, -- Q2
X_9 => X_2, -- Q1
X_10 => open, -- GND
X_11 => X_3, -- Q3
X_12 => X_14, -- Q0
--
X_14 => X_1 -- CP0\
);
 
C2: SN74LS90AN
generic map(
tPLH0 => tPLH20,
tPHL0 => tPHL20,
tPLH1 => tPLH21-tPLH20, -- Delays shortened, as they include Q0
tPHL1 => tPHL21-tPHL20,
tPLH2 => tPLH22-tPLH20,
tPHL2 => tPHL22-tPHL20,
tPLH3 => tPLH23-tPLH20,
tPHL3 => tPHL23-tPHL20
)
port map(
X_1 => q02, -- CP1\
X_2 => rst2, -- MR1
X_3 => rst2, -- MR2
--
X_5 => open, -- Vcc
X_6 => '0', -- MS1
X_7 => '0', -- MS2
X_8 => X_5, -- Q2
X_9 => X_10, -- Q1
X_10 => open, -- GND
X_11 => X_12, -- Q3
X_12 => q02, -- Q0
--
X_14 => X_9 -- CP0\
);
X_7 <= q02;
 
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS69N: Dual 4-bit binary counter
-- Verified 01/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS69N is
generic(
tPLH10 : time := 11 ns;
tPHL10 : time := 21 ns;
tPLH11 : time := 11 ns; -- From CLK2
tPHL11 : time := 21 ns;
tPLH12 : time := 24 ns;
tPHL12 : time := 32 ns;
tPLH13 : time := 38 ns;
tPHL13 : time := 45 ns; -- Worst delay = tPHL10 + tPHL13 = 66 ns
tPLH20 : time := 11 ns;
tPHL20 : time := 21 ns;
tPLH21 : time := 21 ns; -- From CLK1
tPHL21 : time := 29 ns;
tPLH22 : time := 35 ns;
tPHL22 : time := 40 ns;
tPLH23 : time := 54 ns;
tPHL23 : time := 30 ns
);
port(
X_1 : in std_logic; -- 1CLKA
X_2 : out std_logic; -- 1QB
X_3 : out std_logic; -- 1QD
X_4 : in std_logic; -- \1CLR
X_5 : out std_logic; -- 2QC
--
X_7 : out std_logic; -- 2QA
X_8 : inout std_logic; -- GND
X_9 : in std_logic; -- 2CLK
X_10 : out std_logic; -- 2QB
X_11 : in std_logic; -- \2CLR
X_12 : out std_logic; -- 2QD
X_13 : out std_logic; -- 1QC
X_14 : out std_logic; -- 1QA
X_15 : in std_logic; -- 1CLKB
X_16 : inout std_logic -- Vcc
);
end entity SN74LS69N;
 
architecture BEHAV of SN74LS69N is
signal rst1, rst2 : std_logic;
signal q02 : std_logic;
begin
rst1 <= not X_4;
rst2 <= not X_11;
C1: SN74LS93N
generic map(
tPLH0 => tPLH10,
tPHL0 => tPHL10,
tPLH1 => tPLH11,
tPHL1 => tPHL11,
tPLH2 => tPLH12,
tPHL2 => tPHL12,
tPLH3 => tPLH13,
tPHL3 => tPHL13
)
port map(
X_1 => X_15, -- CP1\
X_2 => rst1, -- MR1
X_3 => rst1, -- MR2
--
X_5 => open, -- Vcc
--
--
X_8 => X_13, -- Q2
X_9 => X_2, -- Q1
X_10 => open, -- GND
X_11 => X_3, -- Q3
X_12 => X_14, -- Q0
--
X_14 => X_1 -- CP0\
);
 
C2: SN74LS93N
generic map(
tPLH0 => tPLH20,
tPHL0 => tPHL20,
tPLH1 => tPLH21-tPLH20, -- Delays shortened, as they include Q0
tPHL1 => tPHL21-tPHL20,
tPLH2 => tPLH22-tPLH20,
tPHL2 => tPHL22-tPHL20,
tPLH3 => tPLH23-tPLH20,
tPHL3 => tPHL23-tPHL20
)
port map(
X_1 => q02, -- CP1\
X_2 => rst2, -- MR1
X_3 => rst2, -- MR2
--
X_5 => open, -- Vcc
--
--
X_8 => X_5, -- Q2
X_9 => X_10, -- Q1
X_10 => open, -- GND
X_11 => X_12, -- Q3
X_12 => q02, -- Q0
--
X_14 => X_9 -- CP0\
);
X_7 <= q02;
 
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS70N: JK edge-triggered flipflop (Pinout A)
-- Verified 01/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS70N is
generic(
tSETUP : time := 20 ns; -- Setup time before clock
tPLHCP : time := 50 ns; -- Clock rising
tPHLCP : time := 50 ns; -- Clock falling
tPLHSC : time := 50 ns; -- S/C rising
tPHLSC : time := 50 ns -- S/C falling
);
port(
--
X_2 : in std_logic; -- CD\
X_3 : in std_logic; -- J1
X_4 : in std_logic; -- J2
X_5 : in std_logic; -- J3\
X_6 : out std_logic; -- Q\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- Q
X_9 : in std_logic; -- K3\
X_10 : in std_logic; -- K1
X_11 : in std_logic; -- K2
X_12 : in std_logic; -- CP
X_13 : in std_logic; -- SD\
X_14 : inout std_logic -- Vcc
);
end entity SN74LS70N;
 
architecture BEHAV of SN74LS70N is
signal j, k, nr, ns : std_logic;
begin
j <= X_3 and X_4 and not X_5;
k <= X_11 and X_10 and not X_9;
nr <= not X_2;
ns <= not X_13;
FF: TTLflipflop
generic map(
tPLHCP => tPLHCP,
tPHLCP => tPHLCP,
tPLHSC => tPLHSC,
tPHLSC => tPHLSC,
tSETUP => tSETUP,
Safeclk => false
)
port map(
J => j,
K => k,
C => X_12,
S => ns,
R => nr,
Q => X_8,
QB => X_6
);
 
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS71N: JK master-slave flipflop (with and/or inputs)
-- Verified 01/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS71N is
generic(
tSETUP : time := 0 ns; -- Setup time before clock
tPLHCP : time := 21 ns; -- Clock rising
tPHLCP : time := 27 ns; -- Clock falling
tPLHSC : time := 13 ns; -- S/C rising
tPHLSC : time := 24 ns -- S/C falling
);
port(
X_1 : in std_logic; -- J1A
X_2 : in std_logic; -- J1B
X_3 : in std_logic; -- J2A
X_4 : in std_logic; -- J2B
X_5 : in std_logic; -- SD\
X_6 : out std_logic; -- Q
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- Q\
X_9 : in std_logic; -- K1A
X_10 : in std_logic; -- K1B
X_11 : in std_logic; -- K2A
X_12 : in std_logic; -- K2B
X_13 : in std_logic; -- CP
X_14 : inout std_logic -- Vcc
);
end entity SN74LS71N;
 
architecture BEHAV of SN74LS71N is
signal j, k, ns, nc : std_logic;
begin
j <= (X_1 and X_2 ) or (X_3 and X_4 );
k <= (X_9 and X_10) or (X_11 and X_12);
ns <= not X_5;
nc <= not X_13;
FF: TTLflipflop
generic map(
tPLHCP => tPLHCP,
tPHLCP => tPHLCP,
tPLHSC => tPLHSC,
tPHLSC => tPHLSC,
tSETUP => tSETUP,
Safeclk => true
)
port map(
J => j,
K => k,
C => nc,
S => ns,
R => '0',
Q => X_6,
QB => X_8
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS72N: JK master-slave flipflop (with and inputs) (Pinout A)
-- Verified 01/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS72N is
generic(
tSETUP : time := 0 ns; -- Setup time before clock
tPLHCP : time := 21 ns; -- Clock rising
tPHLCP : time := 27 ns; -- Clock falling
tPLHSC : time := 13 ns; -- S/C rising
tPHLSC : time := 24 ns -- S/C falling
);
port(
--
X_2 : in std_logic; -- CD\
X_3 : in std_logic; -- J1
X_4 : in std_logic; -- J2
X_5 : in std_logic; -- J3
X_6 : out std_logic; -- Q\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- Q
X_9 : in std_logic; -- K1
X_10 : in std_logic; -- K2
X_11 : in std_logic; -- K3
X_12 : in std_logic; -- CP\
X_13 : in std_logic; -- SD\
X_14 : inout std_logic -- Vcc
);
end entity SN74LS72N;
 
architecture BEHAV of SN74LS72N is
signal j, k, ns, nr, nc : std_logic;
begin
j <= (X_3 and X_4 and X_5 );
k <= (X_9 and X_10 and X_11 );
ns <= not X_13;
nr <= not X_2;
nc <= not X_12;
FF: TTLflipflop
generic map(
tPLHCP => tPLHCP,
tPHLCP => tPHLCP,
tPLHSC => tPLHSC,
tPHLSC => tPHLSC,
tSETUP => tSETUP,
Safeclk => true
)
port map(
J => j,
K => k,
C => nc,
S => ns,
R => nr,
Q => X_8,
QB => X_6
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS73N: Dual JK flipflop
-- Verified 01/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS73N is
generic(
tSETUP : time := 20 ns; -- Setup time before clock
tPLHCP : time := 20 ns; -- Clock rising
tPHLCP : time := 30 ns; -- Clock falling
tPLHSC : time := 20 ns; -- S/C rising
tPHLSC : time := 30 ns -- S/C falling
);
port(
X_1 : in std_logic; -- CP1\
X_2 : in std_logic; -- CD1\
X_3 : in std_logic; -- K1
X_4 : inout std_logic; -- Vcc
X_5 : in std_logic; -- CP2\
X_6 : in std_logic; -- CD2\
X_7 : in std_logic; -- J2
X_8 : out std_logic; -- Q2\
X_9 : out std_logic; -- Q2
X_10 : in std_logic; -- K2
X_11 : inout std_logic; -- GND
X_12 : out std_logic; -- Q1
X_13 : out std_logic; -- Q1\
X_14 : in std_logic -- J1
);
end entity SN74LS73N;
 
architecture BEHAV of SN74LS73N is
subtype Pair is std_logic_vector(0 to 1);
signal C, J, K, R, Q, QB : Pair;
begin
C <= (X_1, X_5 );
R <= (X_2, X_6 );
J <= (X_14, X_7 );
K <= (X_3, X_10);
(X_12, X_9) <= Q;
(X_13, X_8) <= QB;
G1: for i in Pair'range generate
signal nc, nr : std_logic;
begin
nc <= not C(i);
nr <= not R(i);
FF: TTLflipflop
generic map(
tPLHCP => tPLHCP,
tPHLCP => tPHLCP,
tPLHSC => tPLHSC,
tPHLSC => tPHLSC,
tSETUP => tSETUP,
Safeclk => true
)
port map(
J => J(i),
K => K(i),
C => nc,
S => '0',
R => nr,
Q => Q(i),
QB => QB(i)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS74N: Dual D-type +ve edge-triggered flipflop (Pinout A)
-- Verified 01/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS74N is
generic(
tSETUP : time := 20 ns; -- Setup time before clock
tPLHCP : time := 25 ns; -- Clock rising
tPHLCP : time := 35 ns; -- Clock falling
tPLHSC : time := 15 ns; -- S/C rising
tPHLSC : time := 35 ns -- S/C falling
);
port(
X_1 : in std_logic; -- CD1\
X_2 : in std_logic; -- D1
X_3 : in std_logic; -- CP1
X_4 : in std_logic; -- SD1\
X_5 : out std_logic; -- Q1
X_6 : out std_logic; -- Q1\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- Q2\
X_9 : out std_logic; -- Q2
X_10 : in std_logic; -- SD2\
X_11 : in std_logic; -- CP2
X_12 : in std_logic; -- D2
X_13 : in std_logic; -- CD2\
X_14 : inout std_logic -- Vcc
);
end entity SN74LS74N;
 
architecture BEHAV of SN74LS74N is
subtype Pair is std_logic_vector(0 to 1);
signal C, D, R, S, Q, QB : Pair;
begin
C <= (X_3, X_11 );
R <= (X_1, X_13 );
S <= (X_4, X_10 );
D <= (X_2, X_12 );
(X_5, X_9) <= Q;
(X_6, X_8) <= QB;
G1: for i in Pair'range generate
signal nr, ns, nd : std_logic;
begin
nd <= not D(i);
nr <= not R(i);
ns <= not S(i);
FF: TTLflipflop
generic map(
tPLHCP => tPLHCP,
tPHLCP => tPHLCP,
tPLHSC => tPLHSC,
tPHLSC => tPHLSC,
tSETUP => tSETUP,
Safeclk => false
)
port map(
J => D(i),
K => nd,
C => C(i),
S => ns,
R => nr,
Q => Q(i),
QB => QB(i)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS75N: 4-bit bistable latch
-- Verified 21/12/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS75N is
generic(
tSETUP : time := 20 ns; -- Setup time before clock
tPLHCP : time := 40 ns; -- Rising
tPHLCP : time := 25 ns -- Ralling
);
port(
X_1 : out std_logic; -- Q1\
X_2 : in std_logic; -- D1
X_3 : in std_logic; -- D2
X_4 : in std_logic; -- E34
X_5 : inout std_logic; -- Vcc
X_6 : in std_logic; -- D3
X_7 : in std_logic; -- D4
X_8 : out std_logic; -- Q4\
X_9 : out std_logic; -- Q4
X_10 : out std_logic; -- Q3\
X_11 : out std_logic; -- Q3
X_12 : inout std_logic; -- GND
X_13 : in std_logic; -- E12
X_14 : out std_logic; -- Q2\
X_15 : out std_logic; -- Q2
X_16 : out std_logic -- Q1
);
end entity SN74LS75N;
 
architecture BEHAV of SN74LS75N is
signal D, E, Q, QB : std_logic_vector(4 downto 1);
begin
D <= (X_7, X_6, X_3, X_2);
E <= (X_4, X_4, X_13, X_13);
(X_9, X_11, X_15, X_16) <= Q;
(X_8, X_10, X_14, X_1 ) <= QB;
 
G: for i in D'range generate
signal R, S : std_logic;
begin
process(D, E) is
begin
if E(i)'event and E(i) = '0' and now > tSETUP then -- Data is registered on the falling edge
assert D(i)'stable(tSETUP)
report "Setup time violation: (" & integer'image(i) & ") " & time'image(D(i)'last_event)
severity failure;
end if;
if E(i) = '1' then
R <= D(i);
S <= not D(i);
end if;
end process;
D1: TTLdelay
generic map(
tPLH => tPLHCP,
tPHL => tPHLCP
)
port map(
A => R,
B => Q(i)
);
 
D2: TTLdelay
generic map(
tPLH => tPLHCP,
tPHL => tPHLCP
)
port map(
A => S,
B => QB(i)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS76N: Dual JK flipflop
-- Verified 01/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS76N is
generic(
tSETUP : time := 20 ns; -- Setup time before clock
tPLHCP : time := 20 ns; -- Clock rising
tPHLCP : time := 30 ns; -- Clock falling
tPLHSC : time := 20 ns; -- S/C rising
tPHLSC : time := 30 ns -- S/C falling
);
port(
X_1 : in std_logic; -- CP1\
X_2 : in std_logic; -- SD1\
X_3 : in std_logic; -- CD1\
X_4 : in std_logic; -- J1
X_5 : inout std_logic; -- Vcc
X_6 : in std_logic; -- CP2\
X_7 : in std_logic; -- SD2\
X_8 : in std_logic; -- CD2\
X_9 : in std_logic; -- J2
X_10 : out std_logic; -- Q2\
X_11 : out std_logic; -- Q2
X_12 : in std_logic; -- K2
X_13 : inout std_logic; -- GND
X_14 : out std_logic; -- Q1\
X_15 : out std_logic; -- Q1
X_16 : in std_logic -- K1
);
end entity SN74LS76N;
 
architecture BEHAV of SN74LS76N is
subtype Pair is std_logic_vector(0 to 1);
signal C, J, K, R, S, Q, QB : Pair;
begin
C <= (X_1, X_6 );
R <= (X_3, X_8 );
S <= (X_2, X_7 );
J <= (X_4, X_9 );
K <= (X_16, X_12);
(X_15, X_11) <= Q;
(X_14, X_10) <= QB;
G1: for i in Pair'range generate
signal nc, nr, np : std_logic;
begin
nc <= not C(i);
nr <= not R(i);
np <= not S(i);
FF: TTLflipflop
generic map(
tPLHCP => tPLHCP,
tPHLCP => tPHLCP,
tPLHSC => tPLHSC,
tPHLSC => tPHLSC,
tSETUP => tSETUP,
Safeclk => true
)
port map(
J => J(i),
K => K(i),
C => nc,
S => np,
R => nr,
Q => Q(i),
QB => QB(i)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS77N: Quad D-type latch
-- As 7475 without the Q\ outputs
-- Verified 05/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS77N is
generic(
tSETUP : time := 20 ns; -- Setup time before clock
tPLHCP : time := 40 ns; -- Rising
tPHLCP : time := 25 ns -- Ralling
);
port(
X_1 : in std_logic; -- D1
X_2 : in std_logic; -- D2
X_3 : in std_logic; -- E34
X_4 : inout std_logic; -- Vcc
X_5 : in std_logic; -- D3
X_6 : in std_logic; -- D4
--
X_8 : out std_logic; -- Q4
X_9 : out std_logic; -- Q3
--
X_11 : inout std_logic; -- GND
X_12 : in std_logic; -- E12
X_13 : out std_logic; -- Q2
X_14 : out std_logic -- Q1
);
end entity SN74LS77N;
 
architecture BEHAV of SN74LS77N is
signal D, E, Q : std_logic_vector(4 downto 1);
begin
D <= (X_6, X_5, X_2, X_1);
E <= (X_3, X_3, X_12, X_12);
(X_8, X_9, X_13, X_14) <= Q;
 
G: for i in D'range generate
signal R, S : std_logic;
begin
process(D, E) is
begin
if E(i)'event and E(i) = '0' and now > tSETUP then -- Data is registered on the falling edge
assert D(i)'stable(tSETUP)
report "Setup time violation"
severity failure;
end if;
if E(i) = '1' then
R <= D(i);
S <= not D(i);
end if;
end process;
D1: TTLdelay
generic map(
tPLH => tPLHCP,
tPHL => tPHLCP
)
port map(
A => R,
B => Q(i)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS78N: Dual JK flipflop (Pinout A)
-- Verified 01/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS78N is
generic(
tSETUP : time := 20 ns; -- Setup time before clock
tPLHCP : time := 20 ns; -- Clock rising
tPHLCP : time := 30 ns; -- Clock falling
tPLHSC : time := 20 ns; -- S/C rising
tPHLSC : time := 30 ns -- S/C falling
);
port(
X_1 : in std_logic; -- K1
X_2 : out std_logic; -- Q1
X_3 : out std_logic; -- Q1\
X_4 : in std_logic; -- J1
X_5 : out std_logic; -- Q2\
X_6 : out std_logic; -- Q2
X_7 : inout std_logic; -- GND
X_8 : in std_logic; -- K2
X_9 : in std_logic; -- CP\
X_10 : in std_logic; -- SD2\
X_11 : in std_logic; -- J2
X_12 : in std_logic; -- CD\
X_13 : in std_logic; -- SD1\
X_14 : inout std_logic -- Vcc
);
end entity SN74LS78N;
 
architecture BEHAV of SN74LS78N is
subtype Pair is std_logic_vector(0 to 1);
signal J, K, S, Q, QB : Pair;
begin
S <= (X_13, X_10);
J <= (X_4, X_11);
K <= (X_1, X_8 );
(X_2, X_6) <= Q;
(X_3, X_5) <= QB;
G1: for i in Pair'range generate
signal nc, nr, np : std_logic;
begin
nc <= not X_9;
nr <= not X_12;
np <= not S(i);
FF: TTLflipflop
generic map(
tPLHCP => tPLHCP,
tPHLCP => tPHLCP,
tPLHSC => tPLHSC,
tPHLSC => tPHLSC,
tSETUP => tSETUP,
Safeclk => true
)
port map(
J => J(i),
K => K(i),
C => nc,
S => np,
R => nr,
Q => Q(i),
QB => QB(i)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN7480N: Gated full adder (Pinout A)
-- The expansion inputs are not modelled
-- Verified 05/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN7480N is
generic(
tPLHCC : time := 17 ns; -- Carry-in to carry-out
tPHLCC : time := 12 ns;
tPLHBC : time := 25 ns; -- Data to carry-out
tPHLBC : time := 55 ns;
tPLHS : time := 70 ns; -- Data* to S
tPHLS : time := 80 ns;
tPLHSB : time := 55 ns; -- Data* to S\
tPHLSB : time := 75 ns;
tPLHX : time := 65 ns; -- Data to Data*
tPHLX : time := 25 ns
);
port(
-- BX
X_2 : in std_logic; -- BC
X_3 : in std_logic; -- CN
X_4 : out std_logic; -- CNP1\
X_5 : out std_logic; -- S
X_6 : out std_logic; -- S\
X_7 : inout std_logic; -- GND
X_8 : in std_logic; -- A1
X_9 : in std_logic; -- A2
-- AX
X_11 : in std_logic; -- AC
X_12 : in std_logic; -- B1
X_13 : in std_logic; -- B2
X_14 : inout std_logic -- Vcc
);
end entity SN7480N;
 
architecture BEHAV of SN7480N is
signal ASI, BSI, AS, BS, C2, S, SB : std_logic;
signal tPLHC, tPHLC : time;
begin
ASI <= not(X_8 and X_9 );
BSI <= not(X_12 and X_13);
DASI: TTLdelay
generic map(
tPLH => tPLHX,
tPHL => tPHLX
)
port map(
A => ASI,
B => AS
);
DBSI: TTLdelay
generic map(
tPLH => tPLHX,
tPHL => tPHLX
)
port map(
A => BSI,
B => BS
);
process(all) is
variable A, B : std_logic;
variable IP : std_logic_vector(2 downto 0);
begin
if X_3'event then
tPLHC <= tPLHCC;
tPHLC <= tPHLCC;
else
tPLHC <= tPLHBC;
tPHLC <= tPHLBC;
end if;
A := not(AS and X_11);
B := not(BS and X_2 );
IP := (X_3, B, A);
case IP is
when "000" => C2 <= '1'; SB <= '1'; S <= '0';
when "001" => C2 <= '1'; SB <= '0'; S <= '1';
when "010" => C2 <= '1'; SB <= '0'; S <= '1';
when "011" => C2 <= '0'; SB <= '1'; S <= '0';
when "100" => C2 <= '0'; SB <= '0'; S <= '1';
when "101" => C2 <= '1'; SB <= '1'; S <= '0';
when "110" => C2 <= '1'; SB <= '1'; S <= '0';
when "111" => C2 <= '0'; SB <= '0'; S <= '1';
when others => null;
end case;
end process;
process(all) is -- Don't use TTLdelay: the delays are not constant
begin
if rising_edge(C2) then
X_4 <= 'X', C2 after tPLHC; -- Rising delay
elsif falling_edge(C2) then
X_4 <= 'X', C2 after tPHLC; -- Falling delay
else
X_4 <= C2; -- 'Z', or bad value
end if;
end process;
 
DS: TTLdelay
generic map(
tPLH => tPLHS,
tPHL => tPHLS
)
port map(
A => S,
B => X_5
);
 
DSB: TTLdelay
generic map(
tPLH => tPLHSB,
tPHL => tPHLSB
)
port map(
A => SB,
B => X_6
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN7482N: 2-bit full adder
-- Verified 05/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN7482N is
generic(
tPLHS1 : time := 34 ns;
tPHLS1 : time := 40 ns;
tPLHS2 : time := 40 ns;
tPHLS2 : time := 42 ns;
tPLHC : time := 19 ns;
tPHLC : time := 27 ns
);
port(
X_1 : out std_logic; -- S1
X_2 : in std_logic; -- A1
X_3 : in std_logic; -- B1
X_4 : inout std_logic; -- Vcc
X_5 : in std_logic; -- CIN
--
--
--
--
X_10 : out std_logic; -- C2
X_11 : inout std_logic; -- GND
X_12 : out std_logic; -- S2
X_13 : in std_logic; -- B2
X_14 : in std_logic -- A2
);
end entity SN7482N;
 
architecture BEHAV of SN7482N is
signal S1, S2, C2 : std_logic;
begin
process(all) is
variable IP : std_logic_vector(4 downto 0);
begin -- Cin A1 B1 A2 B2
IP := ( X_5, X_2, X_3, X_14, X_13);
case IP is
when "00000" => S1 <= '0'; S2 <= '0'; C2 <= '0';
when "10000" => S1 <= '1'; S2 <= '0'; C2 <= '0';
when "01000" => S1 <= '1'; S2 <= '0'; C2 <= '0';
when "11000" => S1 <= '0'; S2 <= '1'; C2 <= '0';
when "00100" => S1 <= '1'; S2 <= '0'; C2 <= '0';
when "10100" => S1 <= '0'; S2 <= '1'; C2 <= '0';
when "01100" => S1 <= '0'; S2 <= '1'; C2 <= '0';
when "11100" => S1 <= '1'; S2 <= '1'; C2 <= '0';
when "00010" => S1 <= '0'; S2 <= '1'; C2 <= '0';
when "10010" => S1 <= '1'; S2 <= '1'; C2 <= '0';
when "01010" => S1 <= '1'; S2 <= '1'; C2 <= '0';
when "11010" => S1 <= '0'; S2 <= '0'; C2 <= '1';
when "00110" => S1 <= '1'; S2 <= '1'; C2 <= '0';
when "10110" => S1 <= '0'; S2 <= '0'; C2 <= '1';
when "01110" => S1 <= '0'; S2 <= '0'; C2 <= '1';
when "11110" => S1 <= '1'; S2 <= '0'; C2 <= '1';
when "00001" => S1 <= '0'; S2 <= '1'; C2 <= '0';
when "10001" => S1 <= '1'; S2 <= '1'; C2 <= '0';
when "01001" => S1 <= '1'; S2 <= '1'; C2 <= '0';
when "11001" => S1 <= '0'; S2 <= '0'; C2 <= '1';
when "00101" => S1 <= '1'; S2 <= '1'; C2 <= '0';
when "10101" => S1 <= '0'; S2 <= '0'; C2 <= '1';
when "01101" => S1 <= '0'; S2 <= '0'; C2 <= '1';
when "11101" => S1 <= '1'; S2 <= '0'; C2 <= '1';
when "00011" => S1 <= '0'; S2 <= '0'; C2 <= '1';
when "10011" => S1 <= '1'; S2 <= '0'; C2 <= '1';
when "01011" => S1 <= '1'; S2 <= '0'; C2 <= '1';
when "11011" => S1 <= '0'; S2 <= '1'; C2 <= '1';
when "00111" => S1 <= '1'; S2 <= '0'; C2 <= '1';
when "10111" => S1 <= '0'; S2 <= '1'; C2 <= '1';
when "01111" => S1 <= '0'; S2 <= '1'; C2 <= '1';
when "11111" => S1 <= '1'; S2 <= '1'; C2 <= '1';
when others => S1 <= 'X'; S2 <= 'X'; C2 <= 'X';
end case;
end process;
DS1: TTLdelay
generic map(
tPLH => tPLHS1,
tPHL => tPHLS1
)
port map(
A => S1,
B => X_1
);
 
DS2: TTLdelay
generic map(
tPLH => tPLHS2,
tPHL => tPHLS2
)
port map(
A => S2,
B => X_12
);
 
DC2: TTLdelay
generic map(
tPLH => tPLHC,
tPHL => tPHLC
)
port map(
A => C2,
B => X_10
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS83AN: 4-bit binary full adder (fast carry)
-- Verified 05/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS83AN is
generic(
tPLHS : time := 24 ns;
tPHLS : time := 24 ns;
tPLHC : time := 17 ns;
tPHLC : time := 17 ns
);
port(
X_1 : in std_logic; -- A3
X_2 : out std_logic; -- S2
X_3 : in std_logic; -- A2
X_4 : in std_logic; -- B2
X_5 : inout std_logic; -- Vcc
X_6 : out std_logic; -- S1
X_7 : in std_logic; -- B1
X_8 : in std_logic; -- A1
X_9 : out std_logic; -- S0
X_10 : in std_logic; -- A0
X_11 : in std_logic; -- B0
X_12 : inout std_logic; -- GND
X_13 : in std_logic; -- C0
X_14 : out std_logic; -- C4
X_15 : out std_logic; -- S3
X_16 : in std_logic -- B3
);
end entity SN74LS83AN;
 
architecture BEHAV of SN74LS83AN is
signal A, B, S : unsigned(4 downto 0); -- S(4) = carry-out
signal SUM : unsigned(3 downto 0);
begin
A <= ('0', X_1, X_3, X_8, X_10);
B <= ('0', X_16, X_4, X_7, X_11);
S <= A + B + X_13;
 
G: for i in SUM'range generate
begin
DSM: TTLdelay
generic map(
tPLH => tPLHS,
tPHL => tPHLS
)
port map(
A => S(i),
B => SUM(i)
);
end generate;
DCY: TTLdelay
generic map(
tPLH => tPLHC,
tPHL => tPHLC
)
port map(
A => S(4),
B => X_14
);
(X_15, X_2, X_6, X_9) <= SUM;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS85N: 4-bit magnitude comparator
-- Verified 06/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS85N is
generic(
tPLH : time := 45 ns; -- Worst-case values
tPHL : time := 45 ns
);
port(
X_1 : in std_logic; -- B3
X_2 : in std_logic; -- IA<B
X_3 : in std_logic; -- IA=B
X_4 : in std_logic; -- IA>B
X_5 : out std_logic; -- OA>B
X_6 : out std_logic; -- OA=B
X_7 : out std_logic; -- OA<B
X_8 : inout std_logic; -- GND
X_9 : in std_logic; -- B0
X_10 : in std_logic; -- A0
X_11 : in std_logic; -- B1
X_12 : in std_logic; -- A1
X_13 : in std_logic; -- A2
X_14 : in std_logic; -- B2
X_15 : in std_logic; -- A3
X_16 : inout std_logic -- Vcc
);
end entity SN74LS85N;
 
architecture BEHAV of SN74LS85N is
signal A, B : unsigned(3 downto 0);
signal LT, EQ, GT : std_logic;
alias inLT is X_2;
alias inEQ is X_3;
alias inGT is X_4;
begin
A <= (X_15, X_13, X_12, X_10);
B <= (X_1, X_14, X_11, X_9 );
process(all) is
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;
end process;
DCG: TTLdelay
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => GT,
B => X_5
);
DCL: TTLdelay
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => LT,
B => X_7
);
DCE: TTLdelay
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => EQ,
B => X_6
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS86N: Quad 2-input xor gate
-- Verified 30/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS86N is
generic(
tPLH : time := 30 ns;
tPHL : time := 22 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : in std_logic; -- 1B
X_3 : out std_logic; -- 1Y\
X_4 : in std_logic; -- 2A
X_5 : in std_logic; -- 2B
X_6 : out std_logic; -- 2Y\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 3Y\
X_9 : in std_logic; -- 3B
X_10 : in std_logic; -- 3A
X_11 : out std_logic; -- 4Y\
X_12 : in std_logic; -- 4B
X_13 : in std_logic; -- 4A
X_14 : inout std_logic -- Vcc
);
end entity SN74LS86N;
 
architecture BEHAV of SN74LS86N is
signal A : TTLInputs (1 to 4, 1 to 2);
signal Y : TTLOutputs(1 to 4);
begin
A <= ( (X_1, X_2), (X_4, X_5), (X_9, X_10), (X_12, X_13) );
(X_3, X_6, X_8, X_11) <= Y;
G: TTLgate
generic map(
mode => Zxor, -- Zand, Zor, Zxor, Zbuf
invert => '0', -- '1' will invert the output
ohigh => '1', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74H87N: 4-bit true/complement, zero-one element
-- Verified 06/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74H87N is
generic(
tPLHI : time := 20 ns;
tPHLI : time := 19 ns;
tPLHS : time := 25 ns;
tPHLS : time := 25 ns
);
port(
X_1 : std_logic; -- S2
X_2 : std_logic; -- I1
X_3 : out std_logic; -- Q1
--
X_5 : std_logic; -- I2
X_6 : out std_logic; -- Q2
X_7 : inout std_logic; -- GND
X_8 : std_logic; -- S1
X_9 : out std_logic; -- Q3
X_10 : std_logic; -- I3
--
X_12 : out std_logic; -- Q4
X_13 : std_logic; -- I4
X_14 : inout std_logic -- Vcc
);
end entity SN74H87N;
 
architecture BEHAV of SN74H87N is
signal S1, S2, Z1 : std_logic;
signal I, X, O : std_logic_vector(4 downto 1);
begin
I <= (X_13, X_10, X_5, X_2);
(X_12, X_9, X_6, X_3) <= O;
S1 <= not Z1;
DS1: TTLdelay
generic map(
tPLH => tPLHS,
tPHL => tPHLS
)
port map(
A => X_8,
B => Z1
);
DS2: TTLdelay
generic map(
tPLH => tPLHS,
tPHL => tPHLS
)
port map(
A => X_1,
B => S2
);
G: for j in I'range generate
begin
DI: TTLdelay
generic map(
tPLH => tPLHI,
tPHL => tPHLI
)
port map(
A => I(j),
B => X(j)
);
O(j) <= S2 xor (not(S1 and X(j)));
 
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS89N: 64-bit random-access memory (open collector)
-- Verified 06/06/2016
-----------------------------------------------------------------------
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 SN74LS89N is
generic(
tPLC : time := 10 ns;
tPLA : time := 37 ns;
tREC : time := 30 ns;
tSUD : time := 25 ns;
tSUA : time := 10 ns
);
port(
X_1 : in std_logic; -- A0
X_2 : in std_logic; -- CS\
X_3 : in std_logic; -- WE\
X_4 : in std_logic; -- D1
X_5 : out std_logic; -- Q1\
X_6 : in std_logic; -- D2
X_7 : out std_logic; -- Q2\
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- Q3\
X_10 : in std_logic; -- D3
X_11 : out std_logic; -- Q4\
X_12 : in std_logic; -- D4
X_13 : in std_logic; -- A3
X_14 : in std_logic; -- A2
X_15 : in std_logic; -- A1
X_16 : inout std_logic -- Vcc
);
end entity SN74LS89N;
 
architecture BEHAV of SN74LS89N is
signal RE, WE : std_logic := '1';
signal IA : std_logic_vector(3 downto 0) := (others => '0');
signal D, QB, Q : std_logic_vector(3 downto 0);
constant UNK : std_logic_vector(3 downto 0) := (others => 'X');
signal X, Y, Z : std_logic;
begin
RE <= not( X_3 and not X_2);
WE <= not(not X_3 and not X_2);
IA <= (X_13, X_14, X_15, X_1);
D <= (X_12, X_10, X_6, X_4);
X <= X_2 and not X_3; -- Undefined outputs
Y <= X after tREC;
Z <= X or Y; -- Illegal during this time
 
-- UNK case is explicit in the datasheet
(X_11, X_9, X_7, X_5) <= UNK when Z = '1' else Q;
MB: TTLramblock
generic map(
Omode => OpenColl,
INVT => '1',
tPLC => tPLC,
tPLA => tPLA,
tSUD => tSUD,
tSUA => tSUA
)
port map(
RA => IA,
WA => IA,
D => D,
O => Q,
CE => '0',
RE => RE,
WE => WE
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS90AN: Decade counter (ripple)
-- Verified 30/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS90AN is
generic(
tPLH0 : time := 16 ns;
tPHL0 : time := 18 ns;
tPLH1 : time := 16 ns;
tPHL1 : time := 21 ns;
tPLH2 : time := 32 ns;
tPHL2 : time := 35 ns;
tPLH3 : time := 32 ns;
tPHL3 : time := 35 ns
);
port(
X_1 : in std_logic; -- CP1\
X_2 : in std_logic; -- MR1
X_3 : in std_logic; -- MR2
--
X_5 : inout std_logic; -- Vcc
X_6 : in std_logic; -- MS1
X_7 : in std_logic; -- MS2
X_8 : out std_logic; -- Q2
X_9 : out std_logic; -- Q1
X_10 : inout std_logic; -- GND
X_11 : out std_logic; -- Q3
X_12 : out std_logic; -- Q0
--
X_14 : in std_logic -- CP0\
);
end entity SN74LS90AN;
 
architecture BEHAV of SN74LS90AN is
signal rst, set : std_logic;
signal val : std_logic_vector(3 downto 0);
begin
rst <= not (X_2 and X_3);
set <= not (X_6 and X_7);
(X_11, X_8, X_9, X_12) <= val;
M1: TTLcount4
generic map(
tPLH0 => tPLH0,
tPHL0 => tPHL0,
tPLH1 => tPLH1,
tPHL1 => tPHL1,
tPLH2 => tPLH2,
tPHL2 => tPHL2,
tPLH3 => tPLH3,
tPHL3 => tPHL3,
modulus => 10
)
port map(
ld => '1',
d => (others => '0'),
clka => X_14,
clkb => X_1,
rst => rst,
set => set,
val => val
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS91AN: 8-bit shift register (Pinout A)
-- Verified 06/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS91AN is
generic(
tPLH : time := 40 ns;
tPHL : time := 40 ns;
tSU : time := 25 ns
);
port(
--
--
--
--
X_5 : inout std_logic; -- Vcc
--
--
--
X_9 : in std_logic; -- CP
X_10 : inout std_logic; -- GND
X_11 : in std_logic; -- B
X_12 : in std_logic; -- A
X_13 : out std_logic; -- Q
X_14 : out std_logic -- Q\
);
end entity SN74LS91AN;
 
architecture BEHAV of SN74LS91AN is
signal REG : std_logic_vector(7 downto 0);
signal Q7, DI : std_logic;
alias CP is X_9;
begin
DI <= not(X_11 and X_12);
OPD: TTLdelay
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => REG(7),
B => Q7
);
X_13 <= Q7;
X_14 <= not Q7;
process(CP) is
begin
if CP'event and CP = '1' then
assert DI'stable(tSU) report "Setup violation" severity failure;
REG <= REG(6 downto 0) & DI;
end if;
end process;
 
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS92N: Divide-by-12 counter (ripple)
-- Verified 31/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS92N is
generic(
tPLH0 : time := 16 ns;
tPHL0 : time := 18 ns;
tPLH1 : time := 16 ns;
tPHL1 : time := 21 ns;
tPLH2 : time := 16 ns;
tPHL2 : time := 21 ns;
tPLH3 : time := 32 ns;
tPHL3 : time := 35 ns
);
port(
X_1 : in std_logic; -- CP1\
--
--
--
X_5 : inout std_logic; -- Vcc
X_6 : in std_logic; -- MR1
X_7 : in std_logic; -- MR2
X_8 : out std_logic; -- Q3
X_9 : out std_logic; -- Q2
X_10 : inout std_logic; -- GND
X_11 : out std_logic; -- Q1
X_12 : out std_logic; -- Q0
--
X_14 : in std_logic -- CP0\
);
end entity SN74LS92N;
 
architecture BEHAV of SN74LS92N is
signal rst : std_logic;
signal val : std_logic_vector(3 downto 0);
begin
rst <= not (X_6 and X_7);
(X_8, X_9, X_11, X_12) <= val;
M1: TTLcount4
generic map(
tPLH0 => tPLH0,
tPHL0 => tPHL0,
tPLH1 => tPLH1,
tPHL1 => tPHL1,
tPLH2 => tPLH2,
tPHL2 => tPHL2,
tPLH3 => tPLH3,
tPHL3 => tPHL3,
modulus => 12
)
port map(
ld => '1',
d => (others => '0'),
clka => X_14,
clkb => X_1,
rst => rst,
set => '1',
val => val
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS93N: Divide-by-16 (binary) counter (ripple)
-- Verified 31/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS93N is
generic(
tPLH0 : time := 16 ns;
tPHL0 : time := 18 ns;
tPLH1 : time := 16 ns;
tPHL1 : time := 21 ns;
tPLH2 : time := 32 ns;
tPHL2 : time := 35 ns;
tPLH3 : time := 51 ns;
tPHL3 : time := 51 ns
);
port(
X_1 : in std_logic; -- CP1\
X_2 : in std_logic; -- MR1
X_3 : in std_logic; -- MR2
--
X_5 : inout std_logic; -- Vcc
--
--
X_8 : out std_logic; -- Q2
X_9 : out std_logic; -- Q1
X_10 : inout std_logic; -- GND
X_11 : out std_logic; -- Q3
X_12 : out std_logic; -- Q0
--
X_14 : in std_logic -- CP0\
);
end entity SN74LS93N;
 
architecture BEHAV of SN74LS93N is
signal rst : std_logic;
signal val : std_logic_vector(3 downto 0);
begin
rst <= not (X_2 and X_3);
(X_11, X_8, X_9, X_12) <= val;
M1: TTLcount4
generic map(
tPLH0 => tPLH0,
tPHL0 => tPHL0,
tPLH1 => tPLH1,
tPHL1 => tPHL1,
tPLH2 => tPLH2,
tPHL2 => tPHL2,
tPLH3 => tPLH3,
tPHL3 => tPHL3,
modulus => 16
)
port map(
ld => '1',
d => (others => '0'),
clka => X_14,
clkb => X_1,
rst => rst,
set => '1',
val => val
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS94N: 4-bit shift register
-- Verified 07/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS94N is
generic(
tPLH : time := 40 ns;
tPHL : time := 40 ns;
tSU : time := 35 ns
);
port(
X_1 : in std_logic; -- P1A
X_2 : in std_logic; -- P1B
X_3 : in std_logic; -- P1C
X_4 : in std_logic; -- P1D
X_5 : inout std_logic; -- Vcc
X_6 : in std_logic; -- PL1
X_7 : in std_logic; -- DS
X_8 : in std_logic; -- CP
X_9 : out std_logic; -- QD
X_10 : in std_logic; -- CL
X_11 : in std_logic; -- P2D
X_12 : inout std_logic; -- GND
X_13 : in std_logic; -- P2C
X_14 : in std_logic; -- P2B
X_15 : in std_logic; -- PL2
X_16 : in std_logic -- P2A
);
end entity SN74LS94N;
 
architecture BEHAV of SN74LS94N is
signal REG, PL1, PL2 : std_logic_vector(3 downto 0);
signal LD : std_logic;
alias CLK is X_8;
alias CL is X_10;
alias LD1 is X_6;
alias LD2 is X_15;
alias DS is X_7;
begin
PL1 <= (X_4, X_3, X_2, X_1 );
PL2 <= (X_11, X_13, X_14, X_16);
LD <= LD1 or LD2;
process(CLK, CL, LD) is
begin
if CL = '1' then
REG <= (others => '0');
elsif LD = '1' then
for i in REG'range loop
REG(i) <= REG(i) or (PL1(i) and LD1) or (PL2(i) and LD2);
end loop;
elsif CLK'event and CLK = '1' then
assert DS'stable(tSU) report "Data setup violation" severity failure;
REG <= REG(2 downto 0) & DS;
end if;
end process;
DO: TTLdelay
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => REG(3),
B => X_9
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS95N: 4-bit right/left shift register
-- Verified 07/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS95N is
generic(
tPLH : time := 27 ns;
tPHL : time := 27 ns;
tSU : time := 20 ns
);
port(
X_1 : in std_logic; -- DS
X_2 : in std_logic; -- P0
X_3 : in std_logic; -- P1
X_4 : in std_logic; -- P2
X_5 : in std_logic; -- P3
X_6 : in std_logic; -- PE
X_7 : inout std_logic; -- GND
X_8 : in std_logic; -- CP2\
X_9 : in std_logic; -- CP1\
X_10 : out std_logic; -- Q3
X_11 : out std_logic; -- Q2
X_12 : out std_logic; -- Q1
X_13 : out std_logic; -- Q0
X_14 : inout std_logic -- Vcc
);
end entity SN74LS95N;
 
architecture BEHAV of SN74LS95N is
signal P, REG, Q : std_logic_vector(3 downto 0);
alias CP1 is X_9;
alias CP2 is X_8;
alias PE is X_6;
alias DS is X_1;
begin
P <= (X_5, X_4, X_3, X_2);
(X_10, X_11, X_12, X_13) <= Q;
process(CP1, CP2) is
begin
if CP2'event and CP2 = '0' and PE = '1' then
assert P'stable(tSU) report "Setup violation: parallel" severity failure;
REG <= P;
elsif CP1'event and CP1 = '0' and PE = '0' then
assert DS'stable(tSU) report "Setup violation: serial" severity failure;
REG <= REG(2 downto 0) & DS;
end if;
end process;
DO: TTLdelays
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => REG,
B => Q
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS96N: 5-bit shift register
-- Verified 07/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS96N is
generic(
tPLH : time := 40 ns;
tPHL : time := 40 ns;
tSU : time := 30 ns
);
port(
X_1 : in std_logic; -- CP
X_2 : in std_logic; -- P0
X_3 : in std_logic; -- P1
X_4 : in std_logic; -- P2
X_5 : inout std_logic; -- Vcc
X_6 : in std_logic; -- P3
X_7 : in std_logic; -- P4
X_8 : in std_logic; -- PL
X_9 : in std_logic; -- DS
X_10 : out std_logic; -- Q4
X_11 : out std_logic; -- Q3
X_12 : inout std_logic; -- GND
X_13 : out std_logic; -- Q2
X_14 : out std_logic; -- Q1
X_15 : out std_logic; -- Q0
X_16 : in std_logic -- CL\
);
end entity SN74LS96N;
 
architecture BEHAV of SN74LS96N is
signal REG, PL, Q : std_logic_vector(4 downto 0);
alias CLK is X_1;
alias CL is X_16;
alias LD is X_8;
alias DS is X_9;
begin
(X_10, X_11, X_13, X_14, X_15) <= Q;
PL <= (X_7, X_6, X_4, X_3, X_2 );
process(CLK, CL, LD) is
begin
if CL = '0' then
REG <= (others => '0');
elsif LD = '1' then
REG <= REG or PL;
elsif CLK'event and CLK = '1' then
assert DS'stable(tSU) report "Data setup violation" severity failure;
REG <= REG(3 downto 0) & DS;
end if;
end process;
DO: TTLdelays
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => REG,
B => Q
);
end architecture BEHAV;
 
-- SN74LS97N: Synchronous modulo-64 bit-rate multiplier
 
-----------------------------------------------------------------------
-- SN74100N: Dual 4-bit latch
-- Verified 07/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74100N is
generic(
tPLH : time := 30 ns;
tPHL : time := 25 ns
);
port(
--
X_2 : in std_logic; -- 1D1
X_3 : in std_logic; -- 1D2
X_4 : out std_logic; -- 1Q2
X_5 : out std_logic; -- 1Q1
--
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 2Q1
X_9 : out std_logic; -- 2Q2
X_10 : in std_logic; -- 2D2
X_11 : in std_logic; -- 2D1
X_12 : in std_logic; -- 2G
--
--
X_15 : in std_logic; -- 2D3
X_16 : in std_logic; -- 2D4
X_17 : out std_logic; -- 2Q4
X_18 : out std_logic; -- 2Q3
X_19 : out std_logic; -- 1Q3
X_20 : out std_logic; -- 1Q4
X_21 : in std_logic; -- 1D4
X_22 : in std_logic; -- 1D3
X_23 : in std_logic; -- 1G
X_24 : inout std_logic -- Vcc
);
end entity SN74100N;
 
architecture BEHAV of SN74100N is
subtype quad is std_logic_vector(4 downto 1);
type biquad is array(2 downto 1) of quad;
signal D, R, Q : biquad;
signal G : std_logic_vector(2 downto 1);
begin
G <= (X_12, X_23);
D <= ((X_16, X_15, X_10, X_11), (X_21, X_22, X_3, X_2));
(X_17, X_18, X_9, X_8) <= Q(2);
(X_20, X_19, X_4, X_5) <= Q(1);
G1: for i in G'range generate
begin
process(G(i), D(i)) is
begin
if G(i) = '1' then
R(i) <= D(i);
end if;
end process;
 
DO: TTLdelays
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => R(i),
B => Q(i)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74H101N: JK edge-triggered flipflop (with and-or inputs) (Pinout A)
-- Verified 01/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74H101N is
generic(
tSETUP : time := 13 ns; -- Setup time before clock
tPLHCP : time := 15 ns; -- Clock rising
tPHLCP : time := 20 ns; -- Clock falling
tPLHSC : time := 12 ns; -- S/C rising
tPHLSC : time := 20 ns -- S/C falling
);
port(
X_1 : in std_logic; -- J1A
X_2 : in std_logic; -- J1B
X_3 : in std_logic; -- J2A
X_4 : in std_logic; -- J2B
X_5 : in std_logic; -- SD\
X_6 : out std_logic; -- Q
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- Q\
X_9 : in std_logic; -- K1A
X_10 : in std_logic; -- K1B
X_11 : in std_logic; -- K2A
X_12 : in std_logic; -- K2B
X_13 : in std_logic; -- CP
X_14 : inout std_logic -- Vcc
);
end entity SN74H101N;
 
architecture BEHAV of SN74H101N is
signal j, k, ns, nc : std_logic;
begin
j <= (X_1 and X_2 ) or (X_3 and X_4 );
k <= (X_9 and X_10) or (X_11 and X_12);
ns <= not X_5;
nc <= not X_13;
FF: TTLflipflop
generic map(
tPLHCP => tPLHCP,
tPHLCP => tPHLCP,
tPLHSC => tPLHSC,
tPHLSC => tPHLSC,
tSETUP => tSETUP,
Safeclk => false
)
port map(
J => j,
K => k,
C => nc,
S => ns,
R => '0',
Q => X_6,
QB => X_8
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74H102N: JK edge-triggered flipflop (with and inputs) (Pinout A)
-- Verified 02/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74H102N is
generic(
tSETUP : time := 13 ns; -- Setup time before clock
tPLHCP : time := 15 ns; -- Clock rising
tPHLCP : time := 20 ns; -- Clock falling
tPLHSC : time := 12 ns; -- S/C rising
tPHLSC : time := 20 ns -- S/C falling
);
port(
--
X_2 : in std_logic; -- CD\
X_3 : in std_logic; -- J1
X_4 : in std_logic; -- J2
X_5 : in std_logic; -- J3
X_6 : out std_logic; -- Q\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- Q
X_9 : in std_logic; -- K1
X_10 : in std_logic; -- K2
X_11 : in std_logic; -- K3
X_12 : in std_logic; -- CP\
X_13 : in std_logic; -- SD\
X_14 : inout std_logic -- Vcc
);
end entity SN74H102N;
 
architecture BEHAV of SN74H102N is
signal j, k, nr, ns, nc : std_logic;
begin
j <= X_3 and X_4 and X_5 ;
k <= X_9 and X_10 and X_11;
nr <= not X_2;
ns <= not X_13;
nc <= not X_12;
FF: TTLflipflop
generic map(
tPLHCP => tPLHCP,
tPHLCP => tPHLCP,
tPLHSC => tPLHSC,
tPHLSC => tPHLSC,
tSETUP => tSETUP,
Safeclk => false
)
port map(
J => j,
K => k,
C => nc,
S => ns,
R => nr,
Q => X_8,
QB => X_6
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74H103N: Dual JK edge-triggered flipflop
-- Verified 02/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74H103N is
generic(
tSETUP : time := 13 ns; -- Setup time before clock
tPLHCP : time := 15 ns; -- Clock rising
tPHLCP : time := 20 ns; -- Clock falling
tPLHSC : time := 12 ns; -- S/C rising
tPHLSC : time := 35 ns -- S/C falling
);
port(
X_1 : in std_logic; -- CP1\
X_2 : in std_logic; -- CD1\
X_3 : in std_logic; -- K1
X_4 : inout std_logic; -- Vcc
X_5 : in std_logic; -- CP2\
X_6 : in std_logic; -- CD2\
X_7 : in std_logic; -- J2
X_8 : out std_logic; -- Q2\
X_9 : out std_logic; -- Q2
X_10 : in std_logic; -- K2
X_11 : inout std_logic; -- GND
X_12 : out std_logic; -- Q1
X_13 : out std_logic; -- Q1\
X_14 : in std_logic -- J1
);
end entity SN74H103N;
 
architecture BEHAV of SN74H103N is
subtype Pair is std_logic_vector(0 to 1);
signal C, J, K, R, Q, QB : Pair;
begin
C <= (X_1, X_5 );
R <= (X_2, X_6 );
J <= (X_14, X_7 );
K <= (X_3, X_10);
(X_12, X_9) <= Q;
(X_13, X_8) <= QB;
G1: for i in Pair'range generate
signal nc, nr : std_logic;
begin
nc <= not C(i);
nr <= not R(i);
FF: TTLflipflop
generic map(
tPLHCP => tPLHCP,
tPHLCP => tPHLCP,
tPLHSC => tPLHSC,
tPHLSC => tPHLSC,
tSETUP => tSETUP,
Safeclk => false
)
port map(
J => J(i),
K => K(i),
C => nc,
S => '0',
R => nr,
Q => Q(i),
QB => QB(i)
);
end generate;
end architecture BEHAV;
 
-- SN74105N: JK flipflop with extra gating
-----------------------------------------------------------------------
-- SN74H106N: Dual JK edge-triggered flipflop
-- Verified 02/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74H106N is
generic(
tSETUP : time := 13 ns; -- Setup time before clock
tPLHCP : time := 15 ns; -- Clock rising
tPHLCP : time := 20 ns; -- Clock falling
tPLHSC : time := 12 ns; -- S/C rising
tPHLSC : time := 35 ns -- S/C falling
);
port(
X_1 : in std_logic; -- CP1\
X_2 : in std_logic; -- SD1\
X_3 : in std_logic; -- CD1\
X_4 : in std_logic; -- J1
X_5 : inout std_logic; -- Vcc
X_6 : in std_logic; -- CP2\
X_7 : in std_logic; -- SD2\
X_8 : in std_logic; -- CD2\
X_9 : in std_logic; -- J2
X_10 : out std_logic; -- Q2\
X_11 : out std_logic; -- Q2
X_12 : in std_logic; -- K2
X_13 : inout std_logic; -- GND
X_14 : out std_logic; -- Q1\
X_15 : out std_logic; -- Q1
X_16 : in std_logic -- K1
);
end entity SN74H106N;
 
architecture BEHAV of SN74H106N is
subtype Pair is std_logic_vector(0 to 1);
signal C, J, K, R, S, Q, QB : Pair;
begin
C <= (X_1, X_6 );
R <= (X_3, X_8 );
S <= (X_2, X_7 );
J <= (X_4, X_9 );
K <= (X_16, X_12);
(X_15, X_11) <= Q;
(X_14, X_10) <= QB;
G1: for i in Pair'range generate
signal nc, ns, nr : std_logic;
begin
nc <= not C(i);
nr <= not R(i);
ns <= not S(i);
FF: TTLflipflop
generic map(
tPLHCP => tPLHCP,
tPHLCP => tPHLCP,
tPLHSC => tPLHSC,
tPHLSC => tPHLSC,
tSETUP => tSETUP,
Safeclk => false
)
port map(
J => J(i),
K => K(i),
C => nc,
S => ns,
R => nr,
Q => Q(i),
QB => QB(i)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS107N: Dual JK flipflop
-- Verified 02/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS107N is
generic(
tSETUP : time := 20 ns; -- Setup time before clock
tPLHCP : time := 20 ns; -- Clock rising
tPHLCP : time := 30 ns; -- Clock falling
tPLHSC : time := 20 ns; -- S/C rising
tPHLSC : time := 30 ns -- S/C falling
);
port(
X_1 : in std_logic; -- J1
X_2 : out std_logic; -- Q1\
X_3 : out std_logic; -- Q1
X_4 : in std_logic; -- K1
X_5 : out std_logic; -- Q2
X_6 : out std_logic; -- Q2\
X_7 : inout std_logic; -- GND
X_8 : in std_logic; -- J2
X_9 : in std_logic; -- CP2\
X_10 : in std_logic; -- CD2\
X_11 : in std_logic; -- K2
X_12 : in std_logic; -- CP1\
X_13 : in std_logic; -- CD2\
X_14 : inout std_logic -- Vcc
);
end entity SN74LS107N;
 
architecture BEHAV of SN74LS107N is
subtype Pair is std_logic_vector(0 to 1);
signal C, J, K, R, Q, QB : Pair;
begin
C <= (X_12, X_9 );
R <= (X_13, X_10);
J <= (X_1, X_8 );
K <= (X_4, X_11);
(X_3, X_5) <= Q;
(X_2, X_6) <= QB;
G1: for i in Pair'range generate
signal nc, nr : std_logic;
begin
nc <= not C(i);
nr <= not R(i);
FF: TTLflipflop
generic map(
tPLHCP => tPLHCP,
tPHLCP => tPHLCP,
tPLHSC => tPLHSC,
tPHLSC => tPHLSC,
tSETUP => tSETUP,
Safeclk => false
)
port map(
J => J(i),
K => K(i),
C => nc,
S => '0',
R => nr,
Q => Q(i),
QB => QB(i)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74H108N: Dual JK edge-triggered flipflop
-- Verified 02/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74H108N is
generic(
tSETUP : time := 13 ns; -- Setup time before clock
tPLHCP : time := 15 ns; -- Clock rising
tPHLCP : time := 20 ns; -- Clock falling
tPLHSC : time := 12 ns; -- S/C rising
tPHLSC : time := 35 ns -- S/C falling
);
port(
X_1 : in std_logic; -- K1
X_2 : out std_logic; -- Q1
X_3 : out std_logic; -- Q1\
X_4 : in std_logic; -- J1
X_5 : out std_logic; -- Q2\
X_6 : out std_logic; -- Q2
X_7 : inout std_logic; -- GND
X_8 : in std_logic; -- K2
X_9 : in std_logic; -- CP\
X_10 : in std_logic; -- SD2\
X_11 : in std_logic; -- J2
X_12 : in std_logic; -- CD\
X_13 : in std_logic; -- SD1\
X_14 : inout std_logic -- Vcc
);
end entity SN74H108N;
 
architecture BEHAV of SN74H108N is
subtype Pair is std_logic_vector(0 to 1);
signal J, K, S, Q, QB : Pair;
begin
S <= (X_13, X_10);
J <= (X_4, X_11);
K <= (X_1, X_8 );
(X_2, X_6) <= Q;
(X_3, X_5) <= QB;
G1: for i in Pair'range generate
signal nc, nr, ns : std_logic;
begin
nc <= not X_9;
nr <= not X_12;
ns <= not S(i);
FF: TTLflipflop
generic map(
tPLHCP => tPLHCP,
tPHLCP => tPHLCP,
tPLHSC => tPLHSC,
tPHLSC => tPHLSC,
tSETUP => tSETUP,
Safeclk => false
)
port map(
J => J(i),
K => K(i),
C => nc,
S => ns,
R => nr,
Q => Q(i),
QB => QB(i)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS109N: Dual JK +ve edge-triggered flipflop
-- Verified 04/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS109N is
generic(
tSETUP : time := 18 ns; -- Setup time before clock
tPLHCP : time := 25 ns; -- Clock rising
tPHLCP : time := 35 ns; -- Clock falling
tPLHSC : time := 15 ns; -- S/C rising
tPHLSC : time := 24 ns -- S/C falling
);
port(
X_1 : in std_logic; -- CD1\
X_2 : in std_logic; -- J1
X_3 : in std_logic; -- K1\
X_4 : in std_logic; -- CP1
X_5 : in std_logic; -- SD1\
X_6 : out std_logic; -- Q1
X_7 : out std_logic; -- Q1\
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- Q2\
X_10 : out std_logic; -- Q2
X_11 : in std_logic; -- SD2\
X_12 : in std_logic; -- CP2
X_13 : in std_logic; -- K2\
X_14 : in std_logic; -- J2
X_15 : in std_logic; -- CD2\
X_16 : inout std_logic -- Vcc
);
end entity SN74LS109N;
 
architecture BEHAV of SN74LS109N is
subtype Pair is std_logic_vector(0 to 1);
signal C, J, K, R, S, Q, QB : Pair;
begin
C <= (X_4, X_12);
R <= (X_1, X_15);
S <= (X_5, X_11);
J <= (X_2, X_14);
K <= (X_3, X_13);
(X_6, X_10) <= Q;
(X_7, X_9 ) <= QB;
G1: for i in Pair'range generate
signal kb, nr, ns : std_logic;
begin
nr <= not R(i);
ns <= not S(i);
kb <= not K(i);
FF: TTLflipflop
generic map(
tPLHCP => tPLHCP,
tPHLCP => tPHLCP,
tPLHSC => tPLHSC,
tPHLSC => tPHLSC,
tSETUP => tSETUP,
Safeclk => false
)
port map(
J => J(i),
K => kb,
C => C(i),
S => ns,
R => nr,
Q => Q(i),
QB => QB(i)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS112N: Dual JK -ve edge-triggered flipflop
-- Verified 04/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS112N is
generic(
tSETUP : time := 20 ns; -- Setup time before clock
tPLHCP : time := 16 ns; -- Clock rising
tPHLCP : time := 24 ns; -- Clock falling
tPLHSC : time := 16 ns; -- S/C rising
tPHLSC : time := 24 ns -- S/C falling
);
port(
X_1 : in std_logic; -- CP1\
X_2 : in std_logic; -- K1
X_3 : in std_logic; -- J1
X_4 : in std_logic; -- SD1\
X_5 : out std_logic; -- Q1
X_6 : out std_logic; -- Q1\
X_7 : out std_logic; -- Q2\
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- Q2
X_10 : in std_logic; -- SD2\
X_11 : in std_logic; -- J2
X_12 : in std_logic; -- K2
X_13 : in std_logic; -- CP2\
X_14 : in std_logic; -- CD2\
X_15 : in std_logic; -- CD1\
X_16 : inout std_logic -- Vcc
);
end entity SN74LS112N;
 
architecture BEHAV of SN74LS112N is
subtype Pair is std_logic_vector(0 to 1);
signal C, J, K, R, S, Q, QB : Pair;
begin
C <= (X_1, X_13);
R <= (X_15, X_14);
S <= (X_4, X_10);
J <= (X_3, X_11);
K <= (X_2, X_12);
(X_5, X_9) <= Q;
(X_6, X_7) <= QB;
G1: for i in Pair'range generate
signal nc, nr, ns : std_logic;
begin
nc <= not C(i);
nr <= not R(i);
ns <= not S(i);
FF: TTLflipflop
generic map(
tPLHCP => tPLHCP,
tPHLCP => tPHLCP,
tPLHSC => tPLHSC,
tPHLSC => tPHLSC,
tSETUP => tSETUP,
Safeclk => false
)
port map(
J => J(i),
K => K(i),
C => nc,
S => ns,
R => nr,
Q => Q(i),
QB => QB(i)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS113N: Dual JK edge-triggered flipflop
-- Verified 04/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS113N is
generic(
tSETUP : time := 20 ns; -- Setup time before clock
tPLHCP : time := 16 ns; -- Clock rising
tPHLCP : time := 24 ns; -- Clock falling
tPLHSC : time := 16 ns; -- S/C rising
tPHLSC : time := 24 ns -- S/C falling
);
port(
X_1 : in std_logic; -- CP1\
X_2 : in std_logic; -- K1
X_3 : in std_logic; -- J1
X_4 : in std_logic; -- SD1\
X_5 : out std_logic; -- Q1
X_6 : out std_logic; -- Q1\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- Q2\
X_9 : out std_logic; -- Q2
X_10 : in std_logic; -- SD2\
X_11 : in std_logic; -- J2
X_12 : in std_logic; -- K2
X_13 : in std_logic; -- CP2\
X_14 : inout std_logic -- Vcc
);
end entity SN74LS113N;
 
architecture BEHAV of SN74LS113N is
subtype Pair is std_logic_vector(0 to 1);
signal C, J, K, S, Q, QB : Pair;
begin
C <= (X_1, X_13);
S <= (X_4, X_10);
J <= (X_3, X_11);
K <= (X_2, X_12);
(X_5, X_9) <= Q;
(X_6, X_8) <= QB;
G1: for i in Pair'range generate
signal nc, ns : std_logic;
begin
nc <= not C(i);
ns <= not S(i);
FF: TTLflipflop
generic map(
tPLHCP => tPLHCP,
tPHLCP => tPHLCP,
tPLHSC => tPLHSC,
tPHLSC => tPHLSC,
tSETUP => tSETUP,
Safeclk => false
)
port map(
J => J(i),
K => K(i),
C => nc,
S => ns,
R => '0',
Q => Q(i),
QB => QB(i)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS114N: Dual JK -ve edge-triggered flipflop
-- Verified 04/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS114N is
generic(
tSETUP : time := 20 ns; -- Setup time before clock
tPLHCP : time := 16 ns; -- Clock rising
tPHLCP : time := 24 ns; -- Clock falling
tPLHSC : time := 16 ns; -- S/C rising
tPHLSC : time := 24 ns -- S/C falling
);
port(
X_1 : in std_logic; -- CD\
X_2 : in std_logic; -- K1
X_3 : in std_logic; -- J1
X_4 : in std_logic; -- SD1\
X_5 : out std_logic; -- Q1
X_6 : out std_logic; -- Q1\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- Q2\
X_9 : out std_logic; -- Q2
X_10 : in std_logic; -- SD2\
X_11 : in std_logic; -- J2
X_12 : in std_logic; -- K2
X_13 : in std_logic; -- CP\
X_14 : inout std_logic -- Vcc
);
end entity SN74LS114N;
 
architecture BEHAV of SN74LS114N is
subtype Pair is std_logic_vector(0 to 1);
signal J, K, S, Q, QB : Pair;
begin
S <= (X_4, X_10);
J <= (X_3, X_11);
K <= (X_2, X_12);
(X_5, X_9) <= Q;
(X_6, X_8) <= QB;
G1: for i in Pair'range generate
signal nc, nr, ns : std_logic;
begin
nc <= not X_13;
ns <= not S(i);
nr <= not X_1;
FF: TTLflipflop
generic map(
tPLHCP => tPLHCP,
tPHLCP => tPHLCP,
tPLHSC => tPLHSC,
tPHLSC => tPHLSC,
tSETUP => tSETUP,
Safeclk => false
)
port map(
J => J(i),
K => K(i),
C => nc,
S => ns,
R => nr,
Q => Q(i),
QB => QB(i)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74121N: Monostable multivibrator
-- Tw = 0.69 * R * C
-- Verified 04/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74121N is
generic(
W : time := 100 us -- Pulse width
);
port(
X_1 : out std_logic; -- Q\
--
X_3 : in std_logic; -- A1\
X_4 : in std_logic; -- A2\
X_5 : in std_logic; -- B
X_6 : out std_logic; -- Q
X_7 : inout std_logic; -- GND
--
X_9 : inout std_logic; -- Rint (open for simulation)
X_10 : inout std_logic; -- Cx
X_11 : inout std_logic; -- RxCx
--
--
X_14 : inout std_logic -- Vcc
);
end entity SN74121N;
 
architecture BEHAV of SN74121N is
constant tD : time := 80 ns; -- Trigger delay from input
constant mt : time := 50 ns; -- Minimum trigger width
 
signal trig, Q : std_logic;
begin
trig <= X_5 and nand_reduce(X_3 & X_4) after tD;
MS: TTLmonostable
generic map(
pwidth => W, -- Triggered pulse width
mintrig => mt, -- Minimum trigger width
retriggerable => false
)
port map(
trig => trig,
reset => '0',
Q => Q
);
X_6 <= Q;
X_1 <= not Q;
 
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74122N: Retriggerable resettable monostable multivibrator
-- Tw = 0.32 * R * X * (1.0 + 0.7/R)
-- Verified 04/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74122N is
generic(
W : time := 100 us -- Pulse width
);
port(
X_1 : in std_logic; -- A1\
X_2 : in std_logic; -- A2\
X_3 : in std_logic; -- B1
X_4 : in std_logic; -- B2
X_5 : in std_logic; -- CD\
X_6 : out std_logic; -- Q\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- Q
X_9 : inout std_logic; -- Rint
--
X_11 : inout std_logic; -- Cx
--
X_13 : inout std_logic; -- RxCx
X_14 : inout std_logic -- Vcc
);
end entity SN74122N;
 
architecture BEHAV of SN74122N is
constant tD : time := 40 ns; -- Trigger delay from input
constant mt : time := 40 ns; -- Minimum trigger width
signal trig, NR, Q : std_logic;
begin
trig <= and_reduce(X_3 & X_4 & X_5 & nand_reduce(X_1 & X_2)) after tD;
NR <= not X_5;
MS: TTLmonostable
generic map(
pwidth => W, -- Triggered pulse width
mintrig => mt, -- Minimum trigger width
retriggerable => true
)
port map(
trig => trig,
reset => NR,
Q => Q
);
X_8 <= Q;
X_6 <= not Q;
 
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74123N: Dual retriggerable resettable monostable multivibrator
-- Tw = 0.28 * R * C * (1.0 + 0.7/R)
-- Verified 04/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74123N is
generic(
W1 : time := 100 us; -- Pulse widths
W2 : time := 100 us
);
port(
X_1 : in std_logic; -- A1\
X_2 : in std_logic; -- B1
X_3 : in std_logic; -- CD1\
X_4 : out std_logic; -- Q1\
X_5 : out std_logic; -- Q2
X_6 : inout std_logic; -- Cx2
X_7 : inout std_logic; -- Rx2Cx2
X_8 : inout std_logic; -- GND
X_9 : in std_logic; -- A2\
X_10 : in std_logic; -- B2
X_11 : in std_logic; -- CD2\
X_12 : out std_logic; -- Q2\
X_13 : out std_logic; -- Q1
X_14 : inout std_logic; -- Cx1
X_15 : inout std_logic; -- Rx1Cx1
X_16 : inout std_logic -- Vcc
);
end entity SN74123N;
 
architecture BEHAV of SN74123N is
constant tD : time := 40 ns; -- Trigger delay from input
constant mt : time := 40 ns; -- Minimum trigger width
signal trig, NR, Q : std_logic_vector(2 downto 1);
type Widths is array(2 downto 1) of time;
constant pw : Widths := (W1, W2);
begin
NR(1) <= not X_3;
trig(1) <= and_reduce(X_3 & X_2 & (not X_1)) after tD;
NR(2) <= not X_11;
trig(2) <= and_reduce(X_11 & X_10 & (not X_9)) after tD;
 
GN: for i in trig'range generate
begin
MS: TTLmonostable
generic map(
pwidth => pw(i), -- Triggered pulse width
mintrig => mt, -- Minimum trigger width
retriggerable => true
)
port map(
trig => trig(i),
reset => NR(i),
Q => Q(i)
);
end generate;
X_13 <= Q(1);
X_4 <= not Q(1);
X_5 <= Q(2);
X_12 <= not Q(2);
 
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS125N: Quad bus buffer (3-state outputs)
-- Verified 07/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS125N is
generic(
tPLH : time := 15 ns;
tPHL : time := 18 ns;
tPHZ : time := 25 ns;
tPLZ : time := 25 ns;
tPHE : time := 16 ns;
tPLE : time := 25 ns
);
port(
X_1 : in std_logic; -- E1\
X_2 : in std_logic; -- D1
X_3 : out std_logic; -- Q1
X_4 : in std_logic; -- E2\
X_5 : in std_logic; -- D2
X_6 : out std_logic; -- Q2
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- Q3
X_9 : in std_logic; -- D3
X_10 : in std_logic; -- E3\
X_11 : out std_logic; -- Q4
X_12 : in std_logic; -- D4
X_13 : in std_logic; -- E4\
X_14 : inout std_logic -- Vcc
);
end entity SN74LS125N;
 
architecture BEHAV of SN74LS125N is
subtype quad is std_logic_vector(3 downto 0);
signal D, E, Q, X : quad;
begin
D <= (X_12, X_9, X_5, X_2);
E <= (X_13, X_10, X_4, X_1);
(X_11, X_8, X_6, X_3) <= Q;
G1: for i in D'range generate
begin
X(i) <= D(i) when E(i) = '0' else 'Z';
process(X(i)) is
variable Z : std_logic_vector(1 downto 0);
begin
if X(i)'event then
Z(1) := X(i)'last_value;
Z(0) := X(i);
case Z is
when "01" => Q(i) <= 'X', X(i) after tPLH;
when "10" => Q(i) <= 'X', X(i) after tPHL;
when "0Z" => Q(i) <= 'X', X(i) after tPLZ;
when "1Z" => Q(i) <= 'X', X(i) after tPHZ;
when "Z0" => Q(i) <= 'X', X(i) after tPLE;
when "Z1" => Q(i) <= 'X', X(i) after tPHE;
when others => Q(i) <= 'X', X(i) after tPHL;
end case;
end if;
end process;
end generate;
 
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS126N: Quad bus buffer (3-state outputs)
-- Verified 07/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS126N is
generic(
tPLH : time := 15 ns;
tPHL : time := 18 ns;
tPHZ : time := 30 ns;
tPLZ : time := 30 ns;
tPHE : time := 20 ns;
tPLE : time := 30 ns
);
port(
X_1 : in std_logic; -- E1
X_2 : in std_logic; -- D1
X_3 : out std_logic; -- Q1
X_4 : in std_logic; -- E2
X_5 : in std_logic; -- D2
X_6 : out std_logic; -- Q2
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- Q3
X_9 : in std_logic; -- D3
X_10 : in std_logic; -- E3
X_11 : out std_logic; -- Q4
X_12 : in std_logic; -- D4
X_13 : in std_logic; -- E4
X_14 : inout std_logic -- Vcc
);
end entity SN74LS126N;
 
architecture BEHAV of SN74LS126N is
subtype quad is std_logic_vector(3 downto 0);
signal D, E, Q, X : quad;
begin
D <= (X_12, X_9, X_5, X_2);
E <= (X_13, X_10, X_4, X_1);
(X_11, X_8, X_6, X_3) <= Q;
G1: for i in D'range generate
begin
X(i) <= D(i) when E(i) = '1' else 'Z';
process(X(i)) is
variable Z : std_logic_vector(1 downto 0);
begin
if X(i)'event then
Z(1) := X(i)'last_value;
Z(0) := X(i);
case Z is
when "01" => Q(i) <= 'X', X(i) after tPLH;
when "10" => Q(i) <= 'X', X(i) after tPHL;
when "0Z" => Q(i) <= 'X', X(i) after tPLZ;
when "1Z" => Q(i) <= 'X', X(i) after tPHZ;
when "Z0" => Q(i) <= 'X', X(i) after tPLE;
when "Z1" => Q(i) <= 'X', X(i) after tPHE;
when others => Q(i) <= 'X', X(i) after tPHL;
end case;
end if;
end process;
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS132N: Quad 2-input Schmitt trigger NAND gate
-- Verified 30/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS132N is
generic(
tPLH : time := 20 ns;
tPHL : time := 20 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : in std_logic; -- 1B
X_3 : out std_logic; -- 1Y\
X_4 : in std_logic; -- 2A
X_5 : in std_logic; -- 2B
X_6 : out std_logic; -- 2Y\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 3Y\
X_9 : in std_logic; -- 3B
X_10 : in std_logic; -- 3A
X_11 : out std_logic; -- 4Y\
X_12 : in std_logic; -- 4B
X_13 : in std_logic; -- 4A
X_14 : inout std_logic -- Vcc
);
end entity SN74LS132N;
 
architecture BEHAV of SN74LS132N is
signal A : TTLInputs (1 to 4, 1 to 2);
signal Y : TTLOutputs(1 to 4);
begin
A <= ( (X_1, X_2), (X_4, X_5), (X_9, X_10), (X_12, X_13) );
(X_3, X_6, X_8, X_11) <= Y;
G: TTLgate
generic map(
mode => Zand, -- Zand, Zor, Zxor, Zbuf
invert => '1', -- '1' will invert the output
ohigh => '1', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS133N: 13-input NAND gate
-- Verified 05/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS133N is
generic(
tPLH : time := 15 ns;
tPHL : time := 38 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : in std_logic; -- 1B
X_3 : in std_logic; -- 1C
X_4 : in std_logic; -- 1D
X_5 : in std_logic; -- 1E
X_6 : in std_logic; -- 1F
X_7 : in std_logic; -- 1G
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- 1Y\
X_10 : in std_logic; -- 1H
X_11 : in std_logic; -- 1J
X_12 : in std_logic; -- 1K
X_13 : in std_logic; -- 1L
X_14 : in std_logic; -- 1M
X_15 : in std_logic; -- 1N
X_16 : inout std_logic -- Vcc
);
end entity SN74LS133N;
 
architecture BEHAV of SN74LS133N is
signal A : TTLInputs (1 to 1, 1 to 13);
signal Y : TTLOutputs(1 to 1);
begin
A(1,1) <= X_1; -- Can't use aggregates with single gate
A(1,2) <= X_2;
A(1,3) <= X_3;
A(1,4) <= X_4;
A(1,5) <= X_5;
A(1,6) <= X_6;
A(1,7) <= X_7;
A(1,8) <= X_10;
A(1,9) <= X_11;
A(1,10) <= X_12;
A(1,11) <= X_13;
A(1,12) <= X_14;
A(1,13) <= X_15;
X_9 <= Y(1); -- Output
G: TTLgate
generic map(
mode => Zand, -- Zand, Zor, Zxor, Zbuf
invert => '1', -- '1' will invert the output
ohigh => '1', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74S134N: 12-input NAND gate (3-state output)
-- Verified 05/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74S134N is
generic(
tPLH : time := 6.0 ns;
tPHL : time := 7.5 ns;
tPZH : time := 19.5 ns;
tPZL : time := 21.0 ns;
tPHZ : time := 8.5 ns;
tPLZ : time := 14.0 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : in std_logic; -- 1B
X_3 : in std_logic; -- 1C
X_4 : in std_logic; -- 1D
X_5 : in std_logic; -- 1E
X_6 : in std_logic; -- 1F
X_7 : in std_logic; -- 1G
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- 1Y\
X_10 : in std_logic; -- 1H
X_11 : in std_logic; -- 1J
X_12 : in std_logic; -- 1K
X_13 : in std_logic; -- 1L
X_14 : in std_logic; -- 1M
X_15 : in std_logic; -- EB
X_16 : inout std_logic -- Vcc
);
end entity SN74S134N;
 
architecture BEHAV of SN74S134N is
signal X, Y, EB : std_logic;
begin
X <= nand_reduce( X_1 & X_2 & X_3 & X_4 & X_5 & X_6 &
X_7 & X_10 & X_11 & X_12 & X_13 & X_14 );
EB <= not X_15;
B1: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => X,
E => EB,
Y => X_9
);
 
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74S135N: Quad XOR/NOR gate
-- Verified 05/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74S135N is
generic(
tPXX : time := 13 ns
);
port(
X_1 : in std_logic; -- A1
X_2 : in std_logic; -- B1
X_3 : out std_logic; -- Y1
X_4 : in std_logic; -- C12
X_5 : in std_logic; -- A2
X_6 : in std_logic; -- B2
X_7 : out std_logic; -- Y2
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- Y3
X_10 : in std_logic; -- B3
X_11 : in std_logic; -- A3
X_12 : in std_logic; -- C34
X_13 : out std_logic; -- Y4
X_14 : in std_logic; -- B4
X_15 : in std_logic; -- A4
X_16 : inout std_logic -- Vcc
);
end entity SN74S135N;
 
architecture BEHAV of SN74S135N is
begin
X_3 <= X_4 xor (X_1 xor X_2 ) after tPXX;
X_7 <= X_4 xor (X_5 xor X_6 ) after tPXX;
X_9 <= X_12 xor (X_10 xor X_11) after tPXX;
X_13 <= X_12 xor (X_14 xor X_15) after tPXX;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS136N: Quad 2-input xor gate (open collector)
-- Verified 30/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS136N is
generic(
tPLH : time := 30 ns;
tPHL : time := 30 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : in std_logic; -- 1B
X_3 : out std_logic; -- 1Y\
X_4 : in std_logic; -- 2A
X_5 : in std_logic; -- 2B
X_6 : out std_logic; -- 2Y\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 3Y\
X_9 : in std_logic; -- 3B
X_10 : in std_logic; -- 3A
X_11 : out std_logic; -- 4Y\
X_12 : in std_logic; -- 4B
X_13 : in std_logic; -- 4A
X_14 : inout std_logic -- Vcc
);
end entity SN74LS136N;
 
architecture BEHAV of SN74LS136N is
signal A : TTLInputs (1 to 4, 1 to 2);
signal Y : TTLOutputs(1 to 4);
begin
A <= ( (X_1, X_2), (X_4, X_5), (X_9, X_10), (X_12, X_13) );
(X_3, X_6, X_8, X_11) <= Y;
G: TTLgate
generic map(
mode => Zxor, -- Zand, Zor, Zxor, Zbuf
invert => '0', -- '1' will invert the output
ohigh => 'Z', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS137N: 1-of-8 decoder/demultiplexer (input latches)
-- Verified 08/06/2016
-----------------------------------------------------------------------
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 SN74LS137N is
generic(
tPLH : time := 12 ns;
tPHL : time := 20 ns
);
port(
X_1 : in std_logic; -- A0
X_2 : in std_logic; -- A1
X_3 : in std_logic; -- A2
X_4 : in std_logic; -- LE\
X_5 : in std_logic; -- E1\
X_6 : in std_logic; -- E2
X_7 : out std_logic; -- O7\
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- O6\
X_10 : out std_logic; -- O5\
X_11 : out std_logic; -- O4\
X_12 : out std_logic; -- O3\
X_13 : out std_logic; -- O2\
X_14 : out std_logic; -- O1\
X_15 : out std_logic; -- O0\
X_16 : inout std_logic -- Vcc
);
end entity SN74LS137N;
 
architecture BEHAV of SN74LS137N is
signal chn : natural range 7 downto 0;
signal Q, O : std_logic_vector(7 downto 0);
signal A : unsigned(2 downto 0);
signal EN : std_logic;
alias LE is X_4;
 
begin
A <= (X_3, X_2, X_1);
EN <= X_6 and not X_5;
(X_7, X_9, X_10, X_11, X_12, X_13, X_14, X_15) <= O;
process(A, LE) is
begin
if LE = '0' then
chn <= TTL_to_integer(A);
end if;
end process;
process(chn, EN) is
begin
Q <= (others => '1');
Q(chn) <= not EN;
end process;
OD: TTLdelays
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => Q,
B => O
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS138N: 1-of-8 decoder/demultiplexer
-- Verified 08/06/2016
-----------------------------------------------------------------------
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 SN74LS138N is
generic(
tPLH : time := 18 ns;
tPHL : time := 28 ns
);
port(
X_1 : in std_logic; -- A0
X_2 : in std_logic; -- A1
X_3 : in std_logic; -- A2
X_4 : in std_logic; -- E1\
X_5 : in std_logic; -- E2\
X_6 : in std_logic; -- E3
X_7 : out std_logic; -- O7\
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- O6\
X_10 : out std_logic; -- O5\
X_11 : out std_logic; -- O4\
X_12 : out std_logic; -- O3\
X_13 : out std_logic; -- O2\
X_14 : out std_logic; -- O1\
X_15 : out std_logic; -- O0\
X_16 : inout std_logic -- Vcc
);
end entity SN74LS138N;
 
architecture BEHAV of SN74LS138N is
signal Q, O : std_logic_vector(7 downto 0);
signal A : unsigned(2 downto 0);
signal EN : std_logic;
begin
A <= (X_3, X_2, X_1);
EN <= X_6 and (not X_5) and not (X_4);
(X_7, X_9, X_10, X_11, X_12, X_13, X_14, X_15) <= O;
process(A, EN) is
variable chn : natural range 7 downto 0;
begin
Q <= (others => '1');
if EN = '1' then
chn := TTL_to_integer(A);
Q(chn) <= '0';
end if;
end process;
OD: TTLdelays
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => Q,
B => O
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS139N: Dual 1-of-4 decoder
-- Verified 09/06/2016
-----------------------------------------------------------------------
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 SN74LS139N is
generic(
tPLH : time := 18 ns;
tPHL : time := 28 ns
);
port(
X_1 : in std_logic; -- EA\
X_2 : in std_logic; -- A0A
X_3 : in std_logic; -- A1A
X_4 : out std_logic; -- O0A\
X_5 : out std_logic; -- O1A\
X_6 : out std_logic; -- O2A\
X_7 : out std_logic; -- O3A\
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- O3B\
X_10 : out std_logic; -- O2B\
X_11 : out std_logic; -- O1B\
X_12 : out std_logic; -- O0B\
X_13 : in std_logic; -- A1B
X_14 : in std_logic; -- A0B
X_15 : in std_logic; -- EB\
X_16 : inout std_logic -- Vcc
);
end entity SN74LS139N;
 
architecture BEHAV of SN74LS139N is
signal A : std_logic_vector(3 downto 0);
signal E : std_logic_vector(1 downto 0);
signal Q, Z : std_logic_vector(7 downto 0);
 
begin
A <= (X_13, X_14, X_3, X_2);
E <= (X_15, X_1);
(X_9, X_10, X_11, X_12, X_7, X_6, X_5, X_4) <= Q;
process(A, E) is
variable AA : unsigned(1 downto 0);
variable N : natural range 3 downto 0;
variable QQ : std_logic_vector(3 downto 0);
begin
for i in E'range loop
QQ := (others => '1');
if E(i) = '0' then
AA := unsigned(A((2*i)+1 downto (2*i)));
N := TTL_to_integer(AA);
QQ(N) := '0';
end if;
Z((4*i)+3 downto (4*i)) <= QQ;
end loop;
end process;
GD: for i in Q'range generate
begin
OD: TTLdelays
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => Z,
B => Q
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74S140N: Dual 4-input NAND line driver
-- Verified 09/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74S140N is
generic(
tPLH : time := 6.5 ns;
tPHL : time := 6.5 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : in std_logic; -- 1B
--
X_4 : in std_logic; -- 1C
X_5 : in std_logic; -- 1D
X_6 : out std_logic; -- 1Y\
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- 2Y\
X_9 : in std_logic; -- 2D
X_10 : in std_logic; -- 2C
--
X_12 : in std_logic; -- 2B
X_13 : in std_logic; -- 2A
X_14 : inout std_logic -- Vcc
);
end entity SN74S140N;
 
architecture BEHAV of SN74S140N is
signal A : TTLInputs (1 to 2, 1 to 4);
signal Y : TTLOutputs(1 to 2);
begin
A <= ( (X_1, X_2, X_4, X_5), (X_9, X_10, X_12, X_13) );
(X_6, X_8) <= Y;
G: TTLgate
generic map(
mode => Zand, -- Zand, Zor, Zxor, Zbuf
invert => '1', -- '1' will invert the output
ohigh => '1', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
end architecture BEHAV;
 
-- SN74LS141N: 1-of-10 Nixie decoder/driver (open collector)
 
-----------------------------------------------------------------------
-- SN74145N: 1-of-10 decoder/driver (open collector)
-- Verified 09/06/2016
-----------------------------------------------------------------------
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 SN74145N is
generic(
tPLH : time := 50 ns;
tPHL : time := 50 ns
);
port(
X_1 : out std_logic; -- Q0\
X_2 : out std_logic; -- Q1\
X_3 : out std_logic; -- Q2\
X_4 : out std_logic; -- Q3\
X_5 : out std_logic; -- Q4\
X_6 : out std_logic; -- Q5\
X_7 : out std_logic; -- Q6\
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- Q7\
X_10 : out std_logic; -- Q8\
X_11 : out std_logic; -- Q9\
X_12 : in std_logic; -- A3
X_13 : in std_logic; -- A2
X_14 : in std_logic; -- A1
X_15 : in std_logic; -- A0
X_16 : inout std_logic -- Vcc
);
end entity SN74145N;
 
architecture BEHAV of SN74145N is
signal OP, Y, Z : std_logic_vector(15 downto 0);
begin
process(all) is
variable AT : unsigned(3 downto 0);
variable AD : natural range(OP'range);
begin
AT := (X_12 & X_13 & X_14 & X_15);
AD := TTL_to_integer(AT);
OP <= (others => '1');
OP(AD) <= '0';
end process;
G1: for i in OP'range generate
begin
DL: TTLdelay
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => OP(i),
B => Y(i)
);
Z(i) <= '0' when Y(i) = '0' else 'Z'; -- Open collectors
end generate;
( X_11, X_10, X_9, X_7, X_6, X_5, X_4, X_3, X_2, X_1 ) <= Z(9 downto 0);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74150N: 16-input multiplexer
-- Verified 09/06/2016
-----------------------------------------------------------------------
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 SN74150N is
generic(
tPLH : time := 35 ns;
tPHL : time := 33 ns
);
port(
X_1 : in std_logic; -- I7
X_2 : in std_logic; -- I6
X_3 : in std_logic; -- I5
X_4 : in std_logic; -- I4
X_5 : in std_logic; -- I3
X_6 : in std_logic; -- I2
X_7 : in std_logic; -- I1
X_8 : in std_logic; -- I0
X_9 : in std_logic; -- E\
X_10 : out std_logic; -- Z\
X_11 : in std_logic; -- S3
X_12 : inout std_logic; -- GND
X_13 : in std_logic; -- S2
X_14 : in std_logic; -- S1
X_15 : in std_logic; -- S0
X_16 : in std_logic; -- I15
X_17 : in std_logic; -- I14
X_18 : in std_logic; -- I13
X_19 : in std_logic; -- I12
X_20 : in std_logic; -- I11
X_21 : in std_logic; -- I10
X_22 : in std_logic; -- I9
X_23 : in std_logic; -- I8
X_24 : inout std_logic -- Vcc
);
end entity SN74150N;
 
architecture BEHAV of SN74150N is
signal D : std_logic_vector(15 downto 0);
signal A : unsigned(3 downto 0);
signal Q : std_logic;
begin
A <= (X_11, X_13, X_14, X_15);
D <= (X_16, X_17, X_18, X_19, X_20, X_21, X_22, X_23,
X_1, X_2, X_3, X_4, X_5, X_6, X_7, X_8 );
Q <= D(TTL_to_integer(A)) or X_9;
OD: TTLdelay
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => Q,
B => X_10
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS151N: 8-input multiplexer
-- Verified 09/06/2016
-----------------------------------------------------------------------
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 SN74LS151N is
generic(
tPLHZ : time := 48 ns;
tPHLZ : time := 32 ns;
tPLHZB : time := 24 ns;
tPHLZB : time := 34 ns
);
port(
X_1 : in std_logic; -- I3
X_2 : in std_logic; -- I2
X_3 : in std_logic; -- I1
X_4 : in std_logic; -- I0
X_5 : out std_logic; -- Z
X_6 : out std_logic; -- Z\
X_7 : in std_logic; -- E\
X_8 : inout std_logic; -- GND
X_9 : in std_logic; -- S2
X_10 : in std_logic; -- S1
X_11 : in std_logic; -- S0
X_12 : in std_logic; -- I7
X_13 : in std_logic; -- I6
X_14 : in std_logic; -- I5
X_15 : in std_logic; -- I4
X_16 : inout std_logic -- Vcc
);
end entity SN74LS151N;
 
architecture BEHAV of SN74LS151N is
signal D : std_logic_vector(7 downto 0);
signal A : unsigned(2 downto 0);
signal Q, QB : std_logic;
begin
A <= (X_9, X_10, X_11);
D <= (X_12, X_13, X_14, X_15, X_1, X_2, X_3, X_4 );
QB <= X_7 or not D(TTL_to_integer(A));
Q <= not QB;
OQ: TTLdelay
generic map(
tPLH => tPLHZ,
tPHL => tPHLZ
)
port map(
A => Q,
B => X_5
);
OQB: TTLdelay
generic map(
tPLH => tPLHZB,
tPHL => tPHLZB
)
port map(
A => QB,
B => X_6
);
end architecture BEHAV;
 
-- SN74LS152N: 8-input multiplexer (flatpack only, no DIP)
 
-----------------------------------------------------------------------
-- SN74LS153N: Dual 4-input multiplexer (common selects)
-- Verified 09/06/2016
-----------------------------------------------------------------------
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 SN74LS153N is
generic(
tPLH : time := 29 ns;
tPHL : time := 32 ns
);
port(
X_1 : in std_logic; -- EA\
X_2 : in std_logic; -- S1
X_3 : in std_logic; -- I3A
X_4 : in std_logic; -- I2A
X_5 : in std_logic; -- I1A
X_6 : in std_logic; -- I0A
X_7 : out std_logic; -- ZA
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- ZB
X_10 : in std_logic; -- I0B
X_11 : in std_logic; -- I1B
X_12 : in std_logic; -- I2B
X_13 : in std_logic; -- I3B
X_14 : in std_logic; -- S0
X_15 : in std_logic; -- EB\
X_16 : inout std_logic -- Vcc
);
end entity SN74LS153N;
 
architecture BEHAV of SN74LS153N is
signal D : TTLInputs(2 downto 1, 4 downto 1);
signal A : unsigned(2 downto 1);
signal E : std_logic_vector(2 downto 1); -- Enables: B:A channels
signal Q : std_logic_vector(2 downto 1);
signal C : natural range 4 downto 1;
begin
A <= (X_2, X_14);
C <= 1+TTL_to_integer(A);
E <= (X_15, X_1 );
D <= ((X_13, X_12, X_11, X_10), (X_3, X_4, X_5, X_6));
(X_9, X_7) <= Q;
G: for i in E'range generate
signal Z : std_logic;
begin
Z <= (not E(i)) and D(i,C);
OQ: TTLdelay
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => Z,
B => Q(i)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74154N: 1-of-16 decoder/demultiplexer
-- Verified 09/06/2016
-----------------------------------------------------------------------
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 SN74154N is
generic(
tPLH : time := 31 ns;
tPHL : time := 28 ns
);
port(
X_1 : out std_logic; -- O0\
X_2 : out std_logic; -- O1\
X_3 : out std_logic; -- O2\
X_4 : out std_logic; -- O3\
X_5 : out std_logic; -- O4\
X_6 : out std_logic; -- O5\
X_7 : out std_logic; -- O6\
X_8 : out std_logic; -- O7\
X_9 : out std_logic; -- O8\
X_10 : out std_logic; -- O9\
X_11 : out std_logic; -- O10\
X_12 : inout std_logic; -- GND
X_13 : out std_logic; -- O11\
X_14 : out std_logic; -- O12\
X_15 : out std_logic; -- O13\
X_16 : out std_logic; -- O14\
X_17 : out std_logic; -- O15\
X_18 : in std_logic; -- E0\
X_19 : in std_logic; -- E1\
X_20 : in std_logic; -- A3
X_21 : in std_logic; -- A2
X_22 : in std_logic; -- A1
X_23 : in std_logic; -- A0
X_24 : inout std_logic -- Vcc
);
end entity SN74154N;
 
architecture BEHAV of SN74154N is
signal Q, Z : std_logic_vector(15 downto 0);
signal A : unsigned(3 downto 0);
signal E : std_logic;
begin
A <= (X_20, X_21, X_22, X_23);
E <= X_18 or X_19;
(X_17, X_16, X_15, X_14, X_13, X_11, X_10, X_9,
X_8, X_7, X_6, X_5, X_4, X_3, X_2, X_1) <= Q;
process(A, E) is
begin
Z <= (others => '1');
Z(TTL_to_integer(A)) <= E;
end process;
OQ: TTLdelays
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => Z,
B => Q
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS155N: Dual 1-of-4 decoder/demultiplexer
-- Verified 10/06/2016
-----------------------------------------------------------------------
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 SN74LS155N is
generic(
tPLH : time := 18 ns;
tPHL : time := 27 ns
);
port(
X_1 : in std_logic; -- EA
X_2 : in std_logic; -- EA\
X_3 : in std_logic; -- A1
X_4 : out std_logic; -- O3A\
X_5 : out std_logic; -- O2A\
X_6 : out std_logic; -- O1A\
X_7 : out std_logic; -- O0A\
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- O0B\
X_10 : out std_logic; -- O1B\
X_11 : out std_logic; -- O2B\
X_12 : out std_logic; -- O3B\
X_13 : in std_logic; -- A0
X_14 : in std_logic; -- EB2\
X_15 : in std_logic; -- EB1\
X_16 : inout std_logic -- Vcc
);
end entity SN74LS155N;
 
architecture BEHAV of SN74LS155N is
signal A : unsigned(1 downto 0);
signal E : std_logic_vector(1 downto 0);
signal Q, Z : std_logic_vector(7 downto 0);
signal N : natural range 3 downto 0;
 
begin
A <= (X_3, X_13);
N <= TTL_to_integer(A);
E <= (not(X_14 or X_15), X_1 and not X_2);
(X_12, X_11, X_10, X_9, X_4, X_5, X_6, X_7) <= Q;
process(N, E) is
begin
Z <= (others => '1');
Z(4+N) <= not E(1);
Z(N) <= not E(0);
end process;
OD: TTLdelays
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => Z,
B => Q
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS156N: Dual 1-of-4 decoder/demultiplexer (open collector)
-- Verified 10/06/2016
-----------------------------------------------------------------------
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 SN74LS156N is
generic(
tPLH : time := 34 ns;
tPHL : time := 34 ns
);
port(
X_1 : in std_logic; -- EA
X_2 : in std_logic; -- EA\
X_3 : in std_logic; -- A1
X_4 : out std_logic; -- O3A\
X_5 : out std_logic; -- O2A\
X_6 : out std_logic; -- O1A\
X_7 : out std_logic; -- O0A\
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- O0B\
X_10 : out std_logic; -- O1B\
X_11 : out std_logic; -- O2B\
X_12 : out std_logic; -- O3B\
X_13 : in std_logic; -- A0
X_14 : in std_logic; -- EB2\
X_15 : in std_logic; -- EB1\
X_16 : inout std_logic -- Vcc
);
end entity SN74LS156N;
 
architecture BEHAV of SN74LS156N is
signal A : unsigned(1 downto 0);
signal E : std_logic_vector(1 downto 0);
signal Q, Z : std_logic_vector(7 downto 0);
signal N : natural range 3 downto 0;
 
begin
A <= (X_3, X_13);
N <= TTL_to_integer(A);
E <= (not(X_14 or X_15), X_1 and not X_2);
(X_12, X_11, X_10, X_9, X_4, X_5, X_6, X_7) <= Q;
process(N, E) is
begin
Z <= (others => 'Z');
if E(1) = '1' then Z(4+N) <= '0'; end if;
if E(0) = '1' then Z(N) <= '0'; end if;
end process;
OD: TTLdelays
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => Z,
B => Q
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS157N: Quad 2-input multiplexer (common select)
-- Verified 10/06/2016
-----------------------------------------------------------------------
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 SN74LS157N is
generic(
tPLH : time := 26 ns;
tPHL : time := 24 ns
);
port(
X_1 : in std_logic; -- S
X_2 : in std_logic; -- I0A
X_3 : in std_logic; -- I1A
X_4 : out std_logic; -- ZA
X_5 : in std_logic; -- I0B
X_6 : in std_logic; -- I1B
X_7 : out std_logic; -- ZB
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- ZD
X_10 : in std_logic; -- I1D
X_11 : in std_logic; -- I0D
X_12 : out std_logic; -- ZC
X_13 : in std_logic; -- I1C
X_14 : in std_logic; -- I0C
X_15 : in std_logic; -- E\
X_16 : inout std_logic -- Vcc
);
end entity SN74LS157N;
 
architecture BEHAV of SN74LS157N is
signal D : TTLInputs(4 downto 1, 2 downto 1);
signal Q : std_logic_vector(4 downto 1);
signal C : natural range 2 downto 1;
begin
C <= 2 when To_bit(X_1) = '1' else 1;
D <= ((X_10, X_11), (X_13, X_14), (X_6, X_5), (X_3, X_2));
(X_9, X_12, X_7, X_4) <= Q;
G: for i in Q'range generate
signal Z : std_logic;
begin
Z <= D(i,C) and not X_15;
OQ: TTLdelay
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => Z,
B => Q(i)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS158N: Quad 2-input multiplexer (common select: inverting)
-- Verified 10/06/2016
-----------------------------------------------------------------------
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 SN74LS158N is
generic(
tPLH : time := 20 ns;
tPHL : time := 24 ns
);
port(
X_1 : in std_logic; -- S
X_2 : in std_logic; -- I0A
X_3 : in std_logic; -- I1A
X_4 : out std_logic; -- ZA\
X_5 : in std_logic; -- I0B
X_6 : in std_logic; -- I1B
X_7 : out std_logic; -- ZB\
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- ZD\
X_10 : in std_logic; -- I1D
X_11 : in std_logic; -- I0D
X_12 : out std_logic; -- ZC\
X_13 : in std_logic; -- I1C
X_14 : in std_logic; -- I0C
X_15 : in std_logic; -- E\
X_16 : inout std_logic -- Vcc
);
end entity SN74LS158N;
 
architecture BEHAV of SN74LS158N is
signal D : TTLInputs(4 downto 1, 2 downto 1);
signal Q : std_logic_vector(4 downto 1);
signal C : natural range 2 downto 1;
begin
C <= 2 when To_bit(X_1) = '1' else 1;
D <= ((X_10, X_11), (X_13, X_14), (X_6, X_5), (X_3, X_2));
(X_9, X_12, X_7, X_4) <= Q;
G: for i in Q'range generate
signal Z : std_logic;
begin
Z <= not(D(i,C) and not X_15);
OQ: TTLdelay
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => Z,
B => Q(i)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS160N: Synchronous presettable BCD decade counter
-- Verified 10/06/2016
-----------------------------------------------------------------------
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 SN74LS160N is
generic(
tPLHT : time := 25 ns;
tPHLT : time := 23 ns;
tPLHQ : time := 24 ns;
tPHLQ : time := 27 ns
);
port(
X_1 : in std_logic; -- R\
X_2 : in std_logic; -- CP
X_3 : in std_logic; -- P0
X_4 : in std_logic; -- P1
X_5 : in std_logic; -- P2
X_6 : in std_logic; -- P3
X_7 : in std_logic; -- CEP
X_8 : inout std_logic; -- GND
X_9 : in std_logic; -- PE\
X_10 : in std_logic; -- CET
X_11 : out std_logic; -- Q3
X_12 : out std_logic; -- Q2
X_13 : out std_logic; -- Q1
X_14 : out std_logic; -- Q0
X_15 : out std_logic; -- TC
X_16 : inout std_logic -- Vcc
);
end entity SN74LS160N;
 
architecture BEHAV of SN74LS160N is
signal Q : std_logic_vector(3 downto 0);
begin
(X_11, X_12, X_13, X_14) <= Q;
 
CT: TTLsynccount
generic map(
asyncreset => true,
modulus => 10,
tPLHT => tPLHT,
tPHLT => tPHLT,
tPLHQ => tPLHQ,
tPHLQ => tPHLQ
)
port map(
PE => X_9,
CP => X_2,
CEP => X_7,
CET => X_10,
RST => X_1,
TC => X_15,
P => (X_6, X_5, X_4, X_3),
Q => Q
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS161N: Synchronous presettable 4-bit binary counter
-- Verified 10/06/2016
-----------------------------------------------------------------------
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 SN74LS161N is
generic(
tPLHT : time := 25 ns;
tPHLT : time := 23 ns;
tPLHQ : time := 24 ns;
tPHLQ : time := 27 ns
);
port(
X_1 : in std_logic; -- R\
X_2 : in std_logic; -- CP
X_3 : in std_logic; -- P0
X_4 : in std_logic; -- P1
X_5 : in std_logic; -- P2
X_6 : in std_logic; -- P3
X_7 : in std_logic; -- CEP
X_8 : inout std_logic; -- GND
X_9 : in std_logic; -- PE\
X_10 : in std_logic; -- CET
X_11 : out std_logic; -- Q3
X_12 : out std_logic; -- Q2
X_13 : out std_logic; -- Q1
X_14 : out std_logic; -- Q0
X_15 : out std_logic; -- TC
X_16 : inout std_logic -- Vcc
);
end entity SN74LS161N;
 
architecture BEHAV of SN74LS161N is
signal Q : std_logic_vector(3 downto 0);
begin
(X_11, X_12, X_13, X_14) <= Q;
 
CT: TTLsynccount
generic map(
asyncreset => true,
modulus => 16,
tPLHT => tPLHT,
tPHLT => tPHLT,
tPLHQ => tPLHQ,
tPHLQ => tPHLQ
)
port map(
PE => X_9,
CP => X_2,
CEP => X_7,
CET => X_10,
RST => X_1,
TC => X_15,
P => (X_6, X_5, X_4, X_3),
Q => Q
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS162N: Synchronous presettable BCD decade counter
-- Verified 10/06/2016
-----------------------------------------------------------------------
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 SN74LS162N is
generic(
tPLHT : time := 25 ns;
tPHLT : time := 23 ns;
tPLHQ : time := 24 ns;
tPHLQ : time := 27 ns
);
port(
X_1 : in std_logic; -- R\
X_2 : in std_logic; -- CP
X_3 : in std_logic; -- P0
X_4 : in std_logic; -- P1
X_5 : in std_logic; -- P2
X_6 : in std_logic; -- P3
X_7 : in std_logic; -- CEP
X_8 : inout std_logic; -- GND
X_9 : in std_logic; -- PE\
X_10 : in std_logic; -- CET
X_11 : out std_logic; -- Q3
X_12 : out std_logic; -- Q2
X_13 : out std_logic; -- Q1
X_14 : out std_logic; -- Q0
X_15 : out std_logic; -- TC
X_16 : inout std_logic -- Vcc
);
end entity SN74LS162N;
 
architecture BEHAV of SN74LS162N is
signal Q : std_logic_vector(3 downto 0);
begin
(X_11, X_12, X_13, X_14) <= Q;
 
CT: TTLsynccount
generic map(
asyncreset => false,
modulus => 10,
tPLHT => tPLHT,
tPHLT => tPHLT,
tPLHQ => tPLHQ,
tPHLQ => tPHLQ
)
port map(
PE => X_9,
CP => X_2,
CEP => X_7,
CET => X_10,
RST => X_1,
TC => X_15,
P => (X_6, X_5, X_4, X_3),
Q => Q
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS163N: Synchronous presettable 4-bit binary counter
-- Verified 10/06/2016
-----------------------------------------------------------------------
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 SN74LS163N is
generic(
tPLHT : time := 25 ns;
tPHLT : time := 23 ns;
tPLHQ : time := 24 ns;
tPHLQ : time := 27 ns
);
port(
X_1 : in std_logic; -- R\
X_2 : in std_logic; -- CP
X_3 : in std_logic; -- P0
X_4 : in std_logic; -- P1
X_5 : in std_logic; -- P2
X_6 : in std_logic; -- P3
X_7 : in std_logic; -- CEP
X_8 : inout std_logic; -- GND
X_9 : in std_logic; -- PE\
X_10 : in std_logic; -- CET
X_11 : out std_logic; -- Q3
X_12 : out std_logic; -- Q2
X_13 : out std_logic; -- Q1
X_14 : out std_logic; -- Q0
X_15 : out std_logic; -- TC
X_16 : inout std_logic -- Vcc
);
end entity SN74LS163N;
 
architecture BEHAV of SN74LS163N is
signal Q : std_logic_vector(3 downto 0);
begin
(X_11, X_12, X_13, X_14) <= Q;
 
CT: TTLsynccount
generic map(
asyncreset => false,
modulus => 16,
tPLHT => tPLHT,
tPHLT => tPHLT,
tPLHQ => tPLHQ,
tPHLQ => tPHLQ
)
port map(
PE => X_9,
CP => X_2,
CEP => X_7,
CET => X_10,
RST => X_1,
TC => X_15,
P => (X_6, X_5, X_4, X_3),
Q => Q
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS164N: SIPO shift register
-- Verified 10/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS164N is
generic(
tPLH : time := 27 ns;
tPHL : time := 32 ns
);
port(
X_1 : in std_logic; -- A
X_2 : in std_logic; -- B
X_3 : out std_logic; -- Q0
X_4 : out std_logic; -- Q1
X_5 : out std_logic; -- Q2
X_6 : out std_logic; -- Q3
X_7 : inout std_logic; -- GND
X_8 : in std_logic; -- CP
X_9 : in std_logic; -- MR\
X_10 : out std_logic; -- Q4
X_11 : out std_logic; -- Q5
X_12 : out std_logic; -- Q6
X_13 : out std_logic; -- Q7
X_14 : inout std_logic -- Vcc
);
end entity SN74LS164N;
 
architecture BEHAV of SN74LS164N is
signal R, Q : std_logic_vector(7 downto 0);
signal D : std_logic;
alias RST : std_logic is X_9;
alias CLK : std_logic is X_8;
begin
(X_13, X_12, X_11, X_10, X_6, X_5, X_4, X_3) <= Q;
D <= X_1 and X_2;
process(CLK, RST) is
begin
if RST = '0' then
R <= (others => '0');
elsif CLK'event and CLK = '1' then
R <= R(6 downto 0) & D;
end if;
end process;
OQ: TTLdelays
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => R,
B => Q
);
 
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS165N: 8-bit parallel-to-serial converter
-- Verified 11/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS165N is
generic(
tPLH : time := 30 ns;
tPHL : time := 30 ns
);
port(
X_1 : in std_logic; -- PL\
X_2 : in std_logic; -- CP1
X_3 : in std_logic; -- P4
X_4 : in std_logic; -- P5
X_5 : in std_logic; -- P6
X_6 : in std_logic; -- P7
X_7 : out std_logic; -- Q7\
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- Q7
X_10 : in std_logic; -- DS
X_11 : in std_logic; -- P0
X_12 : in std_logic; -- P1
X_13 : in std_logic; -- P2
X_14 : in std_logic; -- P3
X_15 : in std_logic; -- CP2
X_16 : inout std_logic -- Vcc
);
end entity SN74LS165N;
 
architecture BEHAV of SN74LS165N is
signal R : std_logic_vector(7 downto 0);
signal CLK, N7 : std_logic;
alias CP1 : std_logic is X_2;
alias CP2 : std_logic is X_15;
alias DS : std_logic is X_10;
alias PL : std_logic is X_1;
begin
N7 <= not R(7);
CLK <= not((CP1 and PL) or (CP2 and PL));
process(CLK, PL) is
begin
if PL = '0' then
R <= (X_6, X_5, X_4, X_3, X_14, X_13, X_12, X_11);
elsif CLK'event and CLK = '0' then
R <= R(6 downto 0) & DS;
end if;
end process;
OQ: TTLdelay
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => R(7),
B => X_9
);
OQB: TTLdelay
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => N7,
B => X_7
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS166N: 8-bit PISO shift register
-- Verified 11/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS166N is
generic(
tPLH : time := 18 ns;
tPHL : time := 27 ns;
tSU : time := 20 ns
);
port(
X_1 : in std_logic; -- DS
X_2 : in std_logic; -- P0
X_3 : in std_logic; -- P1
X_4 : in std_logic; -- P2
X_5 : in std_logic; -- P3
X_6 : in std_logic; -- CP2
X_7 : in std_logic; -- CP1
X_8 : inout std_logic; -- GND
X_9 : in std_logic; -- MR\
X_10 : in std_logic; -- P4
X_11 : in std_logic; -- P5
X_12 : in std_logic; -- P6
X_13 : out std_logic; -- Q7
X_14 : in std_logic; -- P7
X_15 : in std_logic; -- PE\
X_16 : inout std_logic -- Vcc
);
end entity SN74LS166N;
 
architecture BEHAV of SN74LS166N is
signal CP : std_logic;
signal R : std_logic_vector(7 downto 0);
signal D : std_logic_vector(7 downto 0);
alias MR : std_logic is X_9;
alias PE : std_logic is X_15;
alias DS : std_logic is X_1;
begin
CP <= X_6 or X_7;
D <= (X_14, X_12, X_11, X_10, X_5, X_4, X_3, X_2);
process(CP, MR) is
begin
if MR = '0' then
R <= (others => '0');
elsif CP'event and CP = '1' then
if PE = '0' then
assert D'stable(tSU) report "Setup violation" severity failure;
R <= D;
else
R <= R(6 downto 0) & DS;
end if;
end if;
end process;
OQ: TTLdelay
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => R(7),
B => X_13
);
end architecture BEHAV;
 
-- SN74167N: Synchronous decade rate multiplier
 
-----------------------------------------------------------------------
-- SN74LS168N: Synchronous bidirectional BCD decade counter
-- Verified 11/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS168N is
generic(
tPLHQ : time := 20 ns;
tPHLQ : time := 20 ns;
tPLHT : time := 30 ns;
tPHLT : time := 30 ns;
tSU : time := 15 ns;
tSUPE : time := 20 ns
);
port(
X_1 : in std_logic; -- U_D\
X_2 : in std_logic; -- CP
X_3 : in std_logic; -- P0
X_4 : in std_logic; -- P1
X_5 : in std_logic; -- P2
X_6 : in std_logic; -- P3
X_7 : in std_logic; -- CEP\
X_8 : inout std_logic; -- GND
X_9 : in std_logic; -- PE\
X_10 : in std_logic; -- CET\
X_11 : out std_logic; -- Q3
X_12 : out std_logic; -- Q2
X_13 : out std_logic; -- Q1
X_14 : out std_logic; -- Q0
X_15 : out std_logic; -- TC\
X_16 : inout std_logic -- Vcc
);
end entity SN74LS168N;
 
architecture BEHAV of SN74LS168N is
signal Z : std_logic_vector(3 downto 0);
begin
(X_11, X_12, X_13, X_14) <= Z;
CT: TTLbiCount
generic map(
decade => true,
tPLHQ => tPLHQ,
tPHLQ => tPHLQ,
tPLHT => tPLHT,
tPHLT => tPHLT,
tSU => tSU,
tSUPE => tSUPE
)
port map(
PE => X_9,
CP => X_2,
CEP => X_7,
CET => X_10,
U_D => X_1,
P => (X_6, X_5, X_4, X_3),
Q => Z,
TC => X_15
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS169N: Synchronous bidirectional 4-bit binary counter
-- Verified 11/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS169N is
generic(
tPLHQ : time := 20 ns;
tPHLQ : time := 20 ns;
tPLHT : time := 30 ns;
tPHLT : time := 30 ns;
tSU : time := 15 ns;
tSUPE : time := 20 ns
);
port(
X_1 : in std_logic; -- U_D\
X_2 : in std_logic; -- CP
X_3 : in std_logic; -- P0
X_4 : in std_logic; -- P1
X_5 : in std_logic; -- P2
X_6 : in std_logic; -- P3
X_7 : in std_logic; -- CEP\
X_8 : inout std_logic; -- GND
X_9 : in std_logic; -- PE\
X_10 : in std_logic; -- CET\
X_11 : out std_logic; -- Q3
X_12 : out std_logic; -- Q2
X_13 : out std_logic; -- Q1
X_14 : out std_logic; -- Q0
X_15 : out std_logic; -- TC\
X_16 : inout std_logic -- Vcc
);
end entity SN74LS169N;
 
architecture BEHAV of SN74LS169N is
signal Z : std_logic_vector(3 downto 0);
begin
(X_11, X_12, X_13, X_14) <= Z;
CT: TTLbiCount
generic map(
decade => false,
tPLHQ => tPLHQ,
tPHLQ => tPHLQ,
tPLHT => tPLHT,
tPHLT => tPHLT,
tSU => tSU,
tSUPE => tSUPE
)
port map(
PE => X_9,
CP => X_2,
CEP => X_7,
CET => X_10,
U_D => X_1,
P => (X_6, X_5, X_4, X_3),
Q => Z,
TC => X_15
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS170N: 4 X 4 register file (open collector)
-- Verified 17/07/2016
-----------------------------------------------------------------------
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 SN74LS170N is
generic(
tPLC : time := 35 ns;
tPLA : time := 35 ns;
tSUD : time := 10 ns;
tSUA : time := 10 ns
);
port(
X_1 : in std_logic; -- D2
X_2 : in std_logic; -- D3
X_3 : in std_logic; -- D4
X_4 : in std_logic; -- RA1
X_5 : in std_logic; -- RA0
X_6 : out std_logic; -- Q4
X_7 : out std_logic; -- Q3
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- Q2
X_10 : out std_logic; -- Q1
X_11 : in std_logic; -- RE\
X_12 : in std_logic; -- WE\
X_13 : in std_logic; -- WA1
X_14 : in std_logic; -- WA0
X_15 : in std_logic; -- D1
X_16 : inout std_logic -- Vcc
);
end entity SN74LS170N;
 
architecture BEHAV of SN74LS170N is
signal RE, WE : std_logic := '1';
signal RA, WA : std_logic_vector(1 downto 0) := (others => '0');
signal D, Q : std_logic_vector(3 downto 0);
begin
RE <= X_11;
WE <= X_12;
RA <= (X_4, X_5);
WA <= (X_13, X_14);
D <= (X_3, X_2, X_1, X_15);
(X_6, X_7, X_9, X_10) <= Q;
MB: TTLramblock
generic map(
Omode => OpenColl,
INVT => '0',
tPLC => tPLC,
tPLA => tPLA,
tSUD => tSUD,
tSUA => tSUA
)
port map(
RA => RA,
WA => WA,
D => D,
O => Q,
CE => '0',
RE => RE,
WE => WE
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS173N: 4-bit D-type register (3-state outputs)
-- Verified 17/07/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS173N is
generic(
tSD : time := 10 ns; -- Setup, D to CLK
tSE : time := 17 ns; -- Setup, IE to CLK
tPQ : time := 40 ns; -- Delay, CLK to Q
tQZ : time := 20 ns -- Delay, OE to Z
);
port(
X_1 : in std_logic; -- OE1\
X_2 : in std_logic; -- OE2\
X_3 : out std_logic; -- Q0
X_4 : out std_logic; -- Q1
X_5 : out std_logic; -- Q2
X_6 : out std_logic; -- Q3
X_7 : in std_logic; -- CP
X_8 : inout std_logic; -- GND
X_9 : in std_logic; -- IE1\
X_10 : in std_logic; -- IE2\
X_11 : in std_logic; -- D3
X_12 : in std_logic; -- D2
X_13 : in std_logic; -- D1
X_14 : in std_logic; -- D0
X_15 : in std_logic; -- MR
X_16 : inout std_logic -- Vcc
);
end entity SN74LS173N;
 
architecture BEHAV of SN74LS173N is
signal D, REG : std_logic_vector(3 downto 0);
signal IE, OE : std_logic;
alias CLK is X_7;
alias MR is X_15;
begin
IE <= X_9 or X_10;
OE <= X_1 or X_2 after tQZ;
(X_6, X_5, X_4, X_3) <= REG when OE = '0' else (others => 'Z');
D <= (X_11, X_12, X_13, X_14);
RG: process(CLK, MR) is
begin
if MR = '1' then
REG <= (others => '0');
elsif rising_edge(CLK) then
assert D'stable(tSD) report "D setup violation" severity failure;
assert IE'stable(tSE) report "IE setup violation" severity failure;
if IE = '0' then
REG <= D after tSD;
end if;
end if;
end process;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS174N: Hex D-flipflop
-- Verified 17/07/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS174N is
generic(
tSU : time := 10 ns;
tPD : time := 25 ns
);
port(
X_1 : in std_logic; -- MR\
X_2 : out std_logic; -- Q0
X_3 : in std_logic; -- D0
X_4 : in std_logic; -- D1
X_5 : out std_logic; -- Q1
X_6 : in std_logic; -- D2
X_7 : out std_logic; -- Q2
X_8 : inout std_logic; -- GND
X_9 : in std_logic; -- CP
X_10 : out std_logic; -- Q3
X_11 : in std_logic; -- D3
X_12 : out std_logic; -- Q4
X_13 : in std_logic; -- D4
X_14 : in std_logic; -- D5
X_15 : out std_logic; -- Q5
X_16 : inout std_logic -- Vcc
);
end entity SN74LS174N;
 
architecture BEHAV of SN74LS174N is
signal D, Q : std_logic_vector(5 downto 0);
alias CLK is X_9;
alias MR is X_1;
begin
D <= (X_14, X_13, X_11, X_6, X_4, X_3);
(X_15, X_12, X_10, X_7, X_5, X_2) <= Q;
RG: process(CLK, MR) is
begin
if MR = '0' then
Q <= (others => '0');
elsif rising_edge(CLK) then
assert D'stable(tSU) report "tSU failure" severity failure;
Q <= D after tPD;
end if;
end process;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS175N: Quad D-flipflop
-- Verified 17/07/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS175N is
generic(
tSU : time := 10 ns;
tPD : time := 25 ns
);
port(
X_1 : in std_logic; -- MR\
X_2 : out std_logic; -- Q0
X_3 : out std_logic; -- Q0\
X_4 : in std_logic; -- D0
X_5 : in std_logic; -- D1
X_6 : out std_logic; -- Q1\
X_7 : out std_logic; -- Q1
X_8 : inout std_logic; -- GND
X_9 : in std_logic; -- CP
X_10 : out std_logic; -- Q2
X_11 : out std_logic; -- Q2\
X_12 : in std_logic; -- D2
X_13 : in std_logic; -- D3
X_14 : out std_logic; -- Q3\
X_15 : out std_logic; -- Q3
X_16 : inout std_logic -- Vcc
);
end entity SN74LS175N;
 
architecture BEHAV of SN74LS175N is
signal D, Q, QB : std_logic_vector(3 downto 0);
alias CLK is X_9;
alias MR is X_1;
begin
D <= (X_13, X_12, X_5, X_4);
(X_15, X_10, X_7, X_2) <= Q;
(X_14, X_11, X_6, X_3) <= QB;
QB <= not Q;
RG: process(CLK, MR) is
begin
if MR = '0' then
Q <= (others => '0');
elsif rising_edge(CLK) then
assert D'stable(tSU) report "tSU failure" severity failure;
Q <= D after tPD;
end if;
end process;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74176N: Presettable decade counter
-- Verified 19/07/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74176N is
generic(
tPLH0 : time := 13 ns;
tPHL0 : time := 17 ns;
tPLH1 : time := 17 ns;
tPHL1 : time := 26 ns;
tPLH2 : time := 41 ns;
tPHL2 : time := 51 ns;
tPLH3 : time := 20 ns;
tPHL3 : time := 26 ns
);
port(
X_1 : in std_logic; -- PL\
X_2 : out std_logic; -- Q2
X_3 : in std_logic; -- P2
X_4 : in std_logic; -- P0
X_5 : out std_logic; -- Q0
X_6 : in std_logic; -- CP1\
X_7 : inout std_logic; -- GND
X_8 : in std_logic; -- CP0\
X_9 : out std_logic; -- Q1
X_10 : in std_logic; -- P1
X_11 : in std_logic; -- P3
X_12 : out std_logic; -- Q3
X_13 : in std_logic; -- MR\
X_14 : inout std_logic -- Vcc
);
end entity SN74176N;
 
architecture BEHAV of SN74176N is
signal p, q : std_logic_vector(3 downto 0);
begin
p <= (X_11, X_3, X_10, X_4);
(X_12, X_2, X_9, X_5) <= q;
M1: TTLcount4
generic map(
tPLH0 => tPLH0,
tPHL0 => tPHL0,
tPLH1 => tPLH1,
tPHL1 => tPHL1,
tPLH2 => tPLH2,
tPHL2 => tPHL2,
tPLH3 => tPLH3,
tPHL3 => tPHL3,
modulus => 10
)
port map(
ld => X_1,
d => p,
clka => X_8,
clkb => X_6,
rst => X_13,
set => '1',
val => q
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74177N: Presettable binary counter
-- Verified 19/07/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74177N is
generic(
tPLH0 : time := 13 ns;
tPHL0 : time := 17 ns;
tPLH1 : time := 17 ns;
tPHL1 : time := 26 ns;
tPLH2 : time := 41 ns;
tPHL2 : time := 51 ns;
tPLH3 : time := 66 ns;
tPHL3 : time := 75 ns
);
port(
X_1 : in std_logic; -- PL\
X_2 : out std_logic; -- Q2
X_3 : in std_logic; -- P2
X_4 : in std_logic; -- P0
X_5 : out std_logic; -- Q0
X_6 : in std_logic; -- CP1\
X_7 : inout std_logic; -- GND
X_8 : in std_logic; -- CP0\
X_9 : out std_logic; -- Q1
X_10 : in std_logic; -- P1
X_11 : in std_logic; -- P3
X_12 : out std_logic; -- Q3
X_13 : in std_logic; -- MR\
X_14 : inout std_logic -- Vcc
);
end entity SN74177N;
 
architecture BEHAV of SN74177N is
signal p, q : std_logic_vector(3 downto 0);
begin
p <= (X_11, X_3, X_10, X_4);
(X_12, X_2, X_9, X_5) <= q;
M1: TTLcount4
generic map(
tPLH0 => tPLH0,
tPHL0 => tPHL0,
tPLH1 => tPLH1,
tPHL1 => tPHL1,
tPLH2 => tPLH2,
tPHL2 => tPHL2,
tPLH3 => tPLH3,
tPHL3 => tPHL3,
modulus => 16
)
port map(
ld => X_1,
d => p,
clka => X_8,
clkb => X_6,
rst => X_13,
set => '1',
val => q
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74178N: 4-bit shift register
-- Verified 20/07/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74178N is
generic(
tDL : time := 36 ns;
tSU : time := 35 ns
);
port(
X_1 : in std_logic; -- P1
X_2 : in std_logic; -- P0
X_3 : in std_logic; -- DS
X_4 : out std_logic; -- Q0
X_5 : in std_logic; -- CP\
X_6 : out std_logic; -- Q1
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- Q2
X_9 : in std_logic; -- PE
X_10 : out std_logic; -- Q3
X_11 : in std_logic; -- SE
X_12 : in std_logic; -- P3
X_13 : in std_logic; -- P2
X_14 : inout std_logic -- Vcc
);
end entity SN74178N;
 
architecture BEHAV of SN74178N is
begin
C: SN74179N -- 74178 is 74179, with MR\ & Q3\ deleted
generic map(
tDL => tDL,
tSU => tSU
)
port map(
X_1 => '1', -- MR\
X_2 => X_1, -- P1
X_3 => X_2, -- P0
X_4 => X_3, -- DS
X_5 => X_4, -- Q0
X_6 => X_5, -- CP\
X_7 => X_6, -- Q1
X_8 => open, -- GND
X_9 => X_8, -- Q2
X_10 => X_9, -- PE
X_11 => X_10, -- Q3
X_12 => open, -- Q3\
X_13 => X_11, -- SE
X_14 => X_12, -- P3
X_15 => X_13, -- P2
X_16 => open -- Vcc
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74179N: 4-bit shift register
-- Verified 20/07/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74179N is
generic(
tDL : time := 36 ns;
tSU : time := 35 ns
);
port(
X_1 : in std_logic; -- MR\
X_2 : in std_logic; -- P1
X_3 : in std_logic; -- P0
X_4 : in std_logic; -- DS
X_5 : out std_logic; -- Q0
X_6 : in std_logic; -- CP\ (falling)
X_7 : out std_logic; -- Q1
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- Q2
X_10 : in std_logic; -- PE
X_11 : out std_logic; -- Q3
X_12 : out std_logic; -- Q3\
X_13 : in std_logic; -- SE
X_14 : in std_logic; -- P3
X_15 : in std_logic; -- P2
X_16 : inout std_logic -- Vcc
);
end entity SN74179N;
 
architecture BEHAV of SN74179N is
signal D, REG, Q : std_logic_vector(3 downto 0);
alias CLK is X_6;
alias MR is X_1;
alias DS is X_4;
alias PE is X_10;
alias SE is X_13;
begin
D <= (X_14, X_15, X_2, X_3);
(X_11, X_9, X_7, X_5) <= Q;
X_12 <= not Q(3);
process(MR, CLK) is
begin
if MR = '0' then
REG <= (others => '0');
elsif falling_edge(CLK) then
assert SE'stable(tSU) report "SE violation" severity failure;
assert PE'stable(tSU) report "PE violation" severity failure;
assert D'stable(tSU) report "Data violation" severity failure;
assert DS'stable(tSU) report "DS violation" severity failure;
if SE = '1' then
REG <= REG(2 downto 0) & DS;
elsif PE = '1' then
REG <= D;
end if;
end if;
end process;
Q <= REG after tDL;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74180N: 8-bit parity generator/checker
-- Verified 20/07/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74180N is
generic(
tPI : time := 68 ns;
tPE : time := 20 ns
);
port(
X_1 : in std_logic; -- I6
X_2 : in std_logic; -- I7
X_3 : in std_logic; -- EI
X_4 : in std_logic; -- OI
X_5 : out std_logic; -- SE
X_6 : out std_logic; -- SO
X_7 : inout std_logic; -- GND
X_8 : in std_logic; -- I0
X_9 : in std_logic; -- I1
X_10 : in std_logic; -- I2
X_11 : in std_logic; -- I3
X_12 : in std_logic; -- I4
X_13 : in std_logic; -- I5
X_14 : inout std_logic -- Vcc
);
end entity SN74180N;
 
architecture BEHAV of SN74180N is
signal IP, OI, EI : std_logic;
signal I : std_logic_vector(7 downto 0);
begin
I <= (X_8, X_9, X_10, X_11, X_12, X_13, X_1, X_2);
IP <= xnor_reduce(I) after tPI;
OI <= X_4 after tPE;
EI <= X_3 after tPE;
X_5 <= not ((IP and OI) or (EI and not IP));
X_6 <= not ((IP and EI) or (OI and not IP));
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS181N: 4-bit arithmetic/logic unit
-- Verified 31/07/2016
-----------------------------------------------------------------------
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 SN74LS181N is
generic(
T1 : time := 7 ns;
T2 : time := 19 ns;
T3 : time := 16 ns;
T4 : time := 25 ns;
T5 : time := 29 ns
);
port(
X_1 : in std_logic; -- B0\
X_2 : in std_logic; -- A0\
X_3 : in std_logic; -- S3
X_4 : in std_logic; -- S2
X_5 : in std_logic; -- S1
X_6 : in std_logic; -- S0
X_7 : in std_logic; -- Cn
X_8 : in std_logic; -- M
X_9 : out std_logic; -- F0\
X_10 : out std_logic; -- F1\
X_11 : out std_logic; -- F2\
X_12 : inout std_logic; -- GND
X_13 : out std_logic; -- F3\
X_14 : out std_logic; -- A=B
X_15 : out std_logic; -- P\
X_16 : out std_logic; -- Cn+4
X_17 : out std_logic; -- G\
X_18 : in std_logic; -- B3\
X_19 : in std_logic; -- A3\
X_20 : in std_logic; -- B2\
X_21 : in std_logic; -- A2\
X_22 : in std_logic; -- B1\
X_23 : in std_logic; -- A1\
X_24 : inout std_logic -- Vcc
);
end entity SN74LS181N;
 
architecture BEHAV of SN74LS181N is
alias CN is X_7;
alias M is X_8;
alias EQB is X_14;
alias CO is X_16;
alias G is X_17;
alias P is X_15;
signal A, B, F, BN, X, Y, N, L, Z, QI : unsigned(3 downto 0);
signal S : std_logic_vector(3 downto 0);
signal MN : 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 LA : std_logic;
signal LB : std_logic;
signal LC : std_logic;
 
begin
A <= (X_19, X_21, X_23, X_2);
B <= (X_18, X_20, X_22, X_1);
S <= (X_3, X_4, X_5, X_6);
BN <= not B;
MN <= not ( M );
G1: for i in A'range generate
Y(i) <= not ( ( B(i) and S(3) and A(i) ) or ( A(i) and S(2) and BN(i) ) );
X(i) <= not ( ( BN(i) and S(1) ) or ( S(0) and B(i) ) or A(i) );
N(i) <= ( Y(i) and not X(i) ) after T5;
end generate;
Z(3) <= ( X(3) ) after T1;
Z(2) <= ( Y(3) and X(2) ) after T1;
Z(1) <= ( Y(3) and Y(2) and X(1) ) after T1;
Z(0) <= ( Y(3) and Y(2) and Y(1) and X(0) ) after T1;
L1 <= not ( Y(3) and Y(2) and Y(1) and Y(0) and CN );
L2 <= ( CN and Y(0) and Y(1) and Y(2) and MN );
L3 <= ( Y(1) and Y(2) and X(0) and MN );
L4 <= ( Y(2) and X(1) and MN );
L5 <= ( X(2) and MN );
L6 <= ( CN and Y(0) and Y(1) and MN );
L7 <= ( Y(1) and X(0) and MN );
L8 <= ( X(1) and MN );
L9 <= ( CN and Y(0) and MN );
LA <= ( X(0) and MN );
L(0) <= not ( CN and MN );
L(3) <= not ( L2 or L3 or L4 or L5 );
L(2) <= not ( L6 or L7 or L8 );
L(1) <= not ( L9 or LA );
LC <= nor_reduce(std_logic_vector(Z)) after T2;
G <= LC;
LB <= ( LC ) after T1;
CO <= not ( LB and L1 ) after T2;
P <= nand_reduce(std_logic_vector(Y)) after T4;
F <= ( N xor L ) after T2;
G2: for i in 3 downto 1 generate
QI(i) <= ( F(i) ) after T5;
end generate;
QI(0) <= F(0); -- NB no delay
EQB <= and_reduce(std_logic_vector(QI)) after T3;
(X_13, X_11, X_10, X_9) <= F;
 
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS182N: Fast carry unit for 4 x LS181
-- Verified 31/07/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS182N is
generic(
tCLH : time := 10 ns;
tCHL : time := 11.5 ns;
tGLH : time := 7.5 ns;
tGHL : time := 10.5 ns;
tPLH : time := 6.5 ns;
tPHL : time := 10 ns
);
port(
X_1 : in std_logic; -- G1
X_2 : in std_logic; -- P1
X_3 : in std_logic; -- G0
X_4 : in std_logic; -- P0
X_5 : in std_logic; -- G3
X_6 : in std_logic; -- P3
X_7 : out std_logic; -- P
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- Cnz
X_10 : out std_logic; -- G
X_11 : out std_logic; -- Cny
X_12 : out std_logic; -- Cnx
X_13 : in std_logic; -- Cn
X_14 : in std_logic; -- G2
X_15 : in std_logic; -- P2
X_16 : inout std_logic -- Vcc
);
end entity SN74LS182N;
 
architecture BEHAV of SN74LS182N is
alias G1 is X_1;
alias P1 is X_2;
alias G0 is X_3;
alias P0 is X_4;
alias G3 is X_5;
alias P3 is X_6;
alias Cn is X_13;
alias G2 is X_14;
alias P2 is X_15;
signal NC : std_logic;
signal Cnx, Cny, Cnz, PI, GI : std_logic;
 
begin
NC <= not Cn;
PI <= or_reduce(P3 & P2 & P1 & P0);
GI <= and_reduce(G3 & G2 & G1 & G0) or
and_reduce(G3 & G2 & G1 & P1) or
and_reduce(G3 & G2 & P2) or (G3 and P3);
Cnz <= not(and_reduce(G2 & G1 & G0 & NC) or
and_reduce(G2 & G1 & G0 & P0) or
and_reduce(G2 & G1 & P1) or (G2 and P2));
Cny <= not(and_reduce(G1 & G0 & NC) or
and_reduce(G1 & G0 & P0) or (G1 and P1));
Cnx <= not((G0 and NC) or (G0 and P0));
T1: TTLdelay
generic map(
tPLH => tCLH,
tPHL => tCHL
)
port map(
A => Cnx,
B => X_12
);
T2: TTLdelay
generic map(
tPLH => tCLH,
tPHL => tCHL
)
port map(
A => Cny,
B => X_11
);
T3: TTLdelay
generic map(
tPLH => tCLH,
tPHL => tCHL
)
port map(
A => Cnz,
B => X_9
);
T4: TTLdelay
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => PI,
B => X_7
);
T5: TTLdelay
generic map(
tPLH => tGLH,
tPHL => tGHL
)
port map(
A => GI,
B => X_10
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74H183N: Dual high-speed adder
-- Verified 31/07/2016
-----------------------------------------------------------------------
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 SN74H183N is
generic(
tPLH : time := 15 ns;
tPHL : time := 18 ns
);
port(
X_1 : in std_logic; -- Aa
--
X_3 : in std_logic; -- Ba
X_4 : in std_logic; -- CIa
X_5 : out std_logic; -- COa
X_6 : out std_logic; -- Sa
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- Sb
--
X_10 : out std_logic; -- COb
X_11 : in std_logic; -- CIb
X_12 : in std_logic; -- Bb
X_13 : in std_logic; -- Ab
X_14 : inout std_logic -- Vcc
);
end entity SN74H183N;
 
architecture BEHAV of SN74H183N is
signal CI, A, B, S, CO : std_logic_vector(1 downto 0); -- Order b, a
begin
CI <= (X_11, X_4);
A <= (X_13, X_1);
B <= (X_12, X_3);
( X_8, X_6) <= S;
(X_10, X_5) <= CO;
G: for i in A'range generate
signal AA, BB, R : unsigned(1 downto 0);
signal Y, Z : std_logic_vector(1 downto 0);
begin
AA <= ('0', A(i));
BB <= ('0', B(i));
R <= AA + BB + CI(i);
Y <= std_logic_vector(R);
T1: TTLdelays
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => Y,
B => Z
);
 
S(i) <= Z(0);
CO(i) <= Z(1);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS189N: 64-bit random-access memory (3-state outputs)
-- Verified 18/07/2016
-----------------------------------------------------------------------
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 SN74LS189N is
generic(
tPLC : time := 10 ns;
tPLA : time := 37 ns;
tSUD : time := 25 ns;
tSUA : time := 10 ns
);
port(
X_1 : in std_logic; -- A0
X_2 : in std_logic; -- CS\
X_3 : in std_logic; -- WE\
X_4 : in std_logic; -- D1
X_5 : out std_logic; -- Q1\
X_6 : in std_logic; -- D2
X_7 : out std_logic; -- Q2\
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- Q3\
X_10 : in std_logic; -- D3
X_11 : out std_logic; -- Q4\
X_12 : in std_logic; -- D4
X_13 : in std_logic; -- A3
X_14 : in std_logic; -- A2
X_15 : in std_logic; -- A1
X_16 : inout std_logic -- Vcc
);
end entity SN74LS189N;
 
architecture BEHAV of SN74LS189N is
signal RE, WE : std_logic := '1';
signal IA : std_logic_vector(3 downto 0) := (others => '0');
signal D, QB, Q : std_logic_vector(3 downto 0);
begin
RE <= not( X_3 and not X_2);
WE <= not(not X_3 and not X_2);
IA <= (X_13, X_14, X_15, X_1);
D <= (X_12, X_10, X_6, X_4);
(X_11, X_9, X_7, X_5) <= Q;
MB: TTLramblock
generic map(
Omode => TriState,
INVT => '1',
tPLC => tPLC,
tPLA => tPLA,
tSUD => tSUD,
tSUA => tSUA
)
port map(
RA => IA,
WA => IA,
D => D,
O => Q,
CE => '0',
RE => RE,
WE => WE
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS190N: Up/down decade counter
-- Verified 01/08/2016
-----------------------------------------------------------------------
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 SN74LS190N is
generic(
MODULUS : positive := 10;
tQLH : time := 24 ns;
tQHL : time := 36 ns;
tTLH : time := 42 ns;
tTHL : time := 52 ns;
tRLH : time := 20 ns;
tRHL : time := 24 ns
);
port(
X_1 : in std_logic; -- P1
X_2 : out std_logic; -- Q1
X_3 : out std_logic; -- Q0
X_4 : in std_logic; -- CE\
X_5 : in std_logic; -- U\/D
X_6 : out std_logic; -- Q2
X_7 : out std_logic; -- Q3
X_8 : inout std_logic; -- GND
X_9 : in std_logic; -- P3
X_10 : in std_logic; -- P2
X_11 : in std_logic; -- PL\
X_12 : out std_logic; -- TC
X_13 : out std_logic; -- RC\
X_14 : in std_logic; -- CP
X_15 : in std_logic; -- P0
X_16 : inout std_logic -- Vcc
);
end entity SN74LS190N;
 
architecture BEHAV of SN74LS190N is
subtype CVAL is natural range 15 downto 0;
type VTAB is array(0 to 15) of CVAL;
constant T10U : VTAB := ( 1, 2, 3, 4, 5, 6, 7, 8, 9, 0,11, 6,13, 4,15, 2);
constant T10D : VTAB := ( 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14);
constant T16U : VTAB := ( 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15, 0);
constant T16D : VTAB := (15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14);
signal P, Q : unsigned(3 downto 0);
signal QI, QO : std_logic_vector(Q'range);
signal CTR : CVAL;
signal RC, TC : std_logic;
alias CP is X_14;
alias DWN is X_5;
alias CE is X_4;
alias PL is X_11;
begin
assert (MODULUS = 10) or (MODULUS = 16) report "Incorrect modulus" severity failure;
P <= (X_9, X_10, X_1, X_15);
(X_7, X_6, X_2, X_3) <= QO;
process(CP, PL, P) is
begin
if PL = '0' then
CTR <= to_integer(P);
elsif rising_edge(CP) and (CE = '0') then
if MODULUS = 10 then
if DWN = '0' then
CTR <= T10U(CTR);
else
CTR <= T10D(CTR);
end if;
else
if DWN = '0' then
CTR <= T16U(CTR);
else
CTR <= T16D(CTR);
end if;
end if;
end if;
end process;
process(all) is
variable B : std_logic;
begin
B := '1' when MODULUS = 10 else '0';
TC <= '0'; -- Default
case CTR is
when 0 => TC <= DWN;
when 9 | 11 | 13 => TC <= B and not DWN;
when 15 => TC <= not DWN;
when others => null;
end case;
end process;
RC <= not(TC and (not CE) and (not CP));
Q <= to_unsigned(CTR, Q'length);
QI <= std_logic_vector(Q);
TQ: TTLdelays
generic map(
tPLH => tQLH,
tPHL => tQHL
)
port map(
A => QI,
B => QO
);
TRC: TTLdelay
generic map(
tPLH => tRLH,
tPHL => tRHL
)
port map(
A => RC,
B => X_13
);
TTC: TTLdelay
generic map(
tPLH => tTLH,
tPHL => tTHL
)
port map(
A => TC,
B => X_12
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS191N: Up/down binary counter
-- Verified 01/08/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS191N is
generic(
MODULUS : positive := 16;
tQLH : time := 24 ns;
tQHL : time := 36 ns;
tTLH : time := 42 ns;
tTHL : time := 52 ns;
tRLH : time := 20 ns;
tRHL : time := 24 ns
);
port(
X_1 : in std_logic; -- P1
X_2 : out std_logic; -- Q1
X_3 : out std_logic; -- Q0
X_4 : in std_logic; -- CE\
X_5 : in std_logic; -- U\/D
X_6 : out std_logic; -- Q2
X_7 : out std_logic; -- Q3
X_8 : inout std_logic; -- GND
X_9 : in std_logic; -- P3
X_10 : in std_logic; -- P2
X_11 : in std_logic; -- PL\
X_12 : out std_logic; -- TC
X_13 : out std_logic; -- RC\
X_14 : in std_logic; -- CP
X_15 : in std_logic; -- P0
X_16 : inout std_logic -- Vcc
);
end entity SN74LS191N;
 
architecture BEHAV of SN74LS191N is
begin
Q: SN74LS190N -- Use the generic device, set for modulus 16
generic map(
MODULUS => MODULUS,
tQLH => tQLH,
tQHL => tQHL,
tTLH => tTLH,
tTHL => tTHL,
tRLH => tRLH,
tRHL => tRHL
)
port map(
X_1 => X_1,
X_2 => X_2,
X_3 => X_3,
X_4 => X_4,
X_5 => X_5,
X_6 => X_6,
X_7 => X_7,
X_8 => X_8,
X_9 => X_9,
X_10 => X_10,
X_11 => X_11,
X_12 => X_12,
X_13 => X_13,
X_14 => X_14,
X_15 => X_15,
X_16 => X_16
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS192N: Up/down decade counter
-- Verified 02/08/2016
-----------------------------------------------------------------------
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 SN74LS192N is
generic(
MODULUS : positive := 10;
tQLH : time := 32 ns;
tQHL : time := 30 ns;
tTCULH : time := 16 ns;
tTCUHL : time := 21 ns;
tTCDLH : time := 16 ns;
tTCDHL : time := 24 ns
);
port(
X_1 : in std_logic; -- P1
X_2 : out std_logic; -- Q1
X_3 : out std_logic; -- Q0
X_4 : in std_logic; -- CPD
X_5 : in std_logic; -- CPU
X_6 : out std_logic; -- Q2
X_7 : out std_logic; -- Q3
X_8 : inout std_logic; -- GND
X_9 : in std_logic; -- P3
X_10 : in std_logic; -- P2
X_11 : in std_logic; -- PL\
X_12 : out std_logic; -- TCU\
X_13 : out std_logic; -- TCD\
X_14 : in std_logic; -- MR
X_15 : in std_logic; -- P0
X_16 : inout std_logic -- Vcc
);
end entity SN74LS192N;
 
architecture BEHAV of SN74LS192N is
subtype CVAL is natural range 15 downto 0;
type VTAB is array(0 to 15) of CVAL;
constant T10U : VTAB := ( 1, 2, 3, 4, 5, 6, 7, 8, 9, 0,11, 6,13, 4,15, 2);
constant T10D : VTAB := ( 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14);
constant T16U : VTAB := ( 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15, 0);
constant T16D : VTAB := (15, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14);
signal P, Q, QB : unsigned(3 downto 0);
signal QI, QO : std_logic_vector(Q'range);
signal CTR : CVAL;
signal TCU, TCD : std_logic;
alias PL is X_11;
alias MR is X_14;
alias CPD is X_4;
alias CPU is X_5;
begin
assert (MODULUS = 10) or (MODULUS = 16) report "Incorrect modulus" severity failure;
P <= (X_9, X_10, X_1, X_15);
(X_7, X_6, X_2, X_3) <= QO;
Q <= to_unsigned(CTR, Q'length);
QI <= std_logic_vector(Q);
QB <= not Q;
process(CPU, CPD, PL, MR, P) is
begin
if MR = '1' then
CTR <= 0;
elsif PL = '0' then
CTR <= to_integer(P);
elsif rising_edge(CPU) then
if MODULUS = 10 then
CTR <= T10U(CTR);
else
CTR <= T16U(CTR);
end if;
elsif rising_edge(CPD) then
if MODULUS = 10 then
CTR <= T10D(CTR);
else
CTR <= T16D(CTR);
end if;
end if;
end process;
process(all) is
begin
if MODULUS = 10 then
TCU <= not((not CPU) and Q(0) and Q(3));
else
TCU <= not((not CPD) and Q(0) and Q(1) and Q(2) and Q(3));
end if;
TCD <= not((not CPD) and QB(0) and QB(1) and QB(2) and QB(3));
end process;
TQ: TTLdelays
generic map(
tPLH => tQLH,
tPHL => tQHL
)
port map(
A => QI,
B => QO
);
TRC: TTLdelay
generic map(
tPLH => tTCULH,
tPHL => tTCUHL
)
port map(
A => TCU,
B => X_12
);
TTC: TTLdelay
generic map(
tPLH => tTCDLH,
tPHL => tTCDHL
)
port map(
A => TCD,
B => X_13
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS193N: Up/down binary counter
-- Verified 02/08/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS193N is
generic(
MODULUS : positive := 16;
tQLH : time := 32 ns;
tQHL : time := 30 ns;
tTCULH : time := 16 ns;
tTCUHL : time := 21 ns;
tTCDLH : time := 16 ns;
tTCDHL : time := 24 ns
);
port(
X_1 : in std_logic; -- P1
X_2 : out std_logic; -- Q1
X_3 : out std_logic; -- Q0
X_4 : in std_logic; -- CPD
X_5 : in std_logic; -- CPU
X_6 : out std_logic; -- Q2
X_7 : out std_logic; -- Q3
X_8 : inout std_logic; -- GND
X_9 : in std_logic; -- P3
X_10 : in std_logic; -- P2
X_11 : in std_logic; -- PL\
X_12 : out std_logic; -- TCU\
X_13 : out std_logic; -- TCD\
X_14 : in std_logic; -- MR
X_15 : in std_logic; -- P0
X_16 : inout std_logic -- Vcc
);
end entity SN74LS193N;
 
architecture BEHAV of SN74LS193N is
begin
G: SN74LS192N -- Use the generic device, set for modulus 16
generic map(
MODULUS => MODULUS,
tQLH => tQLH,
tQHL => tQHL,
tTCULH => tTCULH,
tTCUHL => tTCUHL,
tTCDLH => tTCDLH,
tTCDHL => tTCDHL
)
port map(
X_1 => X_1,
X_2 => X_2,
X_3 => X_3,
X_4 => X_4,
X_5 => X_5,
X_6 => X_6,
X_7 => X_7,
X_8 => X_8,
X_9 => X_9,
X_10 => X_10,
X_11 => X_11,
X_12 => X_12,
X_13 => X_13,
X_14 => X_14,
X_15 => X_15,
X_16 => X_16
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS194N: 4-bit bidirectional shift register
-- Verified 03/08/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS194N is
generic(
tPLH : time := 21 ns;
tPHL : time := 24 ns
);
port(
X_1 : in std_logic; -- MR\
X_2 : in std_logic; -- DSR
X_3 : in std_logic; -- P0
X_4 : in std_logic; -- P1
X_5 : in std_logic; -- P2
X_6 : in std_logic; -- P3
X_7 : in std_logic; -- DSL
X_8 : inout std_logic; -- GND
X_9 : in std_logic; -- S0
X_10 : in std_logic; -- S1
X_11 : in std_logic; -- CP
X_12 : out std_logic; -- Q3
X_13 : out std_logic; -- Q2
X_14 : out std_logic; -- Q1
X_15 : out std_logic; -- Q0
X_16 : inout std_logic -- Vcc
);
end entity SN74LS194N;
 
architecture BEHAV of SN74LS194N is
signal S : std_logic_vector(1 downto 0);
-- NB Q3 is considered the rightmost bit (see data sheet)
signal P, Q, Z : std_logic_vector(0 to 3);
alias CP is X_11;
alias MR is X_1;
alias DR is X_2;
alias DL is X_7;
begin
S <= (X_10, X_9);
P <= (X_6, X_5, X_4, X_3);
(X_12, X_13, X_14, X_15) <= Z;
process(CP, MR) is
begin
if MR = '0' then
Q <= (others => '0');
elsif rising_edge(CP) then
case S is
when "01" => Q <= DR & Q(0 to 2); -- Shift right
when "10" => Q <= Q(1 to 3) & DL; -- Shift left
when "11" => Q <= P; -- Parallel load
when others => null; -- Hold
end case;
end if;
end process;
TQ: TTLdelays
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => Q,
B => Z
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS195N: Universal 4-bit shift register
-- Verified 03/08/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS195N is
generic(
tPLH : time := 21 ns;
tPHL : time := 24 ns
);
port(
X_1 : in std_logic; -- MR\
X_2 : in std_logic; -- J
X_3 : in std_logic; -- K\
X_4 : in std_logic; -- P0
X_5 : in std_logic; -- P1
X_6 : in std_logic; -- P2
X_7 : in std_logic; -- P3
X_8 : inout std_logic; -- GND
X_9 : in std_logic; -- PE\
X_10 : in std_logic; -- CP
X_11 : out std_logic; -- Q3\
X_12 : out std_logic; -- Q3
X_13 : out std_logic; -- Q2
X_14 : out std_logic; -- Q1
X_15 : out std_logic; -- Q0
X_16 : inout std_logic -- Vcc
);
end entity SN74LS195N;
 
architecture BEHAV of SN74LS195N is
signal P, Q, Z : std_logic_vector(3 downto 0);
signal JK : std_logic_vector(1 downto 0);
signal D : std_logic;
alias CP is X_10;
alias MR is X_1;
alias PE is X_9;
begin
JK <= (X_2, X_3);
P <= (X_7, X_6, X_5, X_4);
(X_12, X_13, X_14, X_15) <= Z;
X_11 <= not Z(3);
with JK select D <=
'0' when "00",
'1' when "11",
not Q(0) when "10",
Q(0) when others;
process(CP, MR)
begin
if MR = '0' then
Q <= (others => '0');
elsif rising_edge(CP) then
if PE = '0' then
Q <= P;
else
Q <= Q(2 downto 0) & D;
end if;
end if;
end process;
 
TQ: TTLdelays
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => Q,
B => Z
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS196N: Presettable decade counter
-- Verified 03/08/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS196N is
generic(
tPLH0 : time := 12 ns;
tPHL0 : time := 12 ns;
tPLH1 : time := 14 ns;
tPHL1 : time := 14 ns;
tPLH2 : time := 34 ns;
tPHL2 : time := 32 ns;
tPLH3 : time := 18 ns;
tPHL3 : time := 18 ns
);
port(
X_1 : in std_logic; -- PL\
X_2 : out std_logic; -- Q2
X_3 : in std_logic; -- P2
X_4 : in std_logic; -- P0
X_5 : out std_logic; -- Q0
X_6 : in std_logic; -- CP1\
X_7 : inout std_logic; -- GND
X_8 : in std_logic; -- CP0\
X_9 : out std_logic; -- Q1
X_10 : in std_logic; -- P1
X_11 : in std_logic; -- P3
X_12 : out std_logic; -- Q3
X_13 : in std_logic; -- MR\
X_14 : inout std_logic -- Vcc
);
end entity SN74LS196N;
 
architecture BEHAV of SN74LS196N is
begin
CT: SN74176N -- Same device, just faster
generic map(
tPLH0 => tPLH0,
tPHL0 => tPHL0,
tPLH1 => tPLH1,
tPHL1 => tPHL1,
tPLH2 => tPLH2,
tPHL2 => tPHL2,
tPLH3 => tPLH3,
tPHL3 => tPHL3
)
port map(
X_1 => X_1, -- PL\
X_2 => X_2, -- Q2
X_3 => X_3, -- P2
X_4 => X_4, -- P0
X_5 => X_5, -- Q0
X_6 => X_6, -- CP1\
X_7 => X_7, -- GND
X_8 => X_8, -- CP0\
X_9 => X_9, -- Q1
X_10 => X_10, -- P1
X_11 => X_11, -- P3
X_12 => X_12, -- Q3
X_13 => X_13, -- MR\
X_14 => X_14 -- Vcc
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS197N: Presettable binary counter
-- Verified 03/08/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS197N is
generic(
tPLH0 : time := 12 ns;
tPHL0 : time := 12 ns;
tPLH1 : time := 14 ns;
tPHL1 : time := 14 ns;
tPLH2 : time := 36 ns;
tPHL2 : time := 34 ns;
tPLH3 : time := 50 ns;
tPHL3 : time := 55 ns
);
port(
X_1 : in std_logic; -- PL\
X_2 : out std_logic; -- Q2
X_3 : in std_logic; -- P2
X_4 : in std_logic; -- P0
X_5 : out std_logic; -- Q0
X_6 : in std_logic; -- CP1\
X_7 : inout std_logic; -- GND
X_8 : in std_logic; -- CP0\
X_9 : out std_logic; -- Q1
X_10 : in std_logic; -- P1
X_11 : in std_logic; -- P3
X_12 : out std_logic; -- Q3
X_13 : in std_logic; -- MR\
X_14 : inout std_logic -- Vcc
);
end entity SN74LS197N;
 
architecture BEHAV of SN74LS197N is
begin
CT: SN74177N -- Same device, just faster
generic map(
tPLH0 => tPLH0,
tPHL0 => tPHL0,
tPLH1 => tPLH1,
tPHL1 => tPHL1,
tPLH2 => tPLH2,
tPHL2 => tPHL2,
tPLH3 => tPLH3,
tPHL3 => tPHL3
)
port map(
X_1 => X_1, -- PL\
X_2 => X_2, -- Q2
X_3 => X_3, -- P2
X_4 => X_4, -- P0
X_5 => X_5, -- Q0
X_6 => X_6, -- CP1\
X_7 => X_7, -- GND
X_8 => X_8, -- CP0\
X_9 => X_9, -- Q1
X_10 => X_10, -- P1
X_11 => X_11, -- P3
X_12 => X_12, -- Q3
X_13 => X_13, -- MR\
X_14 => X_14 -- Vcc
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS198N: 8-bit right/left shift register
-- Verified 06/08/2016
-----------------------------------------------------------------------
-- NB Fairchild databook has S0, S1 interchanged. See Signetics book.
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS198N is
generic(
tPLH : time := 26 ns;
tPHL : time := 30 ns
);
port(
X_1 : in std_logic; -- S0
X_2 : in std_logic; -- DSR
X_3 : in std_logic; -- P0
X_4 : out std_logic; -- Q0
X_5 : in std_logic; -- P1
X_6 : out std_logic; -- Q1
X_7 : in std_logic; -- P2
X_8 : out std_logic; -- Q2
X_9 : in std_logic; -- P3
X_10 : out std_logic; -- Q3
X_11 : in std_logic; -- CP
X_12 : inout std_logic; -- GND
X_13 : in std_logic; -- MR\
X_14 : out std_logic; -- Q4
X_15 : in std_logic; -- P4
X_16 : out std_logic; -- Q5
X_17 : in std_logic; -- P5
X_18 : out std_logic; -- Q6
X_19 : in std_logic; -- P6
X_20 : out std_logic; -- Q7
X_21 : in std_logic; -- P7
X_22 : in std_logic; -- DSL
X_23 : in std_logic; -- S1
X_24 : inout std_logic -- Vcc
);
end entity SN74LS198N;
 
architecture BEHAV of SN74LS198N is
signal P, D, Q, Z : std_logic_vector(0 to 7);
signal S : std_logic_vector(1 downto 0);
alias DSL is X_22;
alias DSR is X_2;
alias CP is X_11;
alias MR is X_13;
begin
S <= (X_23, X_1);
P <= (X_3, X_5, X_7, X_9, X_15, X_17, X_19, X_21);
(X_4, X_6, X_8, X_10, X_14, X_16, X_18, X_20) <= Z;
process(S) is
begin
assert (CP = '1') or (now < 6 ns) report "Change S only when CP = 1" severity error;
end process;
with S select D <=
P when "11", -- Load
Q(1 to 7) & DSL when "10", -- Left
DSR & Q(0 to 6) when "01", -- Right
Q when others; -- Hold
process(CP, MR) is
begin
if MR = '0' then
Q <= (others => '0');
elsif rising_edge(CP) then
Q <= D;
end if;
end process;
TQ: TTLdelays
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => Q,
B => Z
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS199N: 8-bit parallel IO shift register
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS199N is
generic(
tPLH : time := 26 ns;
tPHL : time := 30 ns
);
port(
X_1 : in std_logic; -- K\
X_2 : in std_logic; -- J
X_3 : in std_logic; -- P0
X_4 : out std_logic; -- Q0
X_5 : in std_logic; -- P1
X_6 : out std_logic; -- Q1
X_7 : in std_logic; -- P2
X_8 : out std_logic; -- Q2
X_9 : in std_logic; -- P3
X_10 : out std_logic; -- Q3
X_11 : in std_logic; -- CP1
X_12 : inout std_logic; -- GND
X_13 : in std_logic; -- CP2
X_14 : in std_logic; -- MR\
X_15 : out std_logic; -- Q4
X_16 : in std_logic; -- P4
X_17 : out std_logic; -- Q5
X_18 : in std_logic; -- P5
X_19 : out std_logic; -- Q6
X_20 : in std_logic; -- P6
X_21 : out std_logic; -- Q7
X_22 : in std_logic; -- P7
X_23 : in std_logic; -- PE\
X_24 : inout std_logic -- Vcc
);
end entity SN74LS199N;
 
architecture BEHAV of SN74LS199N is
signal CLK, I, P0, CP : std_logic;
signal P, Q, Z : std_logic_vector(0 to 7);
signal L1, L2, L3, L4, L5 : std_logic;
alias MR is X_14;
alias PE is X_23;
alias CP1 is X_11;
alias CP2 is X_13;
alias J is X_2;
alias KB is X_1;
begin
P <= (X_3, X_5, X_7, X_9, X_16, X_18, X_20, X_22);
L1 <= not PE;
L2 <= not Q(0);
CP <= CP1 or CP2;
L3 <= J and PE and L2;
L4 <= L1 and P(0);
L5 <= KB and PE and Q(0);
P0 <= L3 or L4 or L5;
FFC1 : TTL_FF
port map(
q => Q(0),
d => P0,
clk => CP,
cl => MR
);
G: for i in 1 to 7 generate
signal Z : std_logic;
begin
Z <= (Q(i-1) and PE ) or ( L1 and P(i));
FFC2 : TTL_FF
port map(
q => Q(i),
d => Z,
clk => CP,
cl => MR
);
end generate;
TQ: TTLdelays
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => Q,
B => Z
);
 
(X_4, X_6, X_8, X_10, X_15, X_17, X_19, X_21) <= Z;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS221N: Dual monostable multivibrator
-- Verified 06/08/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS221N is
generic(
W1 : time := 100 us; -- Pulse widths
W2 : time := 100 us
);
port(
X_1 : in std_logic; -- A1\
X_2 : in std_logic; -- B1
X_3 : in std_logic; -- CD1\
X_4 : out std_logic; -- Q1\
X_5 : out std_logic; -- Q2
X_6 : inout std_logic; -- Cx2
X_7 : inout std_logic; -- Rx2Cx2
X_8 : inout std_logic; -- GND
X_9 : in std_logic; -- A2\
X_10 : in std_logic; -- B2
X_11 : in std_logic; -- CD2\
X_12 : out std_logic; -- Q2\
X_13 : out std_logic; -- Q1
X_14 : inout std_logic; -- Cx1
X_15 : inout std_logic; -- Rx1Cx1
X_16 : inout std_logic -- Vcc
);
end entity SN74LS221N;
 
architecture BEHAV of SN74LS221N is
constant tD : time := 40 ns; -- Trigger delay from input
constant mt : time := 40 ns; -- Minimum trigger width
signal trig, NR, Q : std_logic_vector(2 downto 1);
type Widths is array(2 downto 1) of time;
constant pw : Widths := (W1, W2);
begin
NR(1) <= not X_3;
trig(1) <= and_reduce(X_3 & X_2 & (not X_1)) after tD;
NR(2) <= not X_11;
trig(2) <= and_reduce(X_11 & X_10 & (not X_9)) after tD;
 
GN: for i in trig'range generate
begin
MS: TTLmonostable
generic map(
pwidth => pw(i), -- Triggered pulse width
mintrig => mt, -- Minimum trigger width
retriggerable => true
)
port map(
trig => trig(i),
reset => NR(i),
Q => Q(i)
);
end generate;
X_13 <= Q(1);
X_4 <= not Q(1);
X_5 <= Q(2);
X_12 <= not Q(2);
 
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS240N: Octal buffer/line driver (3-state outputs)
-- Verified 06/08/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS240N is
generic(
tPLH : time := 14 ns;
tPHL : time := 18 ns;
tPZH : time := 23 ns;
tPZL : time := 30 ns;
tPHZ : time := 25 ns;
tPLZ : time := 18 ns
);
port(
X_1 : in std_logic; -- OEA\
X_2 : in std_logic; -- IA0
X_3 : out std_logic; -- YB0\
X_4 : in std_logic; -- IA1
X_5 : out std_logic; -- YB1\
X_6 : in std_logic; -- IA2
X_7 : out std_logic; -- YB2\
X_8 : in std_logic; -- IA3
X_9 : out std_logic; -- YB3\
X_10 : inout std_logic; -- GND
X_11 : in std_logic; -- IB3
X_12 : out std_logic; -- YA3\
X_13 : in std_logic; -- IB2
X_14 : out std_logic; -- YA2\
X_15 : in std_logic; -- IB1
X_16 : out std_logic; -- YA1\
X_17 : in std_logic; -- IB0
X_18 : out std_logic; -- YA0\
X_19 : in std_logic; -- OEB\
X_20 : inout std_logic -- Vcc
);
end entity SN74LS240N;
 
architecture BEHAV of SN74LS240N is
signal IA, IB, YA, YB, IAN, IBN : std_logic_vector(0 to 3);
signal OEA, OEB : std_logic;
begin
OEA <= not X_1; -- Enable, both active low
OEB <= not X_19;
 
IA <= (X_2, X_4, X_6, X_8 );
IB <= (X_17, X_15, X_13, X_11);
IAN <= not IA; -- '240 inverts data
IBN <= not IB;
G1: for i in IA'range generate
begin
B1: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => IAN(i),
E => OEA,
Y => YA(i)
);
B2: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => IBN(i),
E => OEB,
Y => YB(i)
);
end generate;
 
(X_18, X_16, X_14, X_12) <= YA;
(X_3, X_5, X_7, X_9 ) <= YB;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS241N: Octal buffer/line driver (3-state outputs)
-- Verified 14/08/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS241N is
generic(
tPLH : time := 18 ns;
tPHL : time := 18 ns;
tPZH : time := 23 ns;
tPZL : time := 30 ns;
tPHZ : time := 25 ns;
tPLZ : time := 18 ns
);
port(
X_1 : in std_logic; -- OEA\
X_2 : in std_logic; -- IA0
X_3 : out std_logic; -- YB0
X_4 : in std_logic; -- IA1
X_5 : out std_logic; -- YB1
X_6 : in std_logic; -- IA2
X_7 : out std_logic; -- YB2
X_8 : in std_logic; -- IA3
X_9 : out std_logic; -- YB3
X_10 : inout std_logic; -- GND
X_11 : in std_logic; -- IB3
X_12 : out std_logic; -- YA3
X_13 : in std_logic; -- IB2
X_14 : out std_logic; -- YA2
X_15 : in std_logic; -- IB1
X_16 : out std_logic; -- YA1
X_17 : in std_logic; -- IB0
X_18 : out std_logic; -- YA0
X_19 : in std_logic; -- OEB
X_20 : inout std_logic -- Vcc
);
end entity SN74LS241N;
 
architecture BEHAV of SN74LS241N is
signal IA, IB, YA, YB : std_logic_vector(0 to 3);
signal OEA, OEB : std_logic;
begin
OEA <= not X_1; -- Enable, active low
OEB <= X_19; -- Enable, active high
 
IA <= (X_2, X_4, X_6, X_8 );
IB <= (X_17, X_15, X_13, X_11);
G1: for i in IA'range generate
begin
B1: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => IA(i),
E => OEA,
Y => YA(i)
);
B2: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => IB(i),
E => OEB,
Y => YB(i)
);
end generate;
 
(X_18, X_16, X_14, X_12) <= YA;
(X_3, X_5, X_7, X_9 ) <= YB;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS242N: Quad bus transceiver (inverting 3-state outputs)
-- Verified 14/08/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS242N is
generic(
tPLH : time := 14 ns;
tPHL : time := 18 ns;
tPZH : time := 23 ns;
tPZL : time := 30 ns;
tPHZ : time := 25 ns;
tPLZ : time := 18 ns
);
port(
X_1 : in std_logic; -- A2B\
--
X_3 : inout std_logic; -- A1
X_4 : inout std_logic; -- A2
X_5 : inout std_logic; -- A3
X_6 : inout std_logic; -- A4
X_7 : inout std_logic; -- GND
X_8 : inout std_logic; -- B4\
X_9 : inout std_logic; -- B3\
X_10 : inout std_logic; -- B2\
X_11 : inout std_logic; -- B1\
--
X_13 : in std_logic; -- B2A
X_14 : inout std_logic -- Vcc
);
end entity SN74LS242N;
 
architecture BEHAV of SN74LS242N is
signal A2B, B2A : std_logic;
signal AIN, AOUT, BIN, BOUT : std_logic_vector(1 to 4);
begin
A2B <= not X_1; -- Enable, active low
B2A <= X_13; -- Enable, active high
AIN <= (X_3, X_4, X_5, X_6);
BIN <= (X_11, X_10, X_9, X_8);
(X_3, X_4, X_5, X_6) <= AOUT;
(X_11, X_10, X_9, X_8) <= BOUT;
 
G: for i in AIN'range generate
signal AX, BX : std_logic;
begin
AX <= not AIN(i);
G1A: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => AX,
E => A2B,
Y => BOUT(i)
);
BX <= not BIN(i);
G1B: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => BX,
E => B2A,
Y => AOUT(i)
);
end generate;
 
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS243N: Quad bus transceiver (3-state outputs)
-- Verified 14/08/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS243N is
generic(
tPLH : time := 18 ns;
tPHL : time := 18 ns;
tPZH : time := 23 ns;
tPZL : time := 30 ns;
tPHZ : time := 25 ns;
tPLZ : time := 18 ns
);
port(
X_1 : in std_logic; -- A2B\
--
X_3 : inout std_logic; -- A1
X_4 : inout std_logic; -- A2
X_5 : inout std_logic; -- A3
X_6 : inout std_logic; -- A4
X_7 : inout std_logic; -- GND
X_8 : inout std_logic; -- B4
X_9 : inout std_logic; -- B3
X_10 : inout std_logic; -- B2
X_11 : inout std_logic; -- B1
--
X_13 : in std_logic; -- B2A
X_14 : inout std_logic -- Vcc
);
end entity SN74LS243N;
 
architecture BEHAV of SN74LS243N is
signal A2B, B2A : std_logic;
signal AIN, AOUT, BIN, BOUT : std_logic_vector(1 to 4);
begin
A2B <= not X_1; -- Enable, active low
B2A <= X_13; -- Enable, active high
AIN <= (X_3, X_4, X_5, X_6);
BIN <= (X_11, X_10, X_9, X_8);
(X_3, X_4, X_5, X_6) <= AOUT;
(X_11, X_10, X_9, X_8) <= BOUT;
 
G: for i in AIN'range generate
begin
G1A: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => AIN(i),
E => A2B,
Y => BOUT(i)
);
G1B: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => BIN(i),
E => B2A,
Y => AOUT(i)
);
end generate;
 
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS244N: Octal buffer/line driver (3-state outputs)
-- Verified 14/08/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS244N is
generic(
tPLH : time := 18 ns;
tPHL : time := 18 ns;
tPZH : time := 23 ns;
tPZL : time := 30 ns;
tPHZ : time := 25 ns;
tPLZ : time := 18 ns
);
port(
X_1 : in std_logic; -- OEA\
X_2 : in std_logic; -- IA0
X_3 : out std_logic; -- YB0
X_4 : in std_logic; -- IA1
X_5 : out std_logic; -- YB1
X_6 : in std_logic; -- IA2
X_7 : out std_logic; -- YB2
X_8 : in std_logic; -- IA3
X_9 : out std_logic; -- YB3
X_10 : inout std_logic; -- GND
X_11 : in std_logic; -- IB3
X_12 : out std_logic; -- YA3
X_13 : in std_logic; -- IB2
X_14 : out std_logic; -- YA2
X_15 : in std_logic; -- IB1
X_16 : out std_logic; -- YA1
X_17 : in std_logic; -- IB0
X_18 : out std_logic; -- YA0
X_19 : in std_logic; -- OEB\
X_20 : inout std_logic -- Vcc
);
end entity SN74LS244N;
 
architecture BEHAV of SN74LS244N is
signal IA, IB, YA, YB : std_logic_vector(0 to 3);
signal OEA, OEB : std_logic;
begin
OEA <= not X_1; -- Enable, both active low
OEB <= not X_19;
 
IA <= (X_2, X_4, X_6, X_8 );
IB <= (X_17, X_15, X_13, X_11);
G1: for i in IA'range generate
begin
B1: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => IA(i),
E => OEA,
Y => YA(i)
);
B2: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => IB(i),
E => OEB,
Y => YB(i)
);
end generate;
 
(X_18, X_16, X_14, X_12) <= YA;
(X_3, X_5, X_7, X_9 ) <= YB;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS245N: Octal bus transceiver (3-state outputs)
-- Verified 15/12/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS245N is
generic(
tPLH : time := 18 ns;
tPHL : time := 18 ns;
tPZH : time := 23 ns;
tPZL : time := 30 ns;
tPHZ : time := 25 ns;
tPLZ : time := 18 ns
);
port(
X_1 : in std_logic; -- A2B
X_2 : inout std_logic; -- A0
X_3 : inout std_logic; -- A1
X_4 : inout std_logic; -- A2
X_5 : inout std_logic; -- A3
X_6 : inout std_logic; -- A4
X_7 : inout std_logic; -- A5
X_8 : inout std_logic; -- A6
X_9 : inout std_logic; -- A7
X_10 : inout std_logic; -- GND
X_11 : inout std_logic; -- B7
X_12 : inout std_logic; -- B6
X_13 : inout std_logic; -- B5
X_14 : inout std_logic; -- B4
X_15 : inout std_logic; -- B3
X_16 : inout std_logic; -- B2
X_17 : inout std_logic; -- B1
X_18 : inout std_logic; -- B0
X_19 : in std_logic; -- E\
X_20 : inout std_logic -- Vcc
);
end entity SN74LS245N;
 
architecture BEHAV of SN74LS245N is
signal A2B, B2A : std_logic;
signal AIN, AOUT, BIN, BOUT : std_logic_vector(0 to 7);
begin
A2B <= X_1 and not X_19;
B2A <= X_1 nor X_19;
AIN <= (X_2, X_3, X_4, X_5, X_6, X_7, X_8, X_9 );
BIN <= (X_18, X_17, X_16, X_15, X_14, X_13, X_12, X_11);
(X_2, X_3, X_4, X_5, X_6, X_7, X_8, X_9 ) <= AOUT;
(X_18, X_17, X_16, X_15, X_14, X_13, X_12, X_11) <= BOUT;
 
G: for i in AIN'range generate
begin
G1A: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => AIN(i),
E => A2B,
Y => BOUT(i)
);
G1B: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => BIN(i),
E => B2A,
Y => AOUT(i)
);
end generate;
end architecture BEHAV;
 
-- SN74LS247N: BCD to 7-segment decoder/driver (open collector)
-- SN74LS248N: BCD to 7-segment decoder/driver (2kR pullups)
-- SN74LS249N: BCD to 7-segment decoder (open collector)
 
-----------------------------------------------------------------------
-- SN74LS251N: 8-input multiplexer (3-state outputs)
-- Verified 15/12/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS251N is
generic(
tQBLH : time := 18 ns; -- Synthetic values, QB - Q delay
tQBHL : time := 12 ns;
tPS : time := 33 ns;
tPI : time := 15 ns;
tPZH : time := 20 ns;
tPZL : time := 25 ns;
tPHZ : time := 25 ns;
tPLZ : time := 20 ns
);
port(
X_1 : in std_logic; -- I3
X_2 : in std_logic; -- I2
X_3 : in std_logic; -- I1
X_4 : in std_logic; -- I0
X_5 : out std_logic; -- Z
X_6 : out std_logic; -- Z\
X_7 : in std_logic; -- OE\
X_8 : inout std_logic; -- GND
X_9 : in std_logic; -- S2
X_10 : in std_logic; -- S1
X_11 : in std_logic; -- S0
X_12 : in std_logic; -- I7
X_13 : in std_logic; -- I6
X_14 : in std_logic; -- I5
X_15 : in std_logic; -- I4
X_16 : inout std_logic -- Vcc
);
end entity SN74LS251N;
 
architecture BEHAV of SN74LS251N is
signal D : std_logic_vector(7 downto 0);
signal A : unsigned(2 downto 0);
signal Q, QB : std_logic;
signal EN : std_logic;
begin
A <= (X_9, X_10, X_11) after tPS;
D <= (X_12, X_13, X_14, X_15, X_1, X_2, X_3, X_4 ) after tPI;
QB <= not D(TTL_to_integer(A));
Q <= not QB;
EN <= not X_7; -- Active-high enable
OZ: TTL3State
generic map(
tPLH => tQBLH,
tPHL => tQBHL,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => Q,
E => EN,
Y => X_5
);
 
OZB: TTL3State
generic map(
tPLH => 1 ns,
tPHL => 1 ns,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => QB,
E => EN,
Y => X_6
);
 
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS253N: Dual 4-input multiplexer (3-state outputs)
-- Verified 16/12/2016
-----------------------------------------------------------------------
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 SN74LS253N is
generic(
tPLH : time := 29 ns;
tPHL : time := 24 ns;
tPZX : time := 22 ns;
tPXZ : time := 32 ns
);
port(
X_1 : in std_logic; -- OEA\
X_2 : in std_logic; -- S1
X_3 : in std_logic; -- I3A
X_4 : in std_logic; -- I2A
X_5 : in std_logic; -- I1A
X_6 : in std_logic; -- I0A
X_7 : out std_logic; -- ZA
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- ZB
X_10 : in std_logic; -- I0B
X_11 : in std_logic; -- I1B
X_12 : in std_logic; -- I2B
X_13 : in std_logic; -- I3B
X_14 : in std_logic; -- S0
X_15 : in std_logic; -- OEB\
X_16 : inout std_logic -- Vcc
);
end entity SN74LS253N;
 
architecture BEHAV of SN74LS253N is
signal D : TTLInputs(2 downto 1, 4 downto 1);
signal A : unsigned(2 downto 1);
signal E : std_logic_vector(2 downto 1); -- Enables: B:A channels
signal Q : std_logic_vector(2 downto 1);
signal C : natural range 4 downto 1;
begin
A <= (X_2, X_14);
C <= 1+TTL_to_integer(A);
E <= (not X_15, not X_1 ); -- Active high internally
D <= ((X_13, X_12, X_11, X_10), (X_3, X_4, X_5, X_6));
(X_9, X_7) <= Q;
G: for i in E'range generate
begin
OQ: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZX,
tPZL => tPZX,
tPHZ => tPXZ,
tPLZ => tPXZ
)
port map(
A => D(i,C),
E => E(i),
Y => Q(i)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS256N: Dual 4-bit addressable latch
-- Verified 18/12/2016
-----------------------------------------------------------------------
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 SN74LS256N is
generic(
tPXDA : time := 30 ns;
tPHLC : time := 18 ns
);
port(
X_1 : in std_logic; -- A0
X_2 : in std_logic; -- A1
X_3 : in std_logic; -- DA
X_4 : out std_logic; -- O0A
X_5 : out std_logic; -- O1A
X_6 : out std_logic; -- O2A
X_7 : out std_logic; -- O3A
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- O0B
X_10 : out std_logic; -- O1B
X_11 : out std_logic; -- O2B
X_12 : out std_logic; -- O3B
X_13 : in std_logic; -- DB
X_14 : in std_logic; -- E\
X_15 : in std_logic; -- CL\
X_16 : inout std_logic -- Vcc
);
end entity SN74LS256N;
 
architecture BEHAV of SN74LS256N is
signal AD : unsigned(1 downto 0);
signal A, B : std_logic_vector(3 downto 0);
begin
AD <= (X_2, X_1);
(X_7, X_6, X_5, X_4) <= A;
(X_12, X_11, X_10, X_9) <= B;
L1: TTLadLatch
generic map(
ABits => 2,
tPXDA => tPXDA,
tPHLC => tPHLC
)
port map(
D => X_3,
En => X_14,
Cn => X_15,
A => AD,
Z => A
);
 
L2: TTLadLatch
generic map(
ABits => 2,
tPXDA => tPXDA,
tPHLC => tPHLC
)
port map(
D => X_13,
En => X_14,
Cn => X_15,
A => AD,
Z => B
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS257N: Quad 2-input multiplexer (3-state outputs)
-- Verified 18/12/2016
-----------------------------------------------------------------------
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 SN74LS257N is
generic(
tPI : time := 18 ns;
tPS : time := 21 ns;
tPE : time := 30 ns
);
port(
X_1 : in std_logic; -- S
X_2 : in std_logic; -- I0A
X_3 : in std_logic; -- I1A
X_4 : out std_logic; -- ZA
X_5 : in std_logic; -- I0B
X_6 : in std_logic; -- I1B
X_7 : out std_logic; -- ZB
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- ZD
X_10 : in std_logic; -- I1D
X_11 : in std_logic; -- I0D
X_12 : out std_logic; -- ZC
X_13 : in std_logic; -- I1C
X_14 : in std_logic; -- I0C
X_15 : in std_logic; -- OE\
X_16 : inout std_logic -- Vcc
);
end entity SN74LS257N;
 
architecture BEHAV of SN74LS257N is
signal D : std_logic_vector(7 downto 0); -- Raw data, vectorized
signal Y, Z : std_logic_vector(3 downto 0); -- Output data, ditto
signal E : std_logic; -- Output enable, active high
signal N : unsigned(1 downto 0); -- Input select, as unsigned
signal A : natural; -- Ditto, numeric
begin
N <= '0' & X_1;
A <= to_integer(N) after tPS - tPI;
D <= (X_10, X_11, X_13, X_14, X_6, X_5, X_3, X_2);
E <= not X_15;
(X_9, X_12, X_7, X_4) <= Z;
GE: for i in Y'range generate
begin
ZB: TTL3State
generic map(
tPLH => tPI,
tPHL => tPI,
tPZH => tPE,
tPZL => tPE,
tPHZ => tPE,
tPLZ => tPE
)
port map(
A => Y(i),
E => E,
Y => Z(i)
);
end generate;
MUX: process(all) is
begin
for i in Y'range loop
Y(i) <= D((2*i)+A);
end loop;
end process;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS258N: Quad 2-input multiplexer (inverting 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 SN74LS258N is
generic(
tPI : time := 18 ns;
tPS : time := 21 ns;
tPE : time := 30 ns
);
port(
X_1 : in std_logic; -- S
X_2 : in std_logic; -- I0A
X_3 : in std_logic; -- I1A
X_4 : out std_logic; -- ZA\
X_5 : in std_logic; -- I0B
X_6 : in std_logic; -- I1B
X_7 : out std_logic; -- ZB\
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- ZD\
X_10 : in std_logic; -- I1D
X_11 : in std_logic; -- I0D
X_12 : out std_logic; -- ZC\
X_13 : in std_logic; -- I1C
X_14 : in std_logic; -- I0C
X_15 : in std_logic; -- OE\
X_16 : inout std_logic -- Vcc
);
end entity SN74LS258N;
 
architecture BEHAV of SN74LS258N is
signal D : std_logic_vector(7 downto 0); -- Raw data, vectorized
signal Y, Z : std_logic_vector(3 downto 0); -- Output data, ditto
signal E : std_logic; -- Output enable, active high
signal N : unsigned(1 downto 0); -- Input select, as unsigned
signal A : natural; -- Ditto, numeric
begin
N <= '0' & X_1;
A <= to_integer(N) after tPS - tPI;
D <= (X_10, X_11, X_13, X_14, X_6, X_5, X_3, X_2);
E <= not X_15;
(X_9, X_12, X_7, X_4) <= Z;
GE: for i in Y'range generate
begin
ZB: TTL3State
generic map(
tPLH => tPI,
tPHL => tPI,
tPZH => tPE,
tPZL => tPE,
tPHZ => tPE,
tPLZ => tPE
)
port map(
A => Y(i),
E => E,
Y => Z(i)
);
end generate;
MUX: process(all) is
begin
for i in Y'range loop
Y(i) <= not D((2*i)+A);
end loop;
end process;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS259N: 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 SN74LS259N is
generic(
tPXDA : time := 30 ns;
tPHLC : time := 18 ns
);
port(
X_1 : in std_logic; -- A0
X_2 : in std_logic; -- A1
X_3 : in std_logic; -- A2
X_4 : out std_logic; -- Q0
X_5 : out std_logic; -- Q1
X_6 : out std_logic; -- Q2
X_7 : out std_logic; -- Q3
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- Q4
X_10 : out std_logic; -- Q5
X_11 : out std_logic; -- Q6
X_12 : out std_logic; -- Q7
X_13 : in std_logic; -- D
X_14 : in std_logic; -- E\
X_15 : in std_logic; -- CL\
X_16 : inout std_logic -- Vcc
);
end entity SN74LS259N;
 
architecture BEHAV of SN74LS259N is
signal AD : unsigned(2 downto 0);
signal A : std_logic_vector(7 downto 0);
begin
AD <= (X_3, X_2, X_1);
(X_12, X_11, X_10, X_9, X_7, X_6, X_5, X_4) <= A;
L1: TTLadLatch
generic map(
ABits => 3,
tPXDA => tPXDA,
tPHLC => tPHLC
)
port map(
D => X_13,
En => X_14,
Cn => X_15,
A => AD,
Z => A
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS260N: Dual 5-input NOR gate
-- Verified 30/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS260N is
generic(
tPLH : time := 10 ns;
tPHL : time := 12 ns
);
port(
X_1 : in std_logic; -- I1A
X_2 : in std_logic; -- I2A
X_3 : in std_logic; -- I3A
X_4 : in std_logic; -- I1B
X_5 : out std_logic; -- ZA\
X_6 : out std_logic; -- ZB\
X_7 : inout std_logic; -- GND
X_8 : in std_logic; -- I2B
X_9 : in std_logic; -- I3B
X_10 : in std_logic; -- I4B
X_11 : in std_logic; -- I5B
X_12 : in std_logic; -- I4A
X_13 : in std_logic; -- I5A
X_14 : inout std_logic -- Vcc
);
end entity SN74LS260N;
 
architecture BEHAV of SN74LS260N is
signal A : TTLInputs (1 to 2, 1 to 5);
signal Y : TTLOutputs(1 to 2);
begin
A <= ( (X_1, X_2, X_3, X_12, X_13), (X_4, X_8, X_9, X_10, X_11) );
(X_5, X_6) <= Y;
G: TTLgate
generic map(
mode => Zor, -- Zand, Zor, Zxor, Zbuf
invert => '1', -- '1' will invert the output
ohigh => '1', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS266N: Quad 2-input XNOR gate (open collector)
-- Verified 30/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS266N is
generic(
tPLH : time := 30 ns;
tPHL : time := 30 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : in std_logic; -- 1B
X_3 : out std_logic; -- 1Y\
X_4 : out std_logic; -- 2Y\
X_5 : in std_logic; -- 2A
X_6 : in std_logic; -- 2B
X_7 : inout std_logic; -- GND
X_8 : in std_logic; -- 3B
X_9 : in std_logic; -- 3A
X_10 : out std_logic; -- 3Y\
X_11 : out std_logic; -- 4Y\
X_12 : in std_logic; -- 4B
X_13 : in std_logic; -- 4A
X_14 : inout std_logic -- Vcc
);
end entity SN74LS266N;
 
architecture BEHAV of SN74LS266N is
signal A : TTLInputs (1 to 4, 1 to 2);
signal Y : TTLOutputs(1 to 4);
begin
A <= ( (X_1, X_2), (X_5, X_6), (X_8, X_9), (X_12, X_13) );
(X_3, X_4, X_10, X_11) <= Y;
G: TTLgate
generic map(
mode => Zxor, -- Zand, Zor, Zxor, Zbuf
invert => '1', -- '1' will invert the output
ohigh => 'Z', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS273N: 8-bit register, with Clear
-- Verified 18/12/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS273N is
generic(
tPX : time := 24 ns
);
port(
X_1 : in std_logic; -- MR\
X_2 : out std_logic; -- Q0
X_3 : in std_logic; -- D0
X_4 : in std_logic; -- D1
X_5 : out std_logic; -- Q1
X_6 : out std_logic; -- Q2
X_7 : in std_logic; -- D2
X_8 : in std_logic; -- D3
X_9 : out std_logic; -- Q3
X_10 : inout std_logic; -- GND
X_11 : in std_logic; -- CP
X_12 : out std_logic; -- Q4
X_13 : in std_logic; -- D4
X_14 : in std_logic; -- D5
X_15 : out std_logic; -- Q5
X_16 : out std_logic; -- Q6
X_17 : in std_logic; -- D6
X_18 : in std_logic; -- D7
X_19 : out std_logic; -- Q7
X_20 : inout std_logic -- Vcc
);
end entity SN74LS273N;
 
architecture BEHAV of SN74LS273N is
signal A, Y : std_logic_vector(7 downto 0);
begin
A <= (X_18, X_17, X_14, X_13, X_8, X_7, X_4, X_3);
(X_19, X_16, X_15, X_12, X_9, X_6, X_5, X_2) <= Y after tPX;
process(all) is
begin
if X_1 = '0' then
Y <= (others => '0');
elsif rising_edge(X_11) then
Y <= A;
end if;
end process;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS279N: Quad set/reset latch
-- Verified 18/12/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS279N is
generic(
tPX : time := 27 ns
);
port(
X_1 : in std_logic; -- 1R\
X_2 : in std_logic; -- 1S1\
X_3 : in std_logic; -- 1S2\
X_4 : out std_logic; -- 1Q
X_5 : in std_logic; -- 2R\
X_6 : in std_logic; -- 2S\
X_7 : out std_logic; -- 2Q
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- 3Q
X_10 : in std_logic; -- 3S\
X_11 : in std_logic; -- 3R1\
X_12 : in std_logic; -- 3R2\
X_13 : out std_logic; -- 4Q
X_14 : in std_logic; -- 4S\
X_15 : in std_logic; -- 4R\
X_16 : inout std_logic -- Vcc
);
end entity SN74LS279N;
 
architecture BEHAV of SN74LS279N is
signal R, S, Q : std_logic_vector(3 downto 0);
begin
R <= (X_15, X_12 and X_11, X_5, X_1);
S <= (X_14, X_10, X_6, X_3 and X_2);
(X_13, X_9, X_7, X_4) <= Q after tPX;
process(all) is
variable Z : std_logic_vector(1 downto 0);
begin
for i in Q'range loop
Z := S(i) & R(i);
case Z is
when "11" => null;
when "01" => Q(i) <= '1';
when "10" => Q(i) <= '0';
when others => Q(i) <= 'X';
end case;
end loop;
end process;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS280N: 9-bit parity generator/checker
-- Verified 18/12/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_misc.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS280N is
generic(
tPLH : time := 21 ns;
tPHL : time := 18 ns
);
port(
X_1 : in std_logic; -- I6
X_2 : in std_logic; -- I7
--
X_4 : in std_logic; -- I8
X_5 : out std_logic; -- SE
X_6 : out std_logic; -- SO
X_7 : inout std_logic; -- GND
X_8 : in std_logic; -- I0
X_9 : in std_logic; -- I1
X_10 : in std_logic; -- I2
X_11 : in std_logic; -- I3
X_12 : in std_logic; -- I4
X_13 : in std_logic; -- I5
X_14 : inout std_logic -- Vcc
);
end entity SN74LS280N;
 
architecture BEHAV of SN74LS280N is
signal A : std_logic_vector(8 downto 0);
signal Y, Z : std_logic;
begin
A <= (X_4, X_2, X_1, X_13, X_12, X_11, X_10, X_9, X_8);
Y <= xor_reduce(A);
OD: TTLdelay
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => Y,
B => Z
);
X_6 <= Z;
X_5 <= not Z;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS283N: 4-bit binary full adder (with fast carry)
-- Verified 06/06/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS283N is
generic(
tPLHS : time := 24 ns;
tPHLS : time := 24 ns;
tPLHC : time := 17 ns;
tPHLC : time := 17 ns
);
port(
X_1 : out std_logic; -- S1
X_2 : in std_logic; -- B1
X_3 : in std_logic; -- A1
X_4 : out std_logic; -- S0
X_5 : in std_logic; -- A0
X_6 : in std_logic; -- B0
X_7 : in std_logic; -- C0
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- C4
X_10 : out std_logic; -- S3
X_11 : in std_logic; -- B3
X_12 : in std_logic; -- A3
X_13 : out std_logic; -- S2
X_14 : in std_logic; -- A2
X_15 : in std_logic; -- B2
X_16 : inout std_logic -- Vcc
);
end entity SN74LS283N;
 
architecture BEHAV of SN74LS283N is
signal A, B, S : unsigned(4 downto 0); -- S(4) = carry-out
signal SUM : unsigned(3 downto 0);
begin
A <= ('0', X_12, X_14, X_3, X_5);
B <= ('0', X_11, X_15, X_2, X_6);
S <= A + B + X_7;
 
G: for i in SUM'range generate
begin
DSM: TTLdelay
generic map(
tPLH => tPLHS,
tPHL => tPHLS
)
port map(
A => S(i),
B => SUM(i)
);
end generate;
DCY: TTLdelay
generic map(
tPLH => tPLHC,
tPHL => tPHLC
)
port map(
A => S(4),
B => X_9
);
(X_10, X_13, X_1, X_4) <= SUM;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS289N: 64-bit random access memory (open collector)
-- Verified 06/06/2016
-----------------------------------------------------------------------
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 SN74LS289N is
generic(
tPLC : time := 10 ns;
tPLA : time := 37 ns;
tSUD : time := 25 ns;
tSUA : time := 10 ns
);
port(
X_1 : in std_logic; -- A0
X_2 : in std_logic; -- CS\
X_3 : in std_logic; -- WE\
X_4 : in std_logic; -- D1
X_5 : out std_logic; -- Q1\
X_6 : in std_logic; -- D2
X_7 : out std_logic; -- Q2\
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- Q3\
X_10 : in std_logic; -- D3
X_11 : out std_logic; -- Q4\
X_12 : in std_logic; -- D4
X_13 : in std_logic; -- A3
X_14 : in std_logic; -- A2
X_15 : in std_logic; -- A1
X_16 : inout std_logic -- Vcc
);
end entity SN74LS289N;
 
architecture BEHAV of SN74LS289N is
signal RE, WE : std_logic := '1';
signal ia : std_logic_vector(3 downto 0) := (others => '0');
signal D, QB, Q : std_logic_vector(3 downto 0);
begin
RE <= not( X_3 and not X_2);
WE <= not(not X_3 and not X_2);
ia <= (X_13, X_14, X_15, X_1);
D <= (X_12, X_10, X_6, X_4);
(X_11, X_9, X_7, X_5) <= Q;
MB: TTLramblock
generic map(
Omode => OpenColl,
INVT => '1',
tPLC => tPLC,
tPLA => tPLA,
tSUD => tSUD,
tSUA => tSUA
)
port map(
RA => ia,
WA => ia,
D => D,
O => Q,
CE => '0',
RE => RE,
WE => WE
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS290N: BCD decade counter
-- Verified 31/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS290N is
generic(
tPLH0 : time := 16 ns;
tPHL0 : time := 18 ns;
tPLH1 : time := 16 ns;
tPHL1 : time := 21 ns;
tPLH2 : time := 32 ns;
tPHL2 : time := 35 ns;
tPLH3 : time := 32 ns;
tPHL3 : time := 35 ns
);
port(
X_1 : in std_logic; -- MS1
--
X_3 : in std_logic; -- MS2
X_4 : out std_logic; -- Q2
X_5 : out std_logic; -- Q1
--
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- Q3
X_9 : out std_logic; -- Q0
X_10 : in std_logic; -- CP0\
X_11 : in std_logic; -- CP1\
X_12 : in std_logic; -- MR1
X_13 : in std_logic; -- MR2
X_14 : inout std_logic -- Vcc
);
end entity SN74LS290N;
 
architecture BEHAV of SN74LS290N is
signal rst, set : std_logic;
signal val : std_logic_vector(3 downto 0);
begin
rst <= not (X_12 and X_13);
set <= not (X_1 and X_3 );
(X_8, X_4, X_5, X_9) <= val;
M1: TTLcount4
generic map(
tPLH0 => tPLH0,
tPHL0 => tPHL0,
tPLH1 => tPLH1,
tPHL1 => tPHL1,
tPLH2 => tPLH2,
tPHL2 => tPHL2,
tPLH3 => tPLH3,
tPHL3 => tPHL3,
modulus => 10
)
port map(
ld => '1',
d => (others => '0'),
clka => X_10,
clkb => X_11,
rst => rst,
set => set,
val => val
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS293N: 4-bit binary counter
-- Verified 31/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS293N is
generic(
tPLH0 : time := 16 ns;
tPHL0 : time := 18 ns;
tPLH1 : time := 16 ns;
tPHL1 : time := 21 ns;
tPLH2 : time := 32 ns;
tPHL2 : time := 35 ns;
tPLH3 : time := 32 ns;
tPHL3 : time := 35 ns
);
port(
--
--
--
X_4 : out std_logic; -- Q2
X_5 : out std_logic; -- Q1
--
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- Q3
X_9 : out std_logic; -- Q0
X_10 : in std_logic; -- CP0\
X_11 : in std_logic; -- CP1\
X_12 : in std_logic; -- MR1
X_13 : in std_logic; -- MR2
X_14 : inout std_logic -- Vcc
);
end entity SN74LS293N;
 
architecture BEHAV of SN74LS293N is
signal rst : std_logic;
signal val : std_logic_vector(3 downto 0);
begin
rst <= not (X_12 and X_13);
(X_8, X_4, X_5, X_9) <= val;
M1: TTLcount4
generic map(
tPLH0 => tPLH0,
tPHL0 => tPHL0,
tPLH1 => tPLH1,
tPHL1 => tPHL1,
tPLH2 => tPLH2,
tPHL2 => tPHL2,
tPLH3 => tPLH3,
tPHL3 => tPHL3,
modulus => 16
)
port map(
ld => '1',
d => (others => '0'),
clka => X_10,
clkb => X_11,
rst => rst,
set => '1',
val => val
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS295AN: 4-bit shift register (3-state outputs)
-- Verified 18/12/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS295AN is
generic(
tPLH : time := 30 ns;
tPHL : time := 26 ns;
tPZH : time := 18 ns;
tPZL : time := 20 ns;
tPHZ : time := 24 ns;
tPLZ : time := 20 ns
);
port(
X_1 : in std_logic; -- DS
X_2 : in std_logic; -- P0
X_3 : in std_logic; -- P1
X_4 : in std_logic; -- P2
X_5 : in std_logic; -- P3
X_6 : in std_logic; -- PE
X_7 : inout std_logic; -- GND
X_8 : in std_logic; -- OE
X_9 : in std_logic; -- CP\
X_10 : out std_logic; -- Q3
X_11 : out std_logic; -- Q2
X_12 : out std_logic; -- Q1
X_13 : out std_logic; -- Q0
X_14 : inout std_logic -- Vcc
);
end entity SN74LS295AN;
 
architecture BEHAV of SN74LS295AN is
signal P, REG, Q : std_logic_vector(3 downto 0);
alias CP is X_9;
alias PE is X_6;
alias DS is X_1;
alias OE is X_8;
begin
P <= (X_5, X_4, X_3, X_2);
(X_10, X_11, X_12, X_13) <= Q;
process(CP) is
begin
if falling_edge(CP) then
if PE = '1' then -- Load
REG <= P;
else
REG <= REG(2 downto 0) & DS;
end if;
end if;
end process;
G: for i in REG'range generate
begin
OB: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => REG(i),
E => OE,
Y => Q(i)
);
end generate;
DO: TTLdelays
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => REG,
B => Q
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS298N: Quad 2-port register (multiplexer with storage)
-- Verified 19/12/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS298N is
generic(
tPLH : time := 25 ns;
tPHL : time := 25 ns
);
port(
X_1 : in std_logic; -- I1B
X_2 : in std_logic; -- I1A
X_3 : in std_logic; -- I0A
X_4 : in std_logic; -- I0B
X_5 : in std_logic; -- I1C
X_6 : in std_logic; -- I1D
X_7 : in std_logic; -- I0D
X_8 : inout std_logic; -- GND
X_9 : in std_logic; -- I0C
X_10 : in std_logic; -- S
X_11 : in std_logic; -- CP\
X_12 : out std_logic; -- QD
X_13 : out std_logic; -- QC
X_14 : out std_logic; -- QB
X_15 : out std_logic; -- QA
X_16 : inout std_logic -- Vcc
);
end entity SN74LS298N;
 
architecture BEHAV of SN74LS298N is
signal D : TTLInputs(4 downto 1, 2 downto 1);
signal R, Q : std_logic_vector(4 downto 1);
signal C : natural range 2 downto 1;
 
alias CP is X_11;
alias S is X_10;
begin
C <= 2 when To_bit(S) = '1' else 1;
D <= ((X_6, X_7), (X_5, X_9), (X_1, X_4), (X_2, X_3));
(X_12, X_13, X_14, X_15) <= Q;
process(CP) is -- Output register
begin
if falling_edge(CP) then
for i in R'range loop
R(i) <= D(i,C);
end loop;
end if;
end process;
 
OQ: TTLdelays
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => R,
B => Q
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS299N: 8-bit universal shift/storage register
-- Verified 20/12/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS299N is
generic(
tPLH : time := 25 ns;
tPHL : time := 29 ns;
tPZH : time := 18 ns;
tPZL : time := 23 ns;
tPHZ : time := 15 ns;
tPLZ : time := 15 ns;
tRSD : time := 3 ns -- Extra delay after reset
);
port(
X_1 : in std_logic; -- S0
X_2 : in std_logic; -- OE1\
X_3 : in std_logic; -- OE2\
X_4 : inout std_logic; -- IO6
X_5 : inout std_logic; -- IO4
X_6 : inout std_logic; -- IO2
X_7 : inout std_logic; -- IO0
X_8 : out std_logic; -- Q0
X_9 : in std_logic; -- MR\
X_10 : inout std_logic; -- GND
X_11 : in std_logic; -- DS0
X_12 : in std_logic; -- CP
X_13 : inout std_logic; -- IO1
X_14 : inout std_logic; -- IO3
X_15 : inout std_logic; -- IO5
X_16 : inout std_logic; -- IO7
X_17 : out std_logic; -- Q7
X_18 : in std_logic; -- DS7
X_19 : in std_logic; -- S1
X_20 : inout std_logic -- Vcc
);
end entity SN74LS299N;
 
architecture BEHAV of SN74LS299N is
signal D, Q, Z : std_logic_vector(0 to 7); -- Internal register (NB direction)
signal S : unsigned(1 downto 0);
signal OE : std_logic;
alias MR is X_9;
alias CP is X_12;
alias DS0 is X_11;
alias DS7 is X_18;
begin
S <= (X_19, X_1);
OE <= not(X_2) and not(X_3) and not(X_1 and X_19);
D <= (X_7, X_13, X_6, X_14, X_5, X_15, X_4, X_16); -- Parallel load
X_8 <= Q(0);
X_17 <= Q(7);
(X_7, X_13, X_6, X_14, X_5, X_15, X_4, X_16) <= Z; -- When driven
G: for i in Q'range generate
begin
OB: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => Q(i),
E => OE,
Y => Z(i)
);
end generate;
process(MR, CP) is -- Main register
begin
if MR = '0' then
Q <= (others => '0') after tRSD; -- MR is slightly late
elsif rising_edge(CP) then
case S is
when "01" => Q <= DS0 & Q(0 to 6); -- Shift right
when "10" => Q <= Q(1 to 7) & DS7; -- Shift left
when "11" => Q <= D; -- Parallel load
when others => null; -- "00" hold
end case;
end if;
end process;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS322N: 8-bit SIPO register (with sign extend)
-- Verified 21/12/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS322N is
generic(
tPLH : time := 25 ns;
tPHL : time := 30 ns;
tPZH : time := 25 ns;
tPZL : time := 30 ns;
tPHZ : time := 23 ns;
tPLZ : time := 23 ns;
tRSD : time := 3 ns -- Extra delay after reset
);
port(
X_1 : in std_logic; -- RE\
X_2 : in std_logic; -- S/P\
X_3 : in std_logic; -- D0
X_4 : inout std_logic; -- IO7
X_5 : inout std_logic; -- IO5
X_6 : inout std_logic; -- IO3
X_7 : inout std_logic; -- IO1
X_8 : in std_logic; -- OE\
X_9 : in std_logic; -- MR\
X_10 : inout std_logic; -- GND
X_11 : in std_logic; -- CP
X_12 : out std_logic; -- Q0
X_13 : inout std_logic; -- IO0
X_14 : inout std_logic; -- IO2
X_15 : inout std_logic; -- IO4
X_16 : inout std_logic; -- IO6
X_17 : in std_logic; -- D1
X_18 : in std_logic; -- SE\
X_19 : in std_logic; -- S
X_20 : inout std_logic -- Vcc
);
end entity SN74LS322N;
 
architecture BEHAV of SN74LS322N is
signal D, Q, Z : std_logic_vector(7 downto 0); -- Internal register (NB direction)
signal OEI, DI : std_logic;
alias MR is X_9;
alias CP is X_11;
alias D0 is X_3;
alias D1 is X_17;
alias S is X_19;
alias RE is X_1;
alias SP is X_2;
alias SE is X_18;
alias OE is X_8;
alias Q0 is Q(0);
begin
OEI <= (SP or RE) and not(OE);
DI <= D0 when S = '0' else D1;
D <= (X_4, X_16, X_5, X_15, X_6, X_14, X_7, X_13); -- Parallel load
X_12 <= Q0;
(X_4, X_16, X_5, X_15, X_6, X_14, X_7, X_13) <= Z; -- When driven
G: for i in Q'range generate
begin
OB: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => Q(i),
E => OEI,
Y => Z(i)
);
end generate;
process(MR, CP) is -- Main register
variable SEL : unsigned(2 downto 0);
begin
if MR = '0' then
Q <= (others => '0') after tRSD; -- MR is slightly late
elsif rising_edge(CP) then
SEL := RE & SP & SE;
case SEL is
when "011" => Q <= DI & Q(7 downto 1); -- Shift right
when "010" => Q <= Q(7) & Q(7 downto 1); -- Sign extend
when "00-" => Q <= D; -- Parallel load
when others => null; -- Hold
end case;
end if;
end process;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS323N: 8-bit universal shift/storage register
-- Verified 21/12/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS323N is
generic(
tPLH : time := 25 ns;
tPHL : time := 29 ns;
tPZH : time := 18 ns;
tPZL : time := 23 ns;
tPHZ : time := 15 ns;
tPLZ : time := 15 ns
);
port(
X_1 : in std_logic; -- S0
X_2 : in std_logic; -- OE1\
X_3 : in std_logic; -- OE2\
X_4 : inout std_logic; -- IO6
X_5 : inout std_logic; -- IO4
X_6 : inout std_logic; -- IO2
X_7 : inout std_logic; -- IO0
X_8 : out std_logic; -- Q0
X_9 : in std_logic; -- SR\
X_10 : inout std_logic; -- GND
X_11 : in std_logic; -- DSO
X_12 : in std_logic; -- CP
X_13 : inout std_logic; -- IO1
X_14 : inout std_logic; -- IO3
X_15 : inout std_logic; -- IO5
X_16 : inout std_logic; -- IO7
X_17 : out std_logic; -- Q7
X_18 : in std_logic; -- DS7
X_19 : in std_logic; -- S1
X_20 : inout std_logic -- Vcc
);
end entity SN74LS323N;
 
architecture BEHAV of SN74LS323N is
signal D, Q, Z : std_logic_vector(0 to 7); -- Internal register (NB direction)
signal OE : std_logic;
alias SR is X_9;
alias CP is X_12;
alias DS0 is X_11;
alias DS7 is X_18;
begin
OE <= not(X_2) and not(X_3) and not(X_1 and X_19);
D <= (X_7, X_13, X_6, X_14, X_5, X_15, X_4, X_16); -- Parallel load
X_8 <= Q(0);
X_17 <= Q(7);
(X_7, X_13, X_6, X_14, X_5, X_15, X_4, X_16) <= Z; -- When driven
G: for i in Q'range generate
begin
OB: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => Q(i),
E => OE,
Y => Z(i)
);
end generate;
process(CP) is -- Main register
variable S : unsigned(2 downto 0);
begin
if rising_edge(CP) then
S := (SR, X_19, X_1);
case S is
when "0--" => Q <= (others => '0'); -- Sync. reset
when "101" => Q <= DS0 & Q(0 to 6); -- Shift right
when "110" => Q <= Q(1 to 7) & DS7; -- Shift left
when "111" => Q <= D; -- Parallel load
when others => null; -- Hold
end case;
end if;
end process;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS352N: Dual 4-input multiplexer
-- Verified 21/12/2016
-----------------------------------------------------------------------
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 SN74LS352N is
generic(
tPLH : time := 22 ns;
tPHL : time := 38 ns
);
port(
X_1 : in std_logic; -- EA\
X_2 : in std_logic; -- S1
X_3 : in std_logic; -- I3A
X_4 : in std_logic; -- I2A
X_5 : in std_logic; -- I1A
X_6 : in std_logic; -- I0A
X_7 : out std_logic; -- ZA
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- ZB
X_10 : in std_logic; -- I0B
X_11 : in std_logic; -- I1B
X_12 : in std_logic; -- I2B
X_13 : in std_logic; -- I3B
X_14 : in std_logic; -- S0
X_15 : in std_logic; -- EB\
X_16 : inout std_logic -- Vcc
);
end entity SN74LS352N;
 
architecture BEHAV of SN74LS352N is
signal D : TTLInputs(2 downto 1, 4 downto 1);
signal A : unsigned(2 downto 1);
signal E : std_logic_vector(2 downto 1); -- Enables: B:A channels
signal Q : std_logic_vector(2 downto 1);
signal C : natural range 4 downto 1;
begin
A <= (X_2, X_14);
C <= 1+TTL_to_integer(A);
E <= (X_15, X_1 );
D <= ((X_13, X_12, X_11, X_10), (X_3, X_4, X_5, X_6));
(X_9, X_7) <= Q;
G: for i in E'range generate
signal Z : std_logic;
begin
Z <= not((not E(i)) and D(i,C));
OQ: TTLdelay
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => Z,
B => Q(i)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS353N: Dual 4-input multiplexer (3-state outputs)
-- Verified 21/12/2016
-----------------------------------------------------------------------
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 SN74LS353N is
generic(
tPLH : time := 24 ns;
tPHL : time := 32 ns;
tPZX : time := 18 ns;
tPXZ : time := 18 ns
);
port(
X_1 : in std_logic; -- OEA\
X_2 : in std_logic; -- S1
X_3 : in std_logic; -- I3A
X_4 : in std_logic; -- I2A
X_5 : in std_logic; -- I1A
X_6 : in std_logic; -- I0A
X_7 : out std_logic; -- ZA\
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- ZB\
X_10 : in std_logic; -- I0B
X_11 : in std_logic; -- I1B
X_12 : in std_logic; -- I2B
X_13 : in std_logic; -- I3B
X_14 : in std_logic; -- S0
X_15 : in std_logic; -- OEB\
X_16 : inout std_logic -- Vcc
);
end entity SN74LS353N;
 
architecture BEHAV of SN74LS353N is
signal D : TTLInputs(2 downto 1, 4 downto 1);
signal A : unsigned(2 downto 1);
signal E : std_logic_vector(2 downto 1); -- Enables: B:A channels
signal Q : std_logic_vector(2 downto 1);
signal C : natural range 4 downto 1;
begin
A <= (X_2, X_14);
C <= 1+TTL_to_integer(A);
E <= (not X_15, not X_1 ); -- Active high internally
D <= ((X_13, X_12, X_11, X_10), (X_3, X_4, X_5, X_6));
(X_9, X_7) <= Q;
G: for i in E'range generate
signal Z : std_logic;
begin
Z <= not D(i,C);
OQ: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZX,
tPZL => tPZX,
tPHZ => tPXZ,
tPLZ => tPXZ
)
port map(
A => Z,
E => E(i),
Y => Q(i)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS365AN: Hex 3-state buffer
-- Verified 21/12/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS365AN is
generic(
tPLH : time := 16 ns;
tPHL : time := 22 ns;
tPZH : time := 24 ns;
tPZL : time := 30 ns;
tPHZ : time := 20 ns;
tPLZ : time := 25 ns
);
port(
X_1 : in std_logic; -- E1\
X_2 : in std_logic; -- A1
X_3 : out std_logic; -- Y1
X_4 : in std_logic; -- A2
X_5 : out std_logic; -- Y2
X_6 : in std_logic; -- A3
X_7 : out std_logic; -- Y3
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- Y4
X_10 : in std_logic; -- A4
X_11 : out std_logic; -- Y5
X_12 : in std_logic; -- A5
X_13 : out std_logic; -- Y6
X_14 : in std_logic; -- A6
X_15 : in std_logic; -- E2\
X_16 : inout std_logic -- Vcc
);
end entity SN74LS365AN;
 
architecture BEHAV of SN74LS365AN is
signal A, Z : std_logic_vector(5 downto 0);
signal E : std_logic;
begin
E <= not(X_1 or X_15);
A <= (X_14, X_12, X_10, X_6, X_4, X_2);
(X_13, X_11, X_9, X_7, X_5, X_3) <= Z;
G: for i in A'range generate
signal B : std_logic;
begin
B <= A(i);
TB: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => B,
E => E,
Y => Z(i)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS366AN: Hex 3-state inverter buffer
-- Verified 21/12/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS366AN is
generic(
tPLH : time := 16 ns;
tPHL : time := 22 ns;
tPZH : time := 24 ns;
tPZL : time := 30 ns;
tPHZ : time := 20 ns;
tPLZ : time := 25 ns
);
port(
X_1 : in std_logic; -- E1\
X_2 : in std_logic; -- A1
X_3 : out std_logic; -- Y1\
X_4 : in std_logic; -- A2
X_5 : out std_logic; -- Y2\
X_6 : in std_logic; -- A3
X_7 : out std_logic; -- Y3\
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- Y4\
X_10 : in std_logic; -- A4
X_11 : out std_logic; -- Y5\
X_12 : in std_logic; -- A5
X_13 : out std_logic; -- Y6\
X_14 : in std_logic; -- A6
X_15 : in std_logic; -- E2\
X_16 : inout std_logic -- Vcc
);
end entity SN74LS366AN;
 
architecture BEHAV of SN74LS366AN is
signal A, Z : std_logic_vector(5 downto 0);
signal E : std_logic;
begin
E <= not(X_1 or X_15);
A <= (X_14, X_12, X_10, X_6, X_4, X_2);
(X_13, X_11, X_9, X_7, X_5, X_3) <= Z;
G: for i in A'range generate
signal B : std_logic;
begin
B <= not A(i);
TB: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => B,
E => E,
Y => Z(i)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS367AN: Hex 3-state buffer (2 & 4-bit sections)
-- Verified 21/12/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS367AN is
generic(
tPLH : time := 16 ns;
tPHL : time := 22 ns;
tPZH : time := 24 ns;
tPZL : time := 30 ns;
tPHZ : time := 20 ns;
tPLZ : time := 25 ns
);
port(
X_1 : in std_logic; -- E14\
X_2 : in std_logic; -- A1
X_3 : out std_logic; -- Y1
X_4 : in std_logic; -- A2
X_5 : out std_logic; -- Y2
X_6 : in std_logic; -- A3
X_7 : out std_logic; -- Y3
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- Y4
X_10 : in std_logic; -- A4
X_11 : out std_logic; -- Y5
X_12 : in std_logic; -- A5
X_13 : out std_logic; -- Y6
X_14 : in std_logic; -- A6
X_15 : in std_logic; -- E56\
X_16 : inout std_logic -- Vcc
);
end entity SN74LS367AN;
 
architecture BEHAV of SN74LS367AN is
signal A, Z : std_logic_vector(5 downto 0);
begin
A <= (X_14, X_12, X_10, X_6, X_4, X_2);
(X_13, X_11, X_9, X_7, X_5, X_3) <= Z;
G: for i in A'range generate
signal B, E : std_logic;
begin
B <= A(i);
E <= not X_15 when i > 3 else not X_1;
TB: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => B,
E => E,
Y => Z(i)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS368AN: Hex 3-state inverter/buffer (2 & 4-bit sections)
-- Verified 21/12/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS368AN is
generic(
tPLH : time := 16 ns;
tPHL : time := 22 ns;
tPZH : time := 24 ns;
tPZL : time := 30 ns;
tPHZ : time := 20 ns;
tPLZ : time := 25 ns
);
port(
X_1 : in std_logic; -- E14\
X_2 : in std_logic; -- A1
X_3 : out std_logic; -- Y1\
X_4 : in std_logic; -- A2
X_5 : out std_logic; -- Y2\
X_6 : in std_logic; -- A3
X_7 : out std_logic; -- Y3\
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- Y4\
X_10 : in std_logic; -- A4
X_11 : out std_logic; -- Y5\
X_12 : in std_logic; -- A5
X_13 : out std_logic; -- Y6\
X_14 : in std_logic; -- A6
X_15 : in std_logic; -- E56\
X_16 : inout std_logic -- Vcc
);
end entity SN74LS368AN;
 
architecture BEHAV of SN74LS368AN is
signal A, Z : std_logic_vector(5 downto 0);
begin
A <= (X_14, X_12, X_10, X_6, X_4, X_2);
(X_13, X_11, X_9, X_7, X_5, X_3) <= Z;
G: for i in A'range generate
signal B, E : std_logic;
begin
B <= not A(i);
E <= not X_15 when i > 3 else not X_1;
TB: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => B,
E => E,
Y => Z(i)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS373N: Octal transparent latch (3-state outputs)
-- Verified 21/12/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS373N is
generic(
tPLH : time := 18 ns;
tPHL : time := 20 ns;
tPZH : time := 28 ns;
tPZL : time := 36 ns;
tPHZ : time := 20 ns;
tPLZ : time := 25 ns
);
port(
X_1 : in std_logic; -- OE\
X_2 : out std_logic; -- Q0
X_3 : in std_logic; -- D0
X_4 : in std_logic; -- D1
X_5 : out std_logic; -- Q1
X_6 : out std_logic; -- Q2
X_7 : in std_logic; -- D2
X_8 : in std_logic; -- D3
X_9 : out std_logic; -- Q3
X_10 : inout std_logic; -- GND
X_11 : in std_logic; -- LE
X_12 : out std_logic; -- Q4
X_13 : in std_logic; -- D4
X_14 : in std_logic; -- D5
X_15 : out std_logic; -- Q5
X_16 : out std_logic; -- Q6
X_17 : in std_logic; -- D6
X_18 : in std_logic; -- D7
X_19 : out std_logic; -- Q7
X_20 : inout std_logic -- Vcc
);
end entity SN74LS373N;
 
architecture BEHAV of SN74LS373N is
signal D, Q, Z : std_logic_vector(7 downto 0);
signal LE, OE : std_logic;
begin
LE <= X_11;
OE <= not X_1;
D <= (X_18, X_17, X_14, X_13, X_8, X_7, X_4, X_3);
(X_19, X_16, X_15, X_12, X_9, X_6, X_5, X_2) <= Z;
process(all) is
begin
if LE = '1' then
Q <= D;
end if;
end process;
G: for i in D'range generate
begin
TB: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => Q(i),
E => OE,
Y => Z(i)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS374N: Octal D-flipflop (3-state outputs)
-- Verified 21/12/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS374N is
generic(
tPLH : time := 18 ns;
tPHL : time := 20 ns;
tPZH : time := 28 ns;
tPZL : time := 36 ns;
tPHZ : time := 20 ns;
tPLZ : time := 25 ns
);
port(
X_1 : in std_logic; -- OE\
X_2 : out std_logic; -- Q0
X_3 : in std_logic; -- D0
X_4 : in std_logic; -- D1
X_5 : out std_logic; -- Q1
X_6 : out std_logic; -- Q2
X_7 : in std_logic; -- D2
X_8 : in std_logic; -- D3
X_9 : out std_logic; -- Q3
X_10 : inout std_logic; -- GND
X_11 : in std_logic; -- CP
X_12 : out std_logic; -- Q4
X_13 : in std_logic; -- D4
X_14 : in std_logic; -- D5
X_15 : out std_logic; -- Q5
X_16 : out std_logic; -- Q6
X_17 : in std_logic; -- D6
X_18 : in std_logic; -- D7
X_19 : out std_logic; -- Q7
X_20 : inout std_logic -- Vcc
);
end entity SN74LS374N;
 
architecture BEHAV of SN74LS374N is
signal D, Q, Z : std_logic_vector(7 downto 0);
signal CP, OE : std_logic;
begin
CP <= X_11;
OE <= not X_1;
D <= (X_18, X_17, X_14, X_13, X_8, X_7, X_4, X_3);
(X_19, X_16, X_15, X_12, X_9, X_6, X_5, X_2) <= Z;
process(CP) is
begin
if rising_edge(CP) then
Q <= D;
end if;
end process;
G: for i in D'range generate
begin
TB: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => Q(i),
E => OE,
Y => Z(i)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS375N: 4-bit latch
-- Verified 21/12/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS375N is
generic(
tSETUP : time := 20 ns; -- Setup time before clock
tPLHCP : time := 40 ns; -- Rising
tPHLCP : time := 25 ns -- Ralling
);
port(
X_1 : in std_logic; -- D1
X_2 : out std_logic; -- Q1\
X_3 : out std_logic; -- Q1
X_4 : in std_logic; -- E12
X_5 : out std_logic; -- Q2
X_6 : out std_logic; -- Q2\
X_7 : in std_logic; -- D2
X_8 : inout std_logic; -- GND
X_9 : in std_logic; -- D3
X_10 : out std_logic; -- Q3\
X_11 : out std_logic; -- Q3
X_12 : in std_logic; -- E34
X_13 : out std_logic; -- Q4
X_14 : out std_logic; -- Q4\
X_15 : in std_logic; -- D4
X_16 : inout std_logic -- Vcc
);
end entity SN74LS375N;
 
-- '375 is just a '75 with the pins rearranged
architecture BEHAV of SN74LS375N is
begin
D: SN74LS75N
generic map(
tSETUP => tSETUP,
tPLHCP => tPLHCP,
tPHLCP => tPHLCP
)
port map(
X_1 => X_2, -- Q1\
X_2 => X_1, -- D1
X_3 => X_7, -- D2
X_4 => X_12, -- E34
X_5 => open, -- Vcc
X_6 => X_9, -- D3
X_7 => X_15, -- D4
X_8 => X_14, -- Q4\
X_9 => X_13, -- Q4
X_10 => X_10, -- Q3\
X_11 => X_11, -- Q3
X_12 => open, -- GND
X_13 => X_4, -- E12
X_14 => X_6, -- Q2\
X_15 => X_5, -- Q2
X_16 => X_3 -- Q1
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS377N: Octal D-flipflop
-- Verified 21/12/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS377N is
generic(
tPXX : time := 25 ns
);
port(
X_1 : in std_logic; -- E\
X_2 : out std_logic; -- Q0
X_3 : in std_logic; -- D0
X_4 : in std_logic; -- D1
X_5 : out std_logic; -- Q1
X_6 : out std_logic; -- Q2
X_7 : in std_logic; -- D2
X_8 : in std_logic; -- D3
X_9 : out std_logic; -- Q3
X_10 : inout std_logic; -- GND
X_11 : in std_logic; -- CP
X_12 : out std_logic; -- Q4
X_13 : in std_logic; -- D4
X_14 : in std_logic; -- D5
X_15 : out std_logic; -- Q5
X_16 : out std_logic; -- Q6
X_17 : in std_logic; -- D6
X_18 : in std_logic; -- D7
X_19 : out std_logic; -- Q7
X_20 : inout std_logic -- Vcc
);
end entity SN74LS377N;
 
architecture BEHAV of SN74LS377N is
signal D, R : std_logic_vector(7 downto 0);
alias CP is X_11;
alias E is X_1;
begin
D <= (X_18, X_17, X_14, X_13, X_8, X_7, X_4, X_3);
(X_19, X_16, X_15, X_12, X_9, X_6, X_5, X_2) <= R after tPXX;
process(CP) is
begin
if rising_edge(CP) then
if E = '0' then
R <= D;
end if;
end if;
end process;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS378N: 6-bit D register
-- Verified 21/12/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS378N is
generic(
tPXX : time := 27 ns
);
port(
X_1 : in std_logic; -- E\
X_2 : out std_logic; -- Q0
X_3 : in std_logic; -- D0
X_4 : in std_logic; -- D1
X_5 : out std_logic; -- Q1
X_6 : in std_logic; -- D2
X_7 : out std_logic; -- Q2
X_8 : inout std_logic; -- GND
X_9 : in std_logic; -- CP
X_10 : out std_logic; -- Q3
X_11 : in std_logic; -- D3
X_12 : out std_logic; -- Q4
X_13 : in std_logic; -- D4
X_14 : in std_logic; -- D5
X_15 : out std_logic; -- Q5
X_16 : inout std_logic -- Vcc
);
end entity SN74LS378N;
 
architecture BEHAV of SN74LS378N is
signal D, R : std_logic_vector(5 downto 0);
alias CP is X_9;
alias E is X_1;
begin
D <= (X_14, X_13, X_11, X_6, X_4, X_3);
(X_15, X_12, X_10, X_7, X_5, X_2) <= R after tPXX;
process(CP) is
begin
if rising_edge(CP) then
if E = '0' then
R <= D;
end if;
end if;
end process;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS379N: 4-bit D register
-- Verified 21/12/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS379N is
generic(
tPXX : time := 27 ns
);
port(
X_1 : in std_logic; -- E\
X_2 : out std_logic; -- Q0
X_3 : out std_logic; -- Q0\
X_4 : in std_logic; -- D0
X_5 : in std_logic; -- D1
X_6 : out std_logic; -- Q1\
X_7 : out std_logic; -- Q1
X_8 : inout std_logic; -- GND
X_9 : in std_logic; -- CP
X_10 : out std_logic; -- Q2
X_11 : out std_logic; -- Q2\
X_12 : in std_logic; -- D2
X_13 : in std_logic; -- D3
X_14 : out std_logic; -- Q3\
X_15 : out std_logic; -- Q3
X_16 : inout std_logic -- Vcc
);
end entity SN74LS379N;
 
architecture BEHAV of SN74LS379N is
signal D, R, N : std_logic_vector(3 downto 0);
alias CP is X_9;
alias E is X_1;
begin
D <= (X_13, X_12, X_5, X_4);
(X_15, X_10, X_7, X_2) <= R after tPXX;
N <= not R;
(X_14, X_11, X_6, X_3) <= N after tPXX;
process(CP) is
begin
if rising_edge(CP) then
if E = '0' then
R <= D;
end if;
end if;
end process;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS386N: Quad 2-input xor gate
-- Verified 30/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS386N is
generic(
tPLH : time := 30 ns;
tPHL : time := 30 ns
);
port(
X_1 : in std_logic; -- 1A
X_2 : in std_logic; -- 1B
X_3 : out std_logic; -- 1Y\
X_4 : out std_logic; -- 2Y\
X_5 : in std_logic; -- 2A
X_6 : in std_logic; -- 2B
X_7 : inout std_logic; -- GND
X_8 : in std_logic; -- 3B
X_9 : in std_logic; -- 3A
X_10 : out std_logic; -- 3Y\
X_11 : out std_logic; -- 4Y\
X_12 : in std_logic; -- 4B
X_13 : in std_logic; -- 4A
X_14 : inout std_logic -- Vcc
);
end entity SN74LS386N;
 
architecture BEHAV of SN74LS386N is
signal A : TTLInputs (1 to 4, 1 to 2);
signal Y : TTLOutputs(1 to 4);
begin
A <= ( (X_1, X_2), (X_5, X_6), (X_8, X_9), (X_12, X_13) );
(X_3, X_4, X_10, X_11) <= Y;
G: TTLgate
generic map(
mode => Zxor, -- Zand, Zor, Zxor, Zbuf
invert => '0', -- '1' will invert the output
ohigh => '1', -- '1' = normal, 'Z' = open collectors
tPLH => tPLH,
tPHL => tPHL
)
port map(
ins => A,
outs => Y
);
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS390N: Dual decade counter
-- Verified 31/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS390N is
generic(
tPLH0 : time := 15 ns;
tPHL0 : time := 15 ns;
tPLH1 : time := 21 ns;
tPHL1 : time := 21 ns;
tPLH2 : time := 30 ns;
tPHL2 : time := 30 ns;
tPLH3 : time := 21 ns;
tPHL3 : time := 21 ns
);
port(
X_1 : in std_logic; -- CPA0\
X_2 : in std_logic; -- MRA
X_3 : out std_logic; -- Q0A
X_4 : in std_logic; -- CPA1\
X_5 : out std_logic; -- Q1A
X_6 : out std_logic; -- Q2A
X_7 : out std_logic; -- Q3A
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- Q3B
X_10 : out std_logic; -- Q2B
X_11 : out std_logic; -- Q1B
X_12 : in std_logic; -- CPB1\
X_13 : out std_logic; -- Q0B
X_14 : in std_logic; -- MRB
X_15 : in std_logic; -- CPB0\
X_16 : inout std_logic -- Vcc
);
end entity SN74LS390N;
 
architecture BEHAV of SN74LS390N is
begin
C1: SN74LS90AN
generic map(
tPLH0 => tPLH0,
tPHL0 => tPHL0,
tPLH1 => tPLH1 - tPLH0, -- Reduce, as CLK(3..1) is already delayed
tPHL1 => tPHL1 - tPHL0,
tPLH2 => tPLH2 - tPLH0,
tPHL2 => tPHL2 - tPHL0,
tPLH3 => tPLH3 - tPLH0,
tPHL3 => tPHL3 - tPHL0
)
port map(
X_1 => X_4, -- CP1\
X_2 => X_2, -- MR1
X_3 => X_2, -- MR2
--
X_5 => open, -- Vcc
X_6 => '0', -- MS1
X_7 => '0', -- MS2
X_8 => X_6, -- Q2
X_9 => X_5, -- Q1
X_10 => open, -- GND
X_11 => X_7, -- Q3
X_12 => X_3, -- Q0
--
X_14 => X_1 -- CP0\
);
 
C2: SN74LS90AN
generic map(
tPLH0 => tPLH0,
tPHL0 => tPHL0,
tPLH1 => tPLH1 - tPLH0, -- Reduce, as CLK(3..1) is already delayed
tPHL1 => tPHL1 - tPHL0,
tPLH2 => tPLH2 - tPLH0,
tPHL2 => tPHL2 - tPHL0,
tPLH3 => tPLH3 - tPLH0,
tPHL3 => tPHL3 - tPHL0
)
port map(
X_1 => X_12, -- CP1\
X_2 => X_14, -- MR1
X_3 => X_14, -- MR2
--
X_5 => open, -- Vcc
X_6 => '0', -- MS1
X_7 => '0', -- MS2
X_8 => X_10, -- Q2
X_9 => X_11, -- Q1
X_10 => open, -- GND
X_11 => X_9, -- Q3
X_12 => X_13, -- Q0
--
X_14 => X_15 -- CP0\
);
 
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS393N: Dual 4-bit binary counter
-- Verified 31/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS393N is
generic(
tPLH0 : time := 15 ns;
tPHL0 : time := 15 ns;
tPLH1 : time := 30 ns;
tPHL1 : time := 30 ns;
tPLH2 : time := 40 ns;
tPHL2 : time := 40 ns;
tPLH3 : time := 54 ns;
tPHL3 : time := 54 ns
);
port(
X_1 : in std_logic; -- CPA\
X_2 : in std_logic; -- MRA
X_3 : out std_logic; -- Q0A
X_4 : out std_logic; -- Q1A
X_5 : out std_logic; -- Q2A
X_6 : out std_logic; -- Q3A
X_7 : inout std_logic; -- GND
X_8 : out std_logic; -- Q3B
X_9 : out std_logic; -- Q2B
X_10 : out std_logic; -- Q1B
X_11 : out std_logic; -- Q0B
X_12 : in std_logic; -- MRB
X_13 : in std_logic; -- CPB\
X_14 : inout std_logic -- Vcc
);
end entity SN74LS393N;
 
architecture BEHAV of SN74LS393N is
signal q0a, q0b : std_logic;
begin
C1: SN74LS93N
generic map(
tPLH0 => tPLH0,
tPHL0 => tPHL0,
tPLH1 => tPLH1 - tPLH0, -- Reduce, as CLK(3..1) is already delayed
tPHL1 => tPHL1 - tPHL0,
tPLH2 => tPLH2 - tPLH0,
tPHL2 => tPHL2 - tPHL0,
tPLH3 => tPLH3 - tPLH0,
tPHL3 => tPHL3 - tPHL0
)
port map(
X_1 => q0a, -- CP1\
X_2 => X_2, -- MR1
X_3 => X_2, -- MR2
--
X_5 => open, -- Vcc
--
--
X_8 => X_5, -- Q2
X_9 => X_4, -- Q1
X_10 => open, -- GND
X_11 => X_6, -- Q3
X_12 => q0a, -- Q0
--
X_14 => X_1 -- CP0\
);
X_3 <= q0a;
 
C2: SN74LS93N
generic map(
tPLH0 => tPLH0,
tPHL0 => tPHL0,
tPLH1 => tPLH1 - tPLH0, -- Reduce, as CLK(3..1) is already delayed
tPHL1 => tPHL1 - tPHL0,
tPLH2 => tPLH2 - tPLH0,
tPHL2 => tPHL2 - tPHL0,
tPLH3 => tPLH3 - tPLH0,
tPHL3 => tPHL3 - tPHL0
)
port map(
X_1 => q0b, -- CP1\
X_2 => X_12, -- MR1
X_3 => X_12, -- MR2
--
X_5 => open, -- Vcc
--
--
X_8 => X_9, -- Q2
X_9 => X_10, -- Q1
X_10 => open, -- GND
X_11 => X_8, -- Q3
X_12 => q0b, -- Q0
--
X_14 => X_13 -- CP0\
);
X_11 <= q0b;
 
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS395N: 4-bit shift register (3-state outputs)
-- Verified 22/12/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS395N is
generic(
tPLH : time := 35 ns;
tPHL : time := 25 ns;
tPZH : time := 20 ns;
tPZL : time := 20 ns;
tPHZ : time := 17 ns;
tPLZ : time := 23 ns
);
port(
X_1 : in std_logic; -- MR\
X_2 : in std_logic; -- DS
X_3 : in std_logic; -- P0
X_4 : in std_logic; -- P1
X_5 : in std_logic; -- P2
X_6 : in std_logic; -- P3
X_7 : in std_logic; -- S
X_8 : inout std_logic; -- GND
X_9 : in std_logic; -- OE\
X_10 : in std_logic; -- CP\
X_11 : out std_logic; -- Q3
X_12 : out std_logic; -- O3
X_13 : out std_logic; -- O2
X_14 : out std_logic; -- O1
X_15 : out std_logic; -- O0
X_16 : inout std_logic -- Vcc
);
end entity SN74LS395N;
 
architecture BEHAV of SN74LS395N is
signal D, R, Z : std_logic_vector(3 downto 0);
signal OE : std_logic;
alias CP is X_10;
alias S is X_7;
alias DS is X_2;
alias MR is X_1;
begin
OE <= not X_9;
D <= (X_6, X_5, X_4, X_3);
(X_12, X_13, X_14, X_15) <= Z;
OB3: TTLdelay
generic map(
tPLH => tPLH,
tPHL => tPHL
)
port map(
A => R(3),
B => X_11
);
G1: for i in R'range generate
begin
OBN: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => R(i),
E => OE,
Y => Z(i)
);
end generate;
process(MR, CP) is
begin
if MR = '0' then
R <= (others => '0');
elsif falling_edge(CP) then
if S = '0' then
R <= R(2 downto 0) & DS;
else
R <= D;
end if;
end if;
end process;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS490N: Dual decade counter
-- Verified 31/05/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS490N is
generic(
tPLH0 : time := 15 ns;
tPHL0 : time := 15 ns;
tPLH1 : time := 30 ns;
tPHL1 : time := 30 ns;
tPLH2 : time := 45 ns;
tPHL2 : time := 45 ns;
tPLH3 : time := 35 ns;
tPHL3 : time := 35 ns
);
port(
X_1 : in std_logic; -- CPA\
X_2 : in std_logic; -- MRA
X_3 : out std_logic; -- Q0A
X_4 : in std_logic; -- MSA
X_5 : out std_logic; -- Q1A
X_6 : out std_logic; -- Q2A
X_7 : out std_logic; -- Q3A
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- Q3B
X_10 : out std_logic; -- Q2B
X_11 : out std_logic; -- Q1B
X_12 : in std_logic; -- MSB
X_13 : out std_logic; -- Q0B
X_14 : in std_logic; -- MRB
X_15 : in std_logic; -- CPB\
X_16 : inout std_logic -- Vcc
);
end entity SN74LS490N;
 
architecture BEHAV of SN74LS490N is
signal Z : TTL2word;
signal set, rst, clk : std_logic_vector(2 downto 1);
begin
set <= (X_12, X_4);
rst <= (X_14, X_2);
clk <= (X_15, X_1);
(X_9, X_10, X_11, X_13) <= Z(2);
(X_7, X_6, X_5, X_3 ) <= Z(1);
 
G1: for i in Z'range generate
signal X : TTLword;
signal Y : std_logic_vector(3 downto 0);
begin
process(set(i), rst(i), clk(i)) is
begin
if rst(i) = '1' then
X <= "0000";
elsif set(i) = '1' then
X <= "1001";
elsif clk(i)'event and clk(i) = '0' then
X <= TTL490(Z(i));
end if;
end process;
D3: TTLdelay
generic map(
tPLH => tPLH3,
tPHL => tPHL3
)
port map(
A => X(3),
B => Y(3)
);
 
D2: TTLdelay
generic map(
tPLH => tPLH2,
tPHL => tPHL2
)
port map(
A => X(2),
B => Y(2)
);
 
D1: TTLdelay
generic map(
tPLH => tPLH1,
tPHL => tPHL1
)
port map(
A => X(1),
B => Y(1)
);
 
D0: TTLdelay
generic map(
tPLH => tPLH0,
tPHL => tPHL0
)
port map(
A => X(0),
B => Y(0)
);
Z(i) <= TTLword(Y);
end generate;
 
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS533N: Octal transparent latch (3-state inverting outputs)
-- Verified 22/12/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS533N is
generic(
tPLH : time := 23 ns;
tPHL : time := 25 ns;
tPZH : time := 28 ns;
tPZL : time := 36 ns;
tPHZ : time := 20 ns;
tPLZ : time := 25 ns
);
port(
X_1 : in std_logic; -- OE\
X_2 : out std_logic; -- O0\
X_3 : in std_logic; -- D0
X_4 : in std_logic; -- D1
X_5 : out std_logic; -- O1\
X_6 : out std_logic; -- O2\
X_7 : in std_logic; -- D2
X_8 : in std_logic; -- D3
X_9 : out std_logic; -- O3\
X_10 : inout std_logic; -- GND
X_11 : in std_logic; -- LE
X_12 : out std_logic; -- O4\
X_13 : in std_logic; -- D4
X_14 : in std_logic; -- D5
X_15 : out std_logic; -- O5\
X_16 : out std_logic; -- O6\
X_17 : in std_logic; -- D6
X_18 : in std_logic; -- D7
X_19 : out std_logic; -- O7\
X_20 : inout std_logic -- Vcc
);
end entity SN74LS533N;
 
architecture BEHAV of SN74LS533N is
signal D, Q, Z : std_logic_vector(7 downto 0);
signal LE, OE : std_logic;
begin
LE <= X_11;
OE <= not X_1;
D <= (X_18, X_17, X_14, X_13, X_8, X_7, X_4, X_3);
(X_19, X_16, X_15, X_12, X_9, X_6, X_5, X_2) <= Z;
process(all) is
begin
if LE = '1' then
Q <= not D;
end if;
end process;
G: for i in D'range generate
begin
TB: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => Q(i),
E => OE,
Y => Z(i)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS534N: Octal D-flipflop (3-state outputs)
-- Verified 22/12/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS534N is
generic(
tPLH : time := 18 ns;
tPHL : time := 20 ns;
tPZH : time := 28 ns;
tPZL : time := 36 ns;
tPHZ : time := 20 ns;
tPLZ : time := 25 ns
);
port(
X_1 : in std_logic; -- OE\
X_2 : out std_logic; -- O0\
X_3 : in std_logic; -- D0
X_4 : in std_logic; -- D1
X_5 : out std_logic; -- O1\
X_6 : out std_logic; -- O2\
X_7 : in std_logic; -- D2
X_8 : in std_logic; -- D3
X_9 : out std_logic; -- O3\
X_10 : inout std_logic; -- GND
X_11 : in std_logic; -- CP
X_12 : out std_logic; -- O4\
X_13 : in std_logic; -- D4
X_14 : in std_logic; -- D5
X_15 : out std_logic; -- O5\
X_16 : out std_logic; -- O6\
X_17 : in std_logic; -- D6
X_18 : in std_logic; -- D7
X_19 : out std_logic; -- O7\
X_20 : inout std_logic -- Vcc
);
end entity SN74LS534N;
 
architecture BEHAV of SN74LS534N is
signal D, Q, Z : std_logic_vector(7 downto 0);
signal CP, OE : std_logic;
begin
CP <= X_11;
OE <= not X_1;
D <= (X_18, X_17, X_14, X_13, X_8, X_7, X_4, X_3);
(X_19, X_16, X_15, X_12, X_9, X_6, X_5, X_2) <= Z;
process(CP) is
begin
if rising_edge(CP) then
Q <= not D;
end if;
end process;
G: for i in D'range generate
begin
TB: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => Q(i),
E => OE,
Y => Z(i)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS540N: Octal buffer/line driver (inverting 3-state outputs)
-- Verified 22/12/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS540N is
generic(
tPLH : time := 14 ns;
tPHL : time := 18 ns;
tPZH : time := 23 ns;
tPZL : time := 30 ns;
tPHZ : time := 25 ns;
tPLZ : time := 18 ns
);
port(
X_1 : in std_logic; -- E1\
X_2 : in std_logic; -- A0
X_3 : in std_logic; -- A1
X_4 : in std_logic; -- A2
X_5 : in std_logic; -- A3
X_6 : in std_logic; -- A4
X_7 : in std_logic; -- A5
X_8 : in std_logic; -- A6
X_9 : in std_logic; -- A7
X_10 : inout std_logic; -- GND
X_11 : out std_logic; -- Y7\
X_12 : out std_logic; -- Y6\
X_13 : out std_logic; -- Y5\
X_14 : out std_logic; -- Y4\
X_15 : out std_logic; -- Y3\
X_16 : out std_logic; -- Y2\
X_17 : out std_logic; -- Y1\
X_18 : out std_logic; -- Y0\
X_19 : in std_logic; -- E2\
X_20 : inout std_logic -- Vcc
);
end entity SN74LS540N;
 
architecture BEHAV of SN74LS540N is
signal I, A, Y : std_logic_vector(7 downto 0);
signal E : std_logic;
begin
E <= not(X_1 or X_19);
I <= (X_9, X_8, X_7, X_6, X_5, X_4, X_3, X_2);
A <= not I;
(X_11, X_12, X_13, X_14, X_15, X_16, X_17, X_18) <= Y;
G: for j in I'range generate
begin
B: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => A(j),
E => E,
Y => Y(j)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS541N: Octal buffer/line driver (3-state outputs)
-- Verified 22/12/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS541N is
generic(
tPLH : time := 14 ns;
tPHL : time := 18 ns;
tPZH : time := 23 ns;
tPZL : time := 30 ns;
tPHZ : time := 25 ns;
tPLZ : time := 18 ns
);
port(
X_1 : in std_logic; -- E1\
X_2 : in std_logic; -- A0
X_3 : in std_logic; -- A1
X_4 : in std_logic; -- A2
X_5 : in std_logic; -- A3
X_6 : in std_logic; -- A4
X_7 : in std_logic; -- A5
X_8 : in std_logic; -- A6
X_9 : in std_logic; -- A7
X_10 : inout std_logic; -- GND
X_11 : out std_logic; -- Y7
X_12 : out std_logic; -- Y6
X_13 : out std_logic; -- Y5
X_14 : out std_logic; -- Y4
X_15 : out std_logic; -- Y3
X_16 : out std_logic; -- Y2
X_17 : out std_logic; -- Y1
X_18 : out std_logic; -- Y0
X_19 : in std_logic; -- E2\
X_20 : inout std_logic -- Vcc
);
end entity SN74LS541N;
 
architecture BEHAV of SN74LS541N is
signal I, A, Y : std_logic_vector(7 downto 0);
signal E : std_logic;
begin
E <= not(X_1 or X_19);
I <= (X_9, X_8, X_7, X_6, X_5, X_4, X_3, X_2);
A <= I;
(X_11, X_12, X_13, X_14, X_15, X_16, X_17, X_18) <= Y;
G: for j in I'range generate
begin
B: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => A(j),
E => E,
Y => Y(j)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS563N: Octal D-type latch (3-state outputs)
-- Verified 22/12/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS563N is
generic(
tPLH : time := 23 ns;
tPHL : time := 25 ns;
tPZH : time := 28 ns;
tPZL : time := 36 ns;
tPHZ : time := 20 ns;
tPLZ : time := 25 ns
);
port(
X_1 : in std_logic; -- OE\
X_2 : in std_logic; -- D0
X_3 : in std_logic; -- D1
X_4 : in std_logic; -- D2
X_5 : in std_logic; -- D3
X_6 : in std_logic; -- D4
X_7 : in std_logic; -- D5
X_8 : in std_logic; -- D6
X_9 : in std_logic; -- D7
X_10 : inout std_logic; -- GND
X_11 : in std_logic; -- LE
X_12 : out std_logic; -- O7\
X_13 : out std_logic; -- O6\
X_14 : out std_logic; -- O5\
X_15 : out std_logic; -- O4\
X_16 : out std_logic; -- O3\
X_17 : out std_logic; -- O2\
X_18 : out std_logic; -- O1\
X_19 : out std_logic; -- O0\
X_20 : inout std_logic -- Vcc
);
end entity SN74LS563N;
 
architecture BEHAV of SN74LS563N is
signal D, Q, Z : std_logic_vector(7 downto 0);
signal LE, OE : std_logic;
begin
LE <= X_11;
OE <= not X_1;
D <= (X_9, X_8, X_7, X_6, X_5, X_4, X_3, X_2);
(X_12, X_13, X_14, X_15, X_16, X_17, X_18, X_19) <= Z;
process(all) is
begin
if LE = '1' then
Q <= not D;
end if;
end process;
G: for i in D'range generate
begin
TB: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => Q(i),
E => OE,
Y => Z(i)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS564N: Octal D-flipflop (3-state outputs)
-- Verified 22/12/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS564N is
generic(
tPLH : time := 18 ns;
tPHL : time := 20 ns;
tPZH : time := 28 ns;
tPZL : time := 36 ns;
tPHZ : time := 20 ns;
tPLZ : time := 25 ns
);
port(
X_1 : in std_logic; -- OE\
X_2 : in std_logic; -- D0
X_3 : in std_logic; -- D1
X_4 : in std_logic; -- D2
X_5 : in std_logic; -- D3
X_6 : in std_logic; -- D4
X_7 : in std_logic; -- D5
X_8 : in std_logic; -- D6
X_9 : in std_logic; -- D7
X_10 : inout std_logic; -- GND
X_11 : in std_logic; -- CP
X_12 : out std_logic; -- O7\
X_13 : out std_logic; -- O6\
X_14 : out std_logic; -- O5\
X_15 : out std_logic; -- O4\
X_16 : out std_logic; -- O3\
X_17 : out std_logic; -- O2\
X_18 : out std_logic; -- O1\
X_19 : out std_logic; -- O0\
X_20 : inout std_logic -- Vcc
);
end entity SN74LS564N;
 
architecture BEHAV of SN74LS564N is
signal D, Q, Z : std_logic_vector(7 downto 0);
signal CP, OE : std_logic;
begin
CP <= X_11;
OE <= not X_1;
D <= (X_9, X_8, X_7, X_6, X_5, X_4, X_3, X_2);
(X_12, X_13, X_14, X_15, X_16, X_17, X_18, X_19) <= Z;
process(CP) is
begin
if rising_edge(CP) then
Q <= not D;
end if;
end process;
G: for i in D'range generate
begin
TB: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => Q(i),
E => OE,
Y => Z(i)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS573N: Octal D-type latch (3-state outputs)
-- Verified 21/12/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS573N is
generic(
tPLH : time := 18 ns;
tPHL : time := 20 ns;
tPZH : time := 28 ns;
tPZL : time := 36 ns;
tPHZ : time := 20 ns;
tPLZ : time := 25 ns
);
port(
X_1 : in std_logic; -- OE\
X_2 : in std_logic; -- D0
X_3 : in std_logic; -- D1
X_4 : in std_logic; -- D2
X_5 : in std_logic; -- D3
X_6 : in std_logic; -- D4
X_7 : in std_logic; -- D5
X_8 : in std_logic; -- D6
X_9 : in std_logic; -- D7
X_10 : inout std_logic; -- GND
X_11 : in std_logic; -- LE
X_12 : out std_logic; -- O7\
X_13 : out std_logic; -- O6\
X_14 : out std_logic; -- O5\
X_15 : out std_logic; -- O4\
X_16 : out std_logic; -- O3\
X_17 : out std_logic; -- O2\
X_18 : out std_logic; -- O1\
X_19 : out std_logic; -- O0\
X_20 : inout std_logic -- Vcc
);
end entity SN74LS573N;
 
architecture BEHAV of SN74LS573N is
signal D, Q, Z : std_logic_vector(7 downto 0);
signal LE, OE : std_logic;
begin
LE <= X_11;
OE <= not X_1;
D <= (X_9, X_8, X_7, X_6, X_5, X_4, X_3, X_2);
(X_12, X_13, X_14, X_15, X_16, X_17, X_18, X_19) <= Z;
process(all) is
begin
if LE = '1' then
Q <= D;
end if;
end process;
G: for i in D'range generate
begin
TB: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => Q(i),
E => OE,
Y => Z(i)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS574N: Octal D-flipflop (3-state outputs)
-- Verified 21/12/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS574N is
generic(
tPLH : time := 18 ns;
tPHL : time := 20 ns;
tPZH : time := 28 ns;
tPZL : time := 36 ns;
tPHZ : time := 20 ns;
tPLZ : time := 25 ns
);
port(
X_1 : in std_logic; -- OE\
X_2 : in std_logic; -- D0
X_3 : in std_logic; -- D1
X_4 : in std_logic; -- D2
X_5 : in std_logic; -- D3
X_6 : in std_logic; -- D4
X_7 : in std_logic; -- D5
X_8 : in std_logic; -- D6
X_9 : in std_logic; -- D7
X_10 : inout std_logic; -- GND
X_11 : in std_logic; -- CP
X_12 : out std_logic; -- O7\
X_13 : out std_logic; -- O6\
X_14 : out std_logic; -- O5\
X_15 : out std_logic; -- O4\
X_16 : out std_logic; -- O3\
X_17 : out std_logic; -- O2\
X_18 : out std_logic; -- O1\
X_19 : out std_logic; -- O0\
X_20 : inout std_logic -- Vcc
);
end entity SN74LS574N;
 
architecture BEHAV of SN74LS574N is
signal D, Q, Z : std_logic_vector(7 downto 0);
signal CP, OE : std_logic;
begin
CP <= X_11;
OE <= not X_1;
D <= (X_9, X_8, X_7, X_6, X_5, X_4, X_3, X_2);
(X_12, X_13, X_14, X_15, X_16, X_17, X_18, X_19) <= Z;
process(CP) is
begin
if rising_edge(CP) then
Q <= D;
end if;
end process;
G: for i in D'range generate
begin
TB: TTL3State
generic map(
tPLH => tPLH,
tPHL => tPHL,
tPZH => tPZH,
tPZL => tPZL,
tPHZ => tPHZ,
tPLZ => tPLZ
)
port map(
A => Q(i),
E => OE,
Y => Z(i)
);
end generate;
end architecture BEHAV;
 
-----------------------------------------------------------------------
-- SN74LS670N: 4 x 4 register file (3-state outputs)
-- Verified 21/12/2016
-----------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
 
use work.LSTTL.all;
use work.TTLPrivate.all;
 
entity SN74LS670N is
generic(
tPLC : time := 35 ns;
tPLA : time := 35 ns;
tSUD : time := 10 ns;
tSUA : time := 10 ns
);
port(
X_1 : in std_logic; -- D2
X_2 : in std_logic; -- D3
X_3 : in std_logic; -- D4
X_4 : in std_logic; -- RA1
X_5 : in std_logic; -- RA0
X_6 : out std_logic; -- O4
X_7 : out std_logic; -- O3
X_8 : inout std_logic; -- GND
X_9 : out std_logic; -- O2
X_10 : out std_logic; -- O1
X_11 : in std_logic; -- OE\
X_12 : in std_logic; -- WE\
X_13 : in std_logic; -- WA1
X_14 : in std_logic; -- WA0
X_15 : in std_logic; -- D1
X_16 : inout std_logic -- Vcc
);
end entity SN74LS670N;
 
architecture BEHAV of SN74LS670N is
signal RE, WE : std_logic := '1';
signal RA, WA : std_logic_vector(1 downto 0) := (others => '0');
signal D, Q : std_logic_vector(3 downto 0);
begin
RE <= X_11;
WE <= X_12;
RA <= (X_4, X_5);
WA <= (X_13, X_14);
D <= (X_3, X_2, X_1, X_15);
(X_6, X_7, X_9, X_10) <= Q;
MB: TTLramblock
generic map(
Omode => TriState,
INVT => '0',
tPLC => tPLC,
tPLA => tPLA,
tSUD => tSUD,
tSUA => tSUA
)
port map(
RA => RA,
WA => WA,
D => D,
O => Q,
CE => '0',
RE => RE,
WE => WE
);
end architecture BEHAV;
 

powered by: WebSVN 2.1.0

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