Subversion Repositories ngs

Rev

Rev 34 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?

  1. // Part of NeoGS project
  2. //
  3. // Z80 clock switch and nothing more. config_n=coldres_n.
  4. //
  5. // (c) 2008-2010 NedoPC
  6.  
  7. module GS_cpld(
  8.         output wire        config_n,  // ACEX1K config pins
  9.         input  wire        status_n,  //
  10.         input  wire        conf_done, //
  11.         output wire        cs,        //
  12.         input  wire        init_done, //
  13.  
  14.  
  15.         input  wire        clk24in, // 24mhz in
  16.         input  wire        clk20in, // 20mhz in
  17.         input  wire        clksel0, // clock select 0 (1=divide by 2, 0=no divide)
  18.         input  wire        clksel1, // clock select 1 (1=clk20in, 0=clk24in)
  19.         output wire        clkout,  // clock out
  20.  
  21.         input  wire        clkin, // input of clkout signal, buffered, same as for Z80
  22.  
  23.  
  24.         input  wire        coldres_n, // resets
  25.         output wire        warmres_n,
  26.  
  27.  
  28.         input  wire        iorq_n, // Z80 control signals
  29.         input  wire        mreq_n,
  30.         input  wire        rd_n,
  31.         input  wire        wr_n,
  32.  
  33.         inout  wire [ 7:0] d, // Z80 data bus
  34.  
  35.         input  wire        a6,  // some Z80 addresses
  36.         input  wire        a7,
  37.         input  wire        a10,
  38.         input  wire        a11,
  39.         input  wire        a12,
  40.         input  wire        a13,
  41.         input  wire        a14,
  42.         input  wire        a15,
  43.  
  44.  
  45.         output wire        mema14,
  46.         output wire        mema15,
  47.         output wire        mema19,
  48.  
  49.         inout  wire        romcs_n,
  50.         inout  wire        memoe_n,
  51.         inout  wire        memwe_n,
  52.  
  53.         input  wire        in_ramcs0_n,
  54.         input  wire        in_ramcs1_n,
  55.         input  wire        in_ramcs2_n,
  56.         input  wire        in_ramcs3_n,
  57.  
  58.         output wire        out_ramcs0_n,
  59.         output wire        out_ramcs1_n,
  60.  
  61.  
  62.         output wire        ra6,  // some buffered memory addresses
  63.         output wire        ra7,
  64.         output wire        ra10,
  65.         output wire        ra11,
  66.         output wire        ra12,
  67.         output wire        ra13,
  68.  
  69.         inout  wire [ 7:0] rd // memory data bus
  70. );
  71.  
  72.  
  73.         // clock selector
  74.         clocker clk( .clk1(clk24in),
  75.                      .clk2(clk20in),
  76.                      .clksel(clksel1),
  77.                      .divsel(clksel0),
  78.                      .clkout(clkout)
  79.                    );
  80.  
  81.  
  82.         // memory control pins when running without configured FPGA
  83.         assign mema14  = 1'bZ;
  84.         assign mema15  = 1'bZ;
  85.         assign mema19  = 1'bZ;
  86.  
  87.         assign romcs_n = 1'bZ;
  88.         assign memoe_n = 1'bZ;
  89.         assign memwe_n = 1'bZ;
  90.  
  91.         assign cs      = 1'b0;
  92.  
  93.         assign out_ramcs0_n = 1'b1;
  94.         assign out_ramcs1_n = 1'b1;
  95.  
  96.         assign rd = 8'bZZZZ_ZZZZ;
  97.  
  98.         assign warmres_n = 1'bZ;
  99.  
  100.         assign d = 8'bZZZZ_ZZZZ;
  101.  
  102.         assign {ra6,ra7,ra10,ra11,ra12,ra13} = 6'd0;
  103.  
  104.  
  105.  
  106.  
  107.         // reset FPGA at cold reset
  108.         assign config_n = coldres_n;
  109.  
  110.  
  111.  
  112.  
  113.  
  114. endmodule
  115.  
  116.