Top secrets sources NedoPC ngs

Rev

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

// part of NeoGS flash programmer project (c) 2014 lvd^NedoPC
//
// top-level module

module top(

        input  wire clk_fpga,  // clocks
        input  wire clk_24mhz, //

        output wire clksel0, // clock selection
        output wire clksel1, //

        input  wire warmres_n, // warm reset


        inout  wire [ 7:0] d, // Z80 data bus
        output wire [15:0] a, // Z80 address bus

        input  wire iorq_n,   // Z80 control signals
        input  wire mreq_n,   //
        input  wire rd_n,     //
        input  wire wr_n,     //
        input  wire m1_n,     //
        output wire int_n,    //
        output wire nmi_n,    //
        output wire busrq_n,  //
        input  wire busak_n,  //
        output wire z80res_n, //


        output wire mema14,   // memory control
        output wire mema15,   //
        output wire mema16,   //
        output wire mema17,   //
        output wire mema18,   //
        output wire ram0cs_n, //
        output wire ram1cs_n, //
        output wire ram2cs_n, //
        output wire ram3cs_n, //
        output wire mema21,   //
        output wire romcs_n,  //
        output wire memoe_n,  //
        output wire memwe_n,  //


        inout  wire [7:0] zxid,        // zxbus signals
        input  wire [7:0] zxa,         //
        input  wire       zxa14,       //
        input  wire       zxa15,       //
        input  wire       zxiorq_n,    //
        input  wire       zxmreq_n,    //
        input  wire       zxrd_n,      //
        input  wire       zxwr_n,      //
        input  wire       zxcsrom_n,   //
        output wire       zxblkiorq_n, //
        output wire       zxblkrom_n,  //
        output wire       zxgenwait_n, //
        output wire       zxbusin,     //
        output wire       zxbusena_n,  //


        output wire dac_bitck, // audio-DAC signals
        output wire dac_lrck,  //
        output wire dac_dat,  //


        output wire sd_clk, // SD card interface
        output wire sd_cs,  //
        output wire sd_do,  //
        input  wire sd_di,  //
        input  wire sd_wp,  //
        input  wire sd_det, //


        output wire ma_clk, // control interface of MP3 chip
        output wire ma_cs,
        output wire ma_do,
        input  wire ma_di,

        output wire mp3_xreset, // data interface of MP3 chip
        input  wire mp3_req,    //
        output wire mp3_clk,    //
        output wire mp3_dat,    //
        output wire mp3_sync,   //

        output wire led_diag // LED driver
);





        wire init, init_in_progress;
       
        wire zxbus_rst_n;
        wire rom_rst_n;

        wire       wr_addr;
        wire       wr_data;
        wire       rd_data;
        wire [7:0] wr_buffer;
        wire [7:0] rd_buffer;

        wire autoinc_ena;




        // assign unused pins to safe values
        assign clksel0 = 1'b1;
        assign clksel1 = 1'b1;

        assign int_n = 1'b1;
        assign nmi_n = 1'b1;

        assign ram0cs_n = 1'b1;
        assign ram1cs_n = 1'b1;
        assign ram2cs_n = 1'b1;
        assign ram3cs_n = 1'b1;
       
        assign mema21 = 1'b0;

        assign zxblkrom_n  = 1'b1;
        assign zxgenwait_n = 1'b1;

        assign dac_bitck = 1'b0;
        assign dac_lrck  = 1'b0;
        assign dac_dat   = 1'b0;

        assign sd_clk = 1'b0;
        assign sd_cs  = 1'b1;
        assign sd_do  = 1'b0;

        assign ma_clk = 1'b0;
        assign ma_cs  = 1'b1;
        assign ma_do  = 1'b0;

        assign mp3_xreset = 1'b0;
        assign mp3_clk    = 1'b0;
        assign mp3_sync   = 1'b0;


















        // reset controller
        reset reset
        (
                .clk_fpga (clk_fpga ),
                .clk_24mhz(clk_24mhz),

                .init            (init            ),
                .init_in_progress(init_in_progress),

                .zxbus_rst_n(zxbus_rst_n),
                .rom_rst_n  (rom_rst_n  ),
                .z80_rst_n  (z80res_n   ),

                .z80_busrq_n(busrq_n),
                .z80_busak_n(busak_n)
        );






        // zxbus controller
        zxbus zxbus
        (
                .clk  (clk_24mhz  ),
                .rst_n(zxbus_rst_n),

                .zxid       (zxid       ),
                .zxa        (zxa        ),
                .zxiorq_n   (zxiorq_n   ),
                .zxmreq_n   (zxmreq_n   ),
                .zxrd_n     (zxrd_n     ),
                .zxwr_n     (zxwr_n     ),
                .zxblkiorq_n(zxblkiorq_n),
                .zxbusin    (zxbusin    ),
                .zxbusena_n (zxbusena_n ),

                .init            (init            ),
                .init_in_progress(init_in_progress),

                .led(led_diag),

                .autoinc_ena(autoinc_ena),

                .wr_addr  (wr_addr  ),
                .wr_data  (wr_data  ),
                .rd_data  (rd_data  ),
                .wr_buffer(wr_buffer),
                .rd_buffer(rd_buffer)
        );




        // rom controller
        rom rom
        (
                .clk  (clk_24mhz),
                .rst_n(rom_rst_n),

                .wr_addr  (wr_addr  ),
                .wr_data  (wr_data  ),
                .rd_data  (rd_data  ),
                .wr_buffer(wr_buffer),
                .rd_buffer(rd_buffer),

                .autoinc_ena(autoinc_ena),

                .rom_a   ({mema18,mema17,mema16,mema15,mema14,a[13:0]}),
                .rom_d   (d),
                .rom_cs_n(romcs_n),
                .rom_oe_n(memoe_n),
                .rom_we_n(memwe_n)
        );

        assign a[15:14] = 2'bZZ;




endmodule