Skip to content

BIF_DPATH_LDBCTL_12

Source: Verilog/CPU-BOARD-3202/circuit/BIF_DPATH_LDBCTL_12.v

Where it sits (Simulation): ND120_TOP > ND120_CORE > ND3202D > BIF_5 > BIF_DPATH_9 > BIF_DPATH_LDBCTL_12 - instance path: CORE.CPU_BOARD.BIF.DPATH.LDBCTL

Used in: BIF_DPATH_9 (all tops)

Contains: PAL_44302B, PAL_44303B, PAL_44304E

Module hierarchy - All modules

BIF_DPATH_LDBCTL_12 symbol

Schematic

Drawn from the Verilog: the yosys netlist of the Simulation (Verilator) build, instance CORE.CPU_BOARD.BIF.DPATH.LDBCTL. 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).

BIF_DPATH_LDBCTL_12 schematic

Description

ND120 CPU, MM&M BIF/DPATH/LDBCTL IO DECODING SHEET 12 of 50 Last reviewed: 14-DEC-2024 Ronny Hansen

Ports

Direction Width Name Description
input 1 OSC Clock input (added for FPGA synthesis)
input 1 sys_rst_n (active low) System reset (active low, for FPGA synthesis)
input 1 BDAP50_n (active low) Bus Data Address Present (50ns delayed) (from BIF_DPATH_9.BDAP50_n)
input 1 BDRY25_n (active low) Bus Data Ready (25ns delayed) (from BIF_DPATH_9.BDRY25_n)
input 1 BDRY50_n (active low) Bus Data Ready (50ns delayed) (from BIF_DPATH_9.BDRY50_n)
input 1 BGNT50_n (active low) Bus Grant (50ns delayed) (from BIF_DPATH_9.BGNT50_n)
input 1 BGNT_n (active low) Bus Grant (from BIF_DPATH_9.BGNT_n)
input 1 BINPUT50_n (active low) Bus Input (50ns delayed) (from BIF_DPATH_9.BINPUT50_n)
input 1 CACT_n (active low) CPU Active (from BIF_DPATH_9.CACT_n)
input 1 CC2_n (active low) Cpu Cycle bit 2 (from BIF_DPATH_9.CC2_n)
input 1 CGNT50_n (active low) Bus Grant (50ns delayed) (from BIF_DPATH_9.CGNT50_n)
input 1 CGNT_n (active low) Bus Grant (from BIF_DPATH_9.CGNT_n)
input 1 EADR_n (active low) Address from CPU to BUS
input 1 EBUS_n (active low) Enable External Bus (from BIF_DPATH_9.EBUS_n)
input 1 GNT_n (active low) Q6_n - GNT_n (GRANT ND100 BUS TO A DMA DEVICE OR EXTERNAL BUS CONTROLLER) (from PAL_44801A.GNT_n)
input 1 IBAPR_n (active low) Bus Address Present (from BIF_DPATH_9.IBAPR_n)
input 1 IOD_n (active low) IO SIGNAL TO LAST FOR THE ENTIRE BUS CYCLE (from BIF_DPATH_9.IOD_n)
input 1 IORQ_n (active low) Input/Output Request (from BIF_DPATH_9.IORQ_n)
input 1 MIS0 Miscellaneous bit 0 (from BIF_DPATH_9.MIS0)
input 1 MWRITE_n (active low) Memory Write (from BIF_DPATH_9.MWRITE_n)
input 1 PD1 Power Down 1 (from BIF_DPATH_9.PD1)
input 1 PD3 Power Down 3 (from BIF_DPATH_9.PD3)
input 1 Q0_n (active low) State bits 0-2 (from BIF_BCTL_6.Q_2_0_n[0])
input 1 Q2_n (active low) State bits 0-2 (from BIF_BCTL_6.Q_2_0_n[2])
input 1 RT_n (active low) RT_n - Return (from BIF_DPATH_9.RT_n)
input 1 TERM_n (active low) TERM_n - Terminate (from BIF_DPATH_9.TERM_n)
input 1 WRITE WRITE - Write (from BIF_DPATH_9.WRITE)
output 1 BGNTCACT Bus Grant OR CPU Active
output 1 CBWRITE_n (active low) CPU Write cycle to bus
output 1 CGNTCACT_n (active low) CPU Grant OR CPU Active
output 1 CLKBD Clock BD (to BIF_DPATH_BDLBD_10.CLKBD)
output 1 DBAPR Data Bus Address Present (to BIF_DPATH_9.DBAPR)
output 1 DSTB_n (active low) Data Strobe (to BIF_DPATH_CDLBD_11.DSTB_n)
output 1 EBADR Enable Address from Bus to Local Memory (to BIF_DPATH_BDLBD_10.EBADR)
output 1 EBD_n (active low) Enable Bus Data (Enable LBD to BD transceiver). (to BIF_DPATH_BDLBD_10.EBD_n)
output 1 EMD_n (active low) Enable Memory LBD to CD bus
output 1 WBD_n (active low) Direction from LBD to BD (LBD to BD transceiver)
output 1 WLBD_n (active low) Direction from CD to LBD (LBD to BD transceiver)

