74F189

64-BIT RANDOM ACCESS MEMORY (WITH 3-STATE OUTPUTS)


Family
Fairchild FAST (Advanced Schottky TTL)
Source
1980 Fairchild FAST Data Book, pages 4-45 ... 4-47
Status
PRELIMINARY -- page 4-45 carries a "Preliminary" watermark.
Ratings
Vcc = +5.0 V +/-5%, TA = 0 to +70 deg C

DESCRIPTION | CONNECTION DIAGRAM (16-pin DIP) | FUNCTION TABLE | INPUT LOADING / FAN-OUT | DC CHARACTERISTICS OVER OPERATING TEMPERATURE RANGE | AC CHARACTERISTICS | AC OPERATING REQUIREMENTS | VERILOG MODEL

DESCRIPTION

The 'F189 is a high speed 64-bit RAM organized as a 16-word by 4-bit
array. Address inputs are buffered to minimize loading and are fully
decoded on-chip. The outputs are 3-state and are in the high impedance
state whenever the Chip Select (/CS) input is HIGH. The outputs are
active only in the Read mode and the output data is the complement of
the stored data.

  o 3-state outputs for data bus applications
  o Buffered inputs minimize loading
  o Address decoding on-chip
  o Diode clamped inputs minimize ringing

CONNECTION DIAGRAM (16-pin DIP)

Pin  Function                        Pin  Function
---  ------------------------------  ---  ---------------------------
  1  A0   Address input 0             16  Vcc
  2  /CS  Chip Select (active LOW)    15  A1   Address input 1
  3  /WE  Write Enable (active LOW)   14  A2   Address input 2
  4  D1   Data input 1                13  A3   Address input 3
  5  /O1  Inverted data output 1      12  D4   Data input 4
  6  D2   Data input 2                11  /O4  Inverted data output 4
  7  /O2  Inverted data output 2      10  D3   Data input 3
  8  GND                               9  /O3  Inverted data output 3

FUNCTION TABLE

/CS  /WE  Operation  Condition of Outputs
---  ---  ---------  -------------------------
 L    L   Write      High Impedance
 L    H   Read       Complement of Stored Data
 H    X   Inhibit    High Impedance

H = HIGH voltage level;  L = LOW voltage level;  X = immaterial.

INPUT LOADING / FAN-OUT

Pin Names  Description                      U.L. HIGH/LOW
---------  -------------------------------  -------------
A0 - A3    Address Inputs                   0.5 / 0.375
/CS        Chip Select Input (Active LOW)   0.5 / 0.75
/WE        Write Enable Input (Active LOW)  0.5 / 0.75
D1 - D4    Data Inputs                      0.5 / 0.375
/O1 - /O4  Inverted Data Outputs            25 / 12.5

NOTE:  the /CS and /WE inputs present a LOW load of 0.75 U.L., twice the
       0.375 U.L. of the address and data inputs.

DC CHARACTERISTICS OVER OPERATING TEMPERATURE RANGE

Symbol  Parameter             Min  Typ  Max  Units  Conditions
------  --------------------  ---  ---  ---  -----  ------------------------
ICC     Power Supply Current        43        mA     Vcc = Max; /WE, /CS = Gnd

AC CHARACTERISTICS

Symbol  Parameter                         Min  Typ  Max  Units
------  --------------------------------  ---  ---  ---  -----
tPLH    Access Time, HIGH -- An to /On     --   20   --  ns
tPHL    Access Time, LOW -- An to /On      --   20   --  ns
tPZH    Access Time, HIGH -- /CS to /On    --   12   --  ns
tPZL    Access Time, LOW -- /CS to /On     --   12   --  ns
tPHZ    Disable Time, HIGH -- /CS to /On   --   12   --  ns
tPLZ    Disable Time, LOW -- /CS to /On    --   12   --  ns
tPZH    Access Time, HIGH -- /WE to /On    --   12   --  ns
tPZL    Access Time, LOW -- /WE to /On     --   12   --  ns
tPHZ    Disable Time, HIGH -- /WE to /On   --   12   --  ns
tPLZ    Disable Time, LOW -- /WE to /On    --   12   --  ns

AC OPERATING REQUIREMENTS

