74F289

64-BIT RANDOM ACCESS MEMORY (WITH OPEN-COLLECTOR OUTPUTS)


Family
Fairchild FAST (Advanced Schottky TTL)
Source
1980 Fairchild FAST Data Book, pages 4-91 ... 4-93
Status
PRELIMINARY -- page 4-91 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 'F289 is a high speed 64-bit RAM organized as a 16-word by 4-bit
array. Address inputs are buffered to minimize loading, and addresses
are fully decoded on-chip. Outputs are open-collector type and are in
the off (HIGH) state whenever the Chip Select (/CS) input is HIGH. The
outputs are active only in the Read mode; output data is the complement
of the stored data.

  o Open-collector outputs for wired-AND 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      Off (HIGH)
 L    H   Read       Complement of Stored Data
 H    X   Inhibit    Off (HIGH)

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.375
/WE        Write Enable Input (Active LOW)  0.5 / 0.375
D1 - D4    Data Inputs                      0.5 / 0.375
/O1 - /O4  Inverted Data Outputs            OC (1) / 12.5

(1) OC -- Open Collector.  An external pull-up resistor is required;
    the ac table specifies RL = 280 ohms for the published timings.

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 (1) -- An to /On   --   20   --  ns
tPHL    Access Time, LOW (1) -- An to /On    --   20   --  ns
tPHL    Access Time (1) -- /CS to /On        --   12   --  ns
tPLH    Disable Time (1) -- /CS to /On       --   12   --  ns
tPHL    Recovery Time (1) -- /WE to /On      --   12   --  ns
tPLH    Disable Time (1) -- /WE to /On       --   12   --  ns

(1) Measured with RL = 280 ohms.  The data sheet carried a superscript 1
    on every row except Recovery Time, which carried an asterisk; both
    markers denote the same condition.

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

// ============================================================================
// f289.v — 54F/74F289 64-Bit Random Access Memory (16 words x 4 bits,
//          Open-Collector Inverting Outputs)
//
// Fairchild FAST (Advanced Schottky TTL)
// Source: docs/devices/54F74F289.txt (1980 Fairchild FAST Data Book,
//         pages 4-91 ... 4-93) — PRELIMINARY data sheet.
//
// Function table (data sheet):
//   CS_n WE_n | Operation | Outputs
//   ----+-----+-----------+--------------------------
//    L    L   | Write     | Off (HIGH via pull-up)
//    L    H   | Read      | Complement of Stored Data
//    H    X   | Inhibit   | Off (HIGH via pull-up)
//
// Open-collector outputs: the chip drives only LOW actively; the off state
// is high impedance and requires an external pull-up (the data sheet AC
// figures are specified with R_L = 280 ohm). Modeled here as
// `drive-low-or-Z`; a testbench/pull-up resolves the off state to HIGH.
//
// 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, R_L = 280 ohm).
// 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 f289 (
    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 (open collector)
);

    // 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 logic diagram ("data buffers gated by a NAND of WE and CS").
    always @(*)
        if (!cs_n && !we_n)
            mem[{a3, a2, a1, a0}] <= din;

    // Read: outputs active only in Read mode (CS_n LOW, WE_n HIGH) and
    // carry the COMPLEMENT of the stored data. Open collector: actively
    // pulls LOW only when the stored bit is 1 (output complement = 0);
    // otherwise the output is off (Z, pulled HIGH externally).
    wire read = !cs_n && we_n;

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

    specify
        // Access time, address to output (data sheet: tPLH 20, tPHL 20 ns,
        // typ only — preliminary sheet, Min/Max blank; R_L = 280 ohm),
        // Fig. 2-17, 2-23. On an open-collector output a "rise" is a
        // release to Z (pulled HIGH externally); for the 2-delay form that
        // 0->Z transition uses min(tPLH, tPHL), which equals tPLH here.
        specparam tlh_a_o = 20;
        specparam thl_a_o = 20;

        // CS_n to output (data sheet typ only: tPHL access 12 ns [drive
        // LOW on select], tPLH disable 12 ns [release on deselect]),
        // Fig. 2-17, 2-19.
        specparam tlh_cs_o = 12;    // tPLH (release to off/HIGH)
        specparam thl_cs_o = 12;    // tPHL (drive LOW)

        // WE_n to output (data sheet typ only: tPHL recovery 12 ns [drive
        // LOW when read resumes], tPLH disable 12 ns [release when write
        // begins]), Fig. 2-17, 2-18.
        specparam tlh_we_o = 12;    // tPLH (release to off/HIGH)
        specparam thl_we_o = 12;    // tPHL (drive LOW)

        (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);
        (cs_n => o2_n) = (tlh_cs_o, thl_cs_o);
        (cs_n => o3_n) = (tlh_cs_o, thl_cs_o);
        (cs_n => o4_n) = (tlh_cs_o, thl_cs_o);

        (we_n => o1_n) = (tlh_we_o, thl_we_o);
        (we_n => o2_n) = (tlh_we_o, thl_we_o);
        (we_n => o3_n) = (tlh_we_o, thl_we_o);
        (we_n => o4_n) = (tlh_we_o, thl_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

f289.v as plain text


Valid HTML 4.01 Strict