Subversion Repositories pentevo

Rev

Blame | Last modification | View Log | Download | RSS feed | ?url?

  1. module main(
  2.  
  3.         // clocks
  4.         input fclk,
  5.         output clkz_out,
  6.         input clkz_in,
  7.  
  8.         // z80
  9.         input iorq_n,
  10.         input mreq_n,
  11.         input rd_n,
  12.         input wr_n,
  13.         input m1_n,
  14.         input rfsh_n,
  15.         output int_n,
  16.         output nmi_n,
  17.         output wait_n,
  18.         output res,
  19.  
  20.         inout [7:0] d,
  21.         input [15:0] a,
  22.  
  23.         // zxbus and related
  24.         output csrom,
  25.         output romoe_n,
  26.         output romwe_n,
  27.  
  28.         output rompg0_n,
  29.         output dos_n, // aka rompg1
  30.         output rompg2,
  31.         output rompg3,
  32.         output rompg4,
  33.  
  34.         input iorqge1,
  35.         input iorqge2,
  36.         output iorq1_n,
  37.         output iorq2_n,
  38.  
  39.         // DRAM
  40.         inout [15:0] rd,
  41.         output [9:0] ra,
  42.         output rwe_n,
  43.         output rucas_n,
  44.         output rlcas_n,
  45.         output rras0_n,
  46.         output rras1_n,
  47.  
  48.         // video
  49.         output [1:0] vred,
  50.         output [1:0] vgrn,
  51.         output [1:0] vblu,
  52.  
  53.         output vhsync,
  54.         output vvsync,
  55.         output vcsync,
  56.  
  57.         // AY control and audio/tape
  58.         output ay_clk,
  59.         output ay_bdir,
  60.         output ay_bc1,
  61.  
  62.         output beep,
  63.  
  64.         // IDE
  65.         output [2:0] ide_a,
  66.         inout [15:0] ide_d,
  67.  
  68.         output ide_dir,
  69.  
  70.         input ide_rdy,
  71.  
  72.         output ide_cs0_n,
  73.         output ide_cs1_n,
  74.         output ide_rs_n,
  75.         output ide_rd_n,
  76.         output ide_wr_n,
  77.  
  78.         // VG93 and diskdrive
  79.         output vg_clk,
  80.  
  81.         output vg_cs_n,
  82.         output vg_res_n,
  83.  
  84.         output vg_hrdy,
  85.         output vg_rclk,
  86.         output vg_rawr,
  87.         output [1:0] vg_a, // disk drive selection
  88.         output vg_wrd,
  89.         output vg_side,
  90.  
  91.         input step,
  92.         input vg_sl,
  93.         input vg_sr,
  94.         input vg_tr43,
  95.         input rdat_b_n,
  96.         input vg_wf_de,
  97.         input vg_drq,
  98.         input vg_irq,
  99.         input vg_wd,
  100.  
  101.         // serial links (atmega-fpga, sdcard)
  102.         output sdcs_n,
  103.         output sddo,
  104.         output sdclk,
  105.         input sddi,
  106.  
  107.         input spics_n,
  108.         input spick,
  109.         input spido,
  110.         output spidi,
  111.         output spiint_n
  112. );
  113.  
  114.  
  115.         wire zclk; // z80 clock for short
  116.         reg [2:0] zclk_gen; // make 3.5 mhz clock
  117.  
  118.         wire rst_n; // global reset
  119.  
  120.         wire rrdy;
  121.         wire cbeg;
  122.         wire [15:0] rddata;
  123.  
  124.         wire [4:0] rompg;
  125.  
  126.         wire [7:0] zports_dout;
  127.         wire zports_dataout;
  128.         wire porthit;
  129.  
  130.         wire [4:0] keys;
  131.         wire tape_in;
  132.  
  133.         wire [15:0] ideout;
  134.         wire [15:0] idein;
  135.  
  136.  
  137.         wire [7:0] zmem_dout;
  138.         wire zmem_dataout;
  139.  
  140.  
  141.         wire [7:0] sd_dout_to_zports;
  142.         wire start_from_zports;
  143.         wire sd_inserted;
  144.         wire sd_readonly;
  145.  
  146.  
  147.         reg [3:0] ayclk_gen;
  148.  
  149.  
  150.         wire [7:0] received;
  151.         wire [7:0] tobesent;
  152.  
  153.  
  154.         wire intrq,drq;
  155.         wire vg_wrFF;
  156.  
  157.  
  158.  
  159.  
  160.  
  161.         // Z80 clock control
  162.         assign zclk = clkz_in;
  163.         always @(posedge fclk)
  164.                 zclk_gen <= zclk_gen + 3'd1;
  165.         assign clkz_out = zclk_gen[2];
  166.  
  167.  
  168.         // RESETTER
  169.         resetter myrst( .clk(fclk),
  170.                         .rst_in_n(ide_rdy),
  171.                         .rst_out_n(rst_n) );
  172.         defparam myrst.RST_CNT_SIZE = 6;
  173.  
  174.  
  175.         assign int_n=1'b1;
  176.         assign nmi_n=1'b1;
  177.         assign wait_n=1'b1;
  178.         assign res=1'b1;
  179.         assign d=8'hZZ;
  180.  
  181.  
  182.         assign csrom=1'b0;
  183.         assign romoe_n=1'b1;
  184.         assign romwe_n=1'b1;
  185.  
  186.         assign iorq1_n=1'b1;
  187.         assign iorq2_n=1'b1;
  188.  
  189.  
  190.         assign rd=16'hZZZZ;
  191.  
  192.  
  193.         assign ay_bdir=1'b0;
  194.         assign ay_bc1=1'b0;
  195.  
  196.  
  197.         assign ide_d=16'hZZZZ;
  198.         assign ide_dir=1'b1;
  199.  
  200.         assign ide_rs_n = 1'b0;
  201.         assign ide_cs1_n = 1'b1;
  202.         assign ide_rd_n = 1'b1;
  203.         assign ide_wr_n = 1'b1;
  204.  
  205.         assign vg_cs_n=1'b1;
  206.         assign vg_res_n=1'b0;
  207.  
  208.  
  209.         assign sdcs_n=1'b1;
  210.  
  211.         assign spiint_n=1'b1;
  212.  
  213.  
  214.  
  215. //AY control
  216.         always @(posedge fclk)
  217.         begin
  218.                 ayclk_gen <= ayclk_gen + 4'd1;
  219.         end
  220.  
  221.         assign ay_clk = ayclk_gen[3];
  222.  
  223.  
  224.  
  225.  
  226.         wire blinker;
  227.         assign ide_cs0_n = blinker;
  228.  
  229.  
  230.         mem_tester mytst( .clk(fclk), .rst_n(rst_n), .led(blinker), .rstart(ide_a[0]), .rready(ide_a[1]), .rstop(ide_a[2]),
  231.                           .DRAM_DQ(rd), .DRAM_MA(ra), .DRAM_RAS0_N(rras0_n), .DRAM_RAS1_N(rras1_n),
  232.                           .DRAM_LCAS_N(rlcas_n), .DRAM_UCAS_N(rucas_n), .DRAM_WE_N(rwe_n) );
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240. endmodule
  241.