Skip to content

CGA_TRAP_TBUF

Source: Verilog/DELILAH-CPU/CGA_TRAP/circuit/CGA_TRAP_TBUF.v

Where it sits (Simulation): ND120_TOP > ND120_CORE > ND3202D > CPU_15 > CPU_PROC_32 > CPU_PROC_CGA_33 > CGA > CGA_TRAP > CGA_TRAP_TBUF - instance path: CORE.CPU_BOARD.CPU.PROC.CGA.DELILAH.TRAP.TBUF

Used in: CGA_TRAP (all tops)

Contains: no other modules.

Module hierarchy - All modules

CGA_TRAP_TBUF symbol

Schematic

Drawn from the Verilog: the yosys netlist of the Simulation (Verilator) build, instance CORE.CPU_BOARD.CPU.PROC.CGA.DELILAH.TRAP.TBUF. Sub-modules are boxes (click the picture to open it full size; there every sub-module box links to its page, and every wire shows its Verilog name).

CGA_TRAP_TBUF schematic

Description

ND120 CGA (CPU Gate Array / DELILAH) /CGA/TRAP/TBUF TRAP BUFFERS Page 101 SHEET 1 of 1 Last reviewed: 19-JAN-2025 Ronny Hansen

Ports

Direction Width Name Description
input 1 FETCHN FETCH_n (Fetch instruction, negate)
input 1 INDN IDN_n
input 1 INTRQN INTRQ_n
input 1 PANN PAN_n
input [1:0] PCR_1_0 PCR[1:0]
input [6:0] PT_15_9 PT[15:9]
input 1 VACCN VACC_n - low when the access IS MMU-translated
input 1 WRITEN WRITE_n
output 1 IFETCH
output 1 IFETCHN
output 1 IIND
output 1 IINDN
output 1 INTRQ
output [1:0] IPCR_1_0
output [1:0] IPCR_1_0_N (active low)
output [6:0] IPT_15_9
output [6:0] IPT_15_9_N (active low)
output 1 IWRITE
output 1 IWRITEN
output 1 PAN
output 1 VACC ~VACCN, fanned out to TVGEN and BRKDET

Verilog source

Verilog/DELILAH-CPU/CGA_TRAP/circuit/CGA_TRAP_TBUF.v on GitHub.

Show the Verilog of CGA_TRAP_TBUF (122 lines)
/**************************************************************************
** ND120 CGA (CPU Gate Array / DELILAH)                                  **
** /CGA/TRAP/TBUF                                                        **
** TRAP BUFFERS                                                          **
**                                                                       **
** Page 101                                                              **
** SHEET 1 of 1                                                          **
**                                                                       **
** Last reviewed: 19-JAN-2025                                            **
** Ronny Hansen                                                          **
***************************************************************************/


module CGA_TRAP_TBUF (
    input       FETCHN,   //! FETCH_n (Fetch instruction, negate)
    input       INDN,     //! IDN_n
    input       INTRQN,   //! INTRQ_n
    input       PANN,     //! PAN_n
    input [1:0] PCR_1_0,  //! PCR[1:0]
    input [6:0] PT_15_9,  //! PT[15:9]
    // VACCN in / VACC out: this buffer just inverts VACCN and fans it out to
    // CGA_TRAP_TVGEN and CGA_TRAP_BRKDET. VACC = "this cycle is an MMU-
    // translated memory reference", generated in CGA_DCD.v sheet 10/10.
    input       VACCN,    //! VACC_n - low when the access IS MMU-translated
    input       WRITEN,   //! WRITE_n

    output       IFETCH,
    output       IFETCHN,
    output       IIND,
    output       IINDN,
    output       INTRQ,
    output [1:0] IPCR_1_0,
    output [1:0] IPCR_1_0_N,
    output [6:0] IPT_15_9,
    output [6:0] IPT_15_9_N,
    output       IWRITE,
    output       IWRITEN,
    output       PAN,
    output       VACC     //! ~VACCN, fanned out to TVGEN and BRKDET
);

  /*******************************************************************************
   ** The wires are defined here                                                 **
   *******************************************************************************/
  wire [1:0] s_ipcr_1_0_out;
  wire [6:0] s_ipt_15_9_out;
  wire [6:0] s_ipt_15_9_n_out;
  wire [1:0] s_ipcr_1_0_n_out;
  wire [1:0] s_pcr_1_0;
  wire [6:0] s_pt_15_9;
  wire       s_fetch_n;
  wire       s_ifetch_n_out;
  wire       s_ifetch_out;
  wire       s_iind_n_out;
  wire       s_iind_out;
  wire       s_ind_n;
  wire       s_intrq_n;
  wire       s_intrq_out;
  wire       s_iwrite_n_out;
  wire       s_iwrite_out;
  wire       s_pan_n;
  wire       s_pan_out;
  wire       s_vacc_n;
  wire       s_vacc;
  wire       s_write_n;

  /*******************************************************************************
   ** The module functionality is described here                                 **
   *******************************************************************************/

  /*******************************************************************************
   ** Here all input connections are defined                                     **
   *******************************************************************************/
  assign s_pcr_1_0[1:0]        = PCR_1_0[1:0];
  assign s_pt_15_9[6:0]        = PT_15_9[6:0];
  assign s_pan_n               = PANN;
  assign s_vacc_n              = VACCN;
  assign s_ind_n               = INDN;
  assign s_intrq_n             = INTRQN;
  assign s_fetch_n             = FETCHN;
  assign s_write_n             = WRITEN;

  /*******************************************************************************
   ** Here all output connections are defined                                    **
   *******************************************************************************/
  assign IFETCH                = s_ifetch_out;
  assign IFETCHN               = s_ifetch_n_out;
  assign IIND                  = s_iind_out;
  assign IINDN                 = s_iind_n_out;
  assign INTRQ                 = s_intrq_out;
  assign IPCR_1_0[1:0]         = s_ipcr_1_0_out[1:0];
  assign IPCR_1_0_N[1:0]       = s_ipcr_1_0_n_out[1:0];
  assign IPT_15_9[6:0]         = s_ipt_15_9_out[6:0];
  assign IPT_15_9_N[6:0]       = s_ipt_15_9_n_out[6:0];
  assign IWRITE                = s_iwrite_out;
  assign IWRITEN               = s_iwrite_n_out;
  assign PAN                   = s_pan_out;
  assign VACC                  = s_vacc;

  /*******************************************************************************
   ** Here all in-lined components are defined                                   **
   *******************************************************************************/

  // NOT Gate
  assign s_ifetch_n_out        = ~s_ifetch_out;
  assign s_ifetch_out          = ~s_fetch_n;
  assign s_iind_n_out          = ~s_iind_out;
  assign s_iind_out            = ~s_ind_n;
  assign s_intrq_out           = ~s_intrq_n;

  assign s_ipcr_1_0_n_out[1:0] = ~s_pcr_1_0[1:0];
  assign s_ipcr_1_0_out[1:0]   = ~s_ipcr_1_0_n_out[1:0];

  assign s_ipt_15_9_n_out[6:0] = ~s_pt_15_9[6:0];
  assign s_ipt_15_9_out[6:0]   = ~s_ipt_15_9_n_out[6:0];

  assign s_iwrite_n_out        = ~s_iwrite_out;
  assign s_iwrite_out          = ~s_write_n;
  assign s_pan_out             = ~s_pan_n;
  assign s_vacc                = ~s_vacc_n;

endmodule