Symbol  Parameter                      Min  Typ  Max  Units
------  -----------------------------  ---  ---  ---  -----
ts (H)  Setup Time, HIGH -- An to /WE    0   --   --  ns
ts (L)  Setup Time, LOW -- An to /WE     0   --   --  ns
th (H)  Hold Time, HIGH -- An to /WE     0   --   --  ns
th (L)  Hold Time, LOW -- An to /WE      0   --   --  ns
ts (H)  Setup Time, HIGH -- Dn to /WE   20   --   --  ns
ts (L)  Setup Time, LOW -- Dn to /WE    20   --   --  ns
th (H)  Hold Time, HIGH -- Dn to /WE     0   --   --  ns
th (L)  Hold Time, LOW -- Dn to /WE      0   --   --  ns
ts (L)  Setup Time, LOW -- /CS to /WE   --   --   --  ns
th (L)  Hold Time, LOW -- /CS to /WE    --   --   --  ns
tw (L)  /WE Pulse Width LOW             20   --   --  ns

Data sheet transcription as plain text

VERILOG MODEL

// ============================================================================
// f189.v — 54F/74F189 64-Bit Random Access Memory (16 words x 4 bits,
//          3-State Inverting Outputs)
//
// Fairchild FAST (Advanced Schottky TTL)
// Source: docs/devices/54F74F189.txt (1980 Fairchild FAST Data Book,
//         pages 4-45 ... 4-47) — PRELIMINARY data sheet.
//
// Function table (data sheet):
//   CS_n WE_n | Operation | Outputs
//   ----+-----+-----------+--------------------------
//    L    L   | Write     | High Impedance
//    L    H   | Read      | Complement of Stored Data
//    H    X   | Inhibit   | High Impedance
//
// The write is level sensitive: the data buffers are gated by (CS_n LOW and
// WE_n LOW), so the addressed word follows D while both are LOW and holds
// whatever was present when WE_n (or CS_n) returns HIGH. This matches the
// data sheet operating requirements, which specify setup/hold of A and D
// with respect to WE_n (address ts/th = 0 ns).
//
// Timing values from the data sheet AC Characteristics table,
// 54F/74F column (T_A = +25 C, V_CC = +5.0 V, C_L = 15 pF). The preliminary
// sheet gives TYP values ONLY (Min/Max columns blank); each specparam below
// is a single typ value, noted per row.
//
// Ports are scalar and named after the data sheet pin names: Icarus Verilog
// does not fully support multi-bit (parallel) specify path connections, so
// vector ports would get incorrect per-bit delays.
// ============================================================================
`timescale 1ns/100ps

module f189 (
    input  wire a0, a1, a2, a3,   // address inputs
    input  wire cs_n,             // chip select (active LOW)
    input  wire we_n,             // write enable (active LOW)
    input  wire d1, d2, d3, d4,   // data inputs
    output wire o1_n, o2_n, o3_n, o4_n  // inverted data outputs (3-state)
);

    // 16 words x 4 bits; bit 0 of each word is D1/O1_n, bit 3 is D4/O4_n.
    reg [3:0] mem [0:15];

    wire [3:0] din  = {d4, d3, d2, d1};

    // Level-sensitive write, gated by (CS_n LOW & WE_n LOW) per the data
    // sheet block diagram ("data buffers gated by (WE . CS)").
    always @(*)
        if (!cs_n && !we_n)
            mem[{a3, a2, a1, a0}] <= din;

    // 3-state read: outputs active only in Read mode (CS_n LOW, WE_n HIGH)
    // and carry the COMPLEMENT of the stored data.
    wire read = !cs_n && we_n;

    assign o1_n = read ? ~mem[{a3, a2, a1, a0}][0] : 1'bz;
    assign o2_n = read ? ~mem[{a3, a2, a1, a0}][1] : 1'bz;
    assign o3_n = read ? ~mem[{a3, a2, a1, a0}][2] : 1'bz;
    assign o4_n = read ? ~mem[{a3, a2, a1, a0}][3] : 1'bz;

    specify
        // Access time, address to output (data sheet: tPLH 20, tPHL 20 ns,
        // typ only — preliminary sheet, Min/Max blank), Fig. 2-17, 2-23.
        specparam tlh_a_o = 20;
        specparam thl_a_o = 20;

        // Enable/disable, CS_n to output (data sheet typ only: tPZH 12,
        // tPZL 12, tPHZ 12, tPLZ 12 ns), Fig. 2-25 ... 2-27.
        // Direct 0->1 / 1->0 transitions cannot occur via CS_n (the output
        // always passes through Z); those slots reuse tPZH / tPZL.
        specparam tlh_cs_o = 12;    // (unreachable 0->1 slot, = tPZH)
        specparam thl_cs_o = 12;    // (unreachable 1->0 slot, = tPZL)
        specparam tlz_cs_o = 12;    // tPLZ (0->Z)
        specparam tzh_cs_o = 12;    // tPZH (Z->1)
        specparam thz_cs_o = 12;    // tPHZ (1->Z)
        specparam tzl_cs_o = 12;    // tPZL (Z->0)

        // Enable/disable, WE_n to output (data sheet typ only: tPZH 12,
        // tPZL 12, tPHZ 12, tPLZ 12 ns), Fig. 2-25 ... 2-27.
        specparam tlh_we_o = 12;    // (unreachable 0->1 slot, = tPZH)
        specparam thl_we_o = 12;    // (unreachable 1->0 slot, = tPZL)
        specparam tlz_we_o = 12;    // tPLZ (0->Z)
        specparam tzh_we_o = 12;    // tPZH (Z->1)
        specparam thz_we_o = 12;    // tPHZ (1->Z)
        specparam tzl_we_o = 12;    // tPZL (Z->0)

        (a0, a1, a2, a3 => o1_n) = (tlh_a_o, thl_a_o);
        (a0, a1, a2, a3 => o2_n) = (tlh_a_o, thl_a_o);
        (a0, a1, a2, a3 => o3_n) = (tlh_a_o, thl_a_o);
        (a0, a1, a2, a3 => o4_n) = (tlh_a_o, thl_a_o);

        (cs_n => o1_n) = (tlh_cs_o, thl_cs_o, tlz_cs_o, tzh_cs_o, thz_cs_o, tzl_cs_o);
        (cs_n => o2_n) = (tlh_cs_o, thl_cs_o, tlz_cs_o, tzh_cs_o, thz_cs_o, tzl_cs_o);
        (cs_n => o3_n) = (tlh_cs_o, thl_cs_o, tlz_cs_o, tzh_cs_o, thz_cs_o, tzl_cs_o);
        (cs_n => o4_n) = (tlh_cs_o, thl_cs_o, tlz_cs_o, tzh_cs_o, thz_cs_o, tzl_cs_o);

        (we_n => o1_n) = (tlh_we_o, thl_we_o, tlz_we_o, tzh_we_o, thz_we_o, tzl_we_o);
        (we_n => o2_n) = (tlh_we_o, thl_we_o, tlz_we_o, tzh_we_o, thz_we_o, tzl_we_o);
        (we_n => o3_n) = (tlh_we_o, thl_we_o, tlz_we_o, tzh_we_o, thz_we_o, tzl_we_o);
        (we_n => o4_n) = (tlh_we_o, thl_we_o, tlz_we_o, tzh_we_o, thz_we_o, tzl_we_o);

        // AC operating requirements (data sheet, +25 C 5.0 V minima):
        // ts(H/L) A to WE_n 0, th(H/L) A to WE_n 0, ts(H/L) D to WE_n 20,
        // th(H/L) D to WE_n 0, tw(L) WE_n 20 ns. The ts(L)/th(L) CS_n to
        // WE_n rows are blank on the data sheet and are omitted.
        // Icarus Verilog does not support timing checks; kept (guarded)
        // for simulators that do.
`ifndef __ICARUS__
        specparam ts_a = 0;     // ts(H) and ts(L), A_n to WE_n
        specparam th_a = 0;     // th(H) and th(L), A_n to WE_n
        specparam ts_d = 20;    // ts(H) and ts(L), D_n to WE_n
        specparam th_d = 0;     // th(H) and th(L), D_n to WE_n
        specparam tw_we_l = 20; // tw(L) WE_n pulse width

        $setup(a0, posedge we_n, ts_a);
        $setup(a1, posedge we_n, ts_a);
        $setup(a2, posedge we_n, ts_a);
        $setup(a3, posedge we_n, ts_a);
        $hold(posedge we_n, a0, th_a);
        $hold(posedge we_n, a1, th_a);
        $hold(posedge we_n, a2, th_a);
        $hold(posedge we_n, a3, th_a);
        $setup(d1, posedge we_n, ts_d);
        $setup(d2, posedge we_n, ts_d);
        $setup(d3, posedge we_n, ts_d);
        $setup(d4, posedge we_n, ts_d);
        $hold(posedge we_n, d1, th_d);
        $hold(posedge we_n, d2, th_d);
        $hold(posedge we_n, d3, th_d);
        $hold(posedge we_n, d4, th_d);
        $width(negedge we_n, tw_we_l);
`endif
    endspecify

endmodule

f189.v as plain text


Valid HTML 4.01 Strict