Verilog source

Verilog/CPU-BOARD-3202/circuit/BIF_DPATH_LDBCTL_12.v on GitHub.

Show the Verilog of BIF_DPATH_LDBCTL_12 (224 lines)
/**************************************************************************
** ND120 CPU, MM&M                                                       **
** BIF/DPATH/LDBCTL                                                      **
** IO DECODING                                                           **
** SHEET 12 of 50                                                        **
**                                                                       **
** Last reviewed: 14-DEC-2024                                            **
** Ronny Hansen                                                          **
***************************************************************************/

module BIF_DPATH_LDBCTL_12 (
    input OSC,       //! Clock input (added for FPGA synthesis)
    input sys_rst_n, //! System reset (active low, for FPGA synthesis)

    input BDAP50_n,  //! Bus Data Address Present (50ns delayed) (from BIF_DPATH_9.BDAP50_n)
    input BDRY25_n,  //! Bus Data Ready (25ns delayed) (from BIF_DPATH_9.BDRY25_n)
    input BDRY50_n,  //! Bus Data Ready (50ns delayed) (from BIF_DPATH_9.BDRY50_n)
    input BGNT50_n,  //! Bus Grant (50ns delayed) (from BIF_DPATH_9.BGNT50_n)
    input BGNT_n,  //! Bus Grant (from BIF_DPATH_9.BGNT_n)
    input BINPUT50_n,  //! Bus Input (50ns delayed) (from BIF_DPATH_9.BINPUT50_n)
    input CACT_n,  //! CPU Active (from BIF_DPATH_9.CACT_n)
    input CC2_n,   //! Cpu Cycle bit 2 (from BIF_DPATH_9.CC2_n)
    input CGNT50_n,  //! Bus Grant (50ns delayed) (from BIF_DPATH_9.CGNT50_n)
    input CGNT_n,  //! Bus Grant (from BIF_DPATH_9.CGNT_n)
    input EADR_n, //! Address from CPU to BUS
    input EBUS_n,  //! Enable External Bus (from BIF_DPATH_9.EBUS_n)
    input GNT_n,   //! Q6_n - GNT_n  (GRANT ND100 BUS TO A DMA DEVICE OR EXTERNAL BUS CONTROLLER) (from PAL_44801A.GNT_n)
    input IBAPR_n,  //! Bus Address Present (from BIF_DPATH_9.IBAPR_n)
    input IOD_n,   //! IO SIGNAL TO LAST FOR THE ENTIRE BUS CYCLE (from BIF_DPATH_9.IOD_n)
    input IORQ_n,  //! Input/Output Request (from BIF_DPATH_9.IORQ_n)
    input MIS0,    //! Miscellaneous bit 0 (from BIF_DPATH_9.MIS0)
    input MWRITE_n,  //! Memory Write (from BIF_DPATH_9.MWRITE_n)
    input PD1,     //! Power Down 1 (from BIF_DPATH_9.PD1)
    input PD3,     //! Power Down 3 (from BIF_DPATH_9.PD3)
    input Q0_n,    //! State bits 0-2 (from BIF_BCTL_6.Q_2_0_n[0])
    input Q2_n,    //! State bits 0-2 (from BIF_BCTL_6.Q_2_0_n[2])
    input RT_n,    //! RT_n - Return (from BIF_DPATH_9.RT_n)
    input TERM_n,  //! TERM_n - Terminate (from BIF_DPATH_9.TERM_n)
    input WRITE,   //! WRITE - Write (from BIF_DPATH_9.WRITE)

    output BGNTCACT,  //! Bus Grant OR CPU Active
    output CBWRITE_n,  //! CPU Write cycle to bus
    output CGNTCACT_n,  //! CPU Grant OR CPU Active
    output CLKBD,  //! Clock BD (to BIF_DPATH_BDLBD_10.CLKBD)
    output DBAPR,  //! Data Bus Address Present (to BIF_DPATH_9.DBAPR)
    output DSTB_n,  //! Data Strobe (to BIF_DPATH_CDLBD_11.DSTB_n)
    output EBADR,  //! Enable Address from Bus to Local Memory (to BIF_DPATH_BDLBD_10.EBADR)
    output EBD_n,  //! Enable Bus Data (Enable LBD to BD transceiver). (to BIF_DPATH_BDLBD_10.EBD_n)
    output EMD_n,  //! Enable Memory LBD to CD bus
    output WBD_n,  //! Direction from LBD to BD (LBD to BD transceiver)
    output WLBD_n  //! Direction from CD to LBD (LBD to BD transceiver)
);

  /*******************************************************************************
   ** The wires are defined here                                                 **
   *******************************************************************************/
  wire s_osc;
  wire s_bact_n;
  wire s_bdap50_n;
  wire s_bdry25_n;
  wire s_bdry50_n;
  wire s_bgncact;
  wire s_bgnt_n;
  wire s_bgnt50_n;
  wire s_binput50_n;
  wire s_cact_n;
  wire s_cbwrite_n;
  wire s_cc2_n;
  wire s_cgnt_n;
  wire s_cgnt50_n;
  wire s_cgntcact_n;
  wire s_clkbd;
  wire s_dbapr;
  wire s_dstb_n;
  wire s_eadr_n;
  wire s_ebadr;
  wire s_ebd_n;
  wire s_ebus_n;
  wire s_emd_n;
  wire s_gnt_n;
  wire s_ibapr_n;
  wire s_iod_n;
  wire s_iorq_n;
  wire s_mis0;
  wire s_mwrite_n;
  wire s_pd1;
  wire s_pd3;
  wire s_q0_n;
  wire s_q2_n;
  wire s_rt_n;
  wire s_term_n;
  wire s_wbd_n;
  wire s_wlbd_n;
  wire s_write;

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

  /*******************************************************************************
   ** Here all input connections are defined                                     **
   *******************************************************************************/
  assign s_osc        = OSC;
  assign s_bdap50_n   = BDAP50_n;
  assign s_bdry25_n   = BDRY25_n;
  assign s_bdry50_n   = BDRY50_n;
  assign s_bgnt_n     = BGNT_n;
  assign s_bgnt50_n   = BGNT50_n;
  assign s_binput50_n = BINPUT50_n;
  assign s_cact_n     = CACT_n;
  assign s_cc2_n      = CC2_n;
  assign s_cgnt_n     = CGNT_n;
  assign s_cgnt50_n   = CGNT50_n;
  assign s_eadr_n     = EADR_n;
  assign s_ebus_n     = EBUS_n;
  assign s_gnt_n      = GNT_n;
  assign s_ibapr_n    = IBAPR_n;
  assign s_iod_n      = IOD_n;
  assign s_iorq_n     = IORQ_n;
  assign s_mis0       = MIS0;
  assign s_mwrite_n   = MWRITE_n;
  assign s_pd1        = PD1;
  assign s_pd3        = PD3;
  assign s_q0_n       = Q0_n;
  assign s_q2_n       = Q2_n;
  assign s_rt_n       = RT_n;
  assign s_term_n     = TERM_n;
  assign s_write      = WRITE;

  /*******************************************************************************
   ** Here all output connections are defined                                    **
   *******************************************************************************/
  assign BGNTCACT     = s_bgncact;
  assign CBWRITE_n    = s_cbwrite_n;
  assign CGNTCACT_n   = s_cgntcact_n;
  assign CLKBD        = s_clkbd;
  assign DBAPR        = s_dbapr;
  assign DSTB_n       = s_dstb_n;
  assign EBADR        = s_ebadr;
  assign EBD_n        = s_ebd_n;
  assign EMD_n        = s_emd_n;
  assign WBD_n        = s_wbd_n;
  assign WLBD_n       = s_wlbd_n;

  /*******************************************************************************
   ** Here all sub-circuits are defined                                          **
   *******************************************************************************/

  PAL_44303B PAL_44303_ULBC2 (
      .CK        (s_osc),         // Clock (added for FPGA synthesis)
      .sys_rst_n (sys_rst_n),     // System reset (for FPGA synthesis)

      .CACT_n    (s_cact_n),      // I0
      .CGNT_n    (s_cgnt_n),      // I1
      .EADR_n    (s_eadr_n),      // I2 - Address from CPU to Bus
      .BINPUT50_n(s_binput50_n),  // I3
      .MIS0      (s_mis0),        // I4
      .IOD_n     (s_iod_n),       // I5
      .WRITE     (s_write),       // I6
      .TEST      (s_pd1),         //PD1          // I7 - PD1
      //.I8(), // not connected   // I8
      .BACT_n    (s_bact_n),      // I9

      .WBD_n    (s_wbd_n),  // Y0_n - Write Bus Direction
      .CBWRITE_n(s_cbwrite_n), // Y1_n - CPU Write cycle to Bus

      .WLBD_n(s_wlbd_n),  // B0_n - Write Local Bus Direction
      .CMWRITE_n()  // B1_n - CPU Write to Local Memory (not connected, just used internal in PAL)
  );

  PAL_44302B PAL_44302_ULBC1 (
      .CK      (s_osc),       // Clock (added for FPGA synthesis)
      .sys_rst_n(sys_rst_n),  // System reset (for FPGA synthesis)

      .Q0_n    (s_q0_n),      // I0
      .Q2_n    (s_q2_n),      // I1
      .CC2_n   (s_cc2_n),     // I2
      .BDRY25_n(s_bdry25_n),  // I3
      .BDRY50_n(s_bdry50_n),  // I4
      .CGNT_n  (s_cgnt_n),    // I5
      .CGNT50_n(s_cgnt50_n),  // I6
      .CACT_n  (s_cact_n),    // I7
      .TERM_n  (s_term_n),    // I8
      .BGNT_n  (s_bgnt_n),    // I9

      .BGNTCACT_n(s_bgncact),    // Y0_n
      .CGNTCACT_n(s_cgntcact_n), // Y1_n

      .EMD_n (s_emd_n),   // B0_n
      .DSTB_n(s_dstb_n),  // B1_n
      //.B2_n(),                    // B2_n
      .TEST  (s_pd3),     //PD3          // B3_n
      .IORQ_n(s_iorq_n),  // B4_n
      .RT_n  (s_rt_n)     // B5_n

  );

  PAL_44304E PAL_44304_ULBC3 (
      .CK      (s_osc),       // Clock (added for FPGA synthesis)
      .sys_rst_n(sys_rst_n),  // System reset (for FPGA synthesis)

      .CGNT_n  (s_cgnt_n),    // I0
      .BGNT_n  (s_bgnt_n),    // I1
      .BGNT50_n(s_bgnt50_n),  // I2
      .MWRITE_n(s_mwrite_n),  // I3
      .BDAP50_n(s_bdap50_n),  // I4
      .EBUS_n  (s_ebus_n),    // I5
      .IBAPR_n (s_ibapr_n),   // I6
      .GNT_n   (s_gnt_n),     // I7
      .TEST    (s_pd3),       // I8 - PD3
      //.I9(),                // I9

      .DBAPR(s_dbapr),  // Y0_n
      //.Y1_n()            // Y1_n

      .BACT_n  (s_bact_n),  // B0_n  DMA Output Cycle
      .EBADR_b1(s_ebadr),   // B1_n
      .FAPR    (),          // B2_n  - not in use
      .SAPR    (),          // B3_n  - not in use
      .CLKBD   (s_clkbd),   // B4_n
      .EBD_n   (s_ebd_n)    // B5_n
  );

endmodule