OpenCores
URL https://opencores.org/ocsvn/eco32/eco32/trunk

Subversion Repositories eco32

[/] [eco32/] [trunk/] [fpga/] [mc/] [boards/] [xsa-xst-3/] [src/] [toplevel/] [eco32.v] - Diff between revs 288 and 290

Show entire file | Details | Blame | View Log

Rev 288 Rev 290
Line 1... Line 1...
//
//
// eco32.v -- ECO32 top-level description
// eco32.v -- ECO32 top-level description
//
//
 
 
 
 
 
`timescale 1ns/10ps
 
`default_nettype none
 
 
 
 
module eco32(clk_in,
module eco32(clk_in,
             reset_inout_n,
             rst_inout_n,
             sdram_clk,
             sdram_clk,
             sdram_fb,
             sdram_fb,
             sdram_cke,
             sdram_cke,
             sdram_cs_n,
             sdram_cs_n,
             sdram_ras_n,
             sdram_ras_n,
Line 57... Line 61...
             sw2_n,
             sw2_n,
             sw3_n);
             sw3_n);
 
 
    // clock and reset
    // clock and reset
    input clk_in;
    input clk_in;
    inout reset_inout_n;
    inout rst_inout_n;
    // SDRAM
    // SDRAM
    output sdram_clk;
    output sdram_clk;
    input sdram_fb;
    input sdram_fb;
    output sdram_cke;
    output sdram_cke;
    output sdram_cs_n;
    output sdram_cs_n;
Line 124... Line 128...
    input sw1_4;
    input sw1_4;
    input sw2_n;
    input sw2_n;
    input sw3_n;
    input sw3_n;
 
 
  // clk_rst
  // clk_rst
  wire clk;
  wire clk;                             // system clock
  wire clk_ok;
  wire clk_ok;                          // clock is stable
  wire reset;
  wire rst;                             // system reset
  // cpu
  // cpu
  wire cpu_en;
  wire bus_stb;                         // bus strobe
  wire cpu_wr;
  wire bus_we;                          // bus write enable
  wire [1:0] cpu_size;
  wire [31:2] bus_addr;                 // bus address (word address)
  wire [31:0] cpu_addr;
  wire [31:0] bus_din;                   // bus data input, for reads
  wire [31:0] cpu_data_in;
  wire [31:0] bus_dout;                  // bus data output, for writes
  wire [31:0] cpu_data_out;
  wire bus_ack;                         // bus acknowledge
  wire cpu_wt;
  wire [15:0] bus_irq;                   // bus interrupt requests
  wire [15:0] cpu_irq;
 
  // ram
  // ram
  wire ram_en;
  wire ram_stb;                         // ram strobe
  wire ram_wr;
  wire [31:0] ram_dout;                  // ram data output
  wire [1:0] ram_size;
  wire ram_ack;                         // ram acknowledge
  wire [24:0] ram_addr;
 
  wire [31:0] ram_data_in;
 
  wire [31:0] ram_data_out;
 
  wire ram_wt;
 
  // rom
  // rom
  wire rom_en;
  wire rom_stb;                         // rom strobe
  wire rom_wr;
  wire [31:0] rom_dout;                  // rom data output
  wire [1:0] rom_size;
  wire rom_ack;                         // rom acknowledge
  wire [20:0] rom_addr;
  // i/o
  wire [31:0] rom_data_out;
  wire i_o_stb;                         // i/o strobe
  wire rom_wt;
 
  // tmr0
  // tmr0
  wire tmr0_en;
  wire tmr0_stb;                        // tmr 0 strobe
  wire tmr0_wr;
  wire [31:0] tmr0_dout;         // tmr 0 data output
  wire [3:2] tmr0_addr;
  wire tmr0_ack;                        // tmr 0 acknowledge
  wire [31:0] tmr0_data_in;
  wire tmr0_irq;                        // tmr 0 interrupt request
  wire [31:0] tmr0_data_out;
 
  wire tmr0_wt;
 
  wire tmr0_irq;
 
  // tmr1
  // tmr1
  wire tmr1_en;
  wire tmr1_stb;                        // tmr 1 strobe
  wire tmr1_wr;
  wire [31:0] tmr1_dout;         // tmr 1 data output
  wire [3:2] tmr1_addr;
  wire tmr1_ack;                        // tmr 1 acknowledge
  wire [31:0] tmr1_data_in;
  wire tmr1_irq;                        // tmr 1 interrupt request
  wire [31:0] tmr1_data_out;
 
  wire tmr1_wt;
 
  wire tmr1_irq;
 
  // dsp
  // dsp
  wire dsp_en;
  wire dsp_stb;                         // dsp strobe
  wire dsp_wr;
  wire [15:0] dsp_dout;                  // dsp data output
  wire [13:2] dsp_addr;
  wire dsp_ack;                         // dsp acknowledge
  wire [15:0] dsp_data_in;
 
  wire [15:0] dsp_data_out;
 
  wire dsp_wt;
 
  // kbd
  // kbd
  wire kbd_en;
  wire kbd_stb;                         // kbd strobe
  wire kbd_wr;
  wire [7:0] kbd_dout;                   // kbd data output
  wire kbd_addr;
  wire kbd_ack;                         // kbd acknowledge
  wire [7:0] kbd_data_in;
  wire kbd_irq;                         // kbd interrupt request
  wire [7:0] kbd_data_out;
 
  wire kbd_wt;
 
  wire kbd_irq;
 
  // ser0
  // ser0
  wire ser0_en;
  wire ser0_stb;                        // ser 0 strobe
  wire ser0_wr;
  wire [7:0] ser0_dout;                  // ser 0 data output
  wire [3:2] ser0_addr;
  wire ser0_ack;                        // ser 0 acknowledge
  wire [7:0] ser0_data_in;
  wire ser0_irq_r;                      // ser 0 rcv interrupt request
  wire [7:0] ser0_data_out;
  wire ser0_irq_t;                      // ser 0 xmt interrupt request
  wire ser0_wt;
 
  wire ser0_irq_r;
 
  wire ser0_irq_t;
 
  // ser1
  // ser1
  wire ser1_en;
  wire ser1_stb;                        // ser 1 strobe
  wire ser1_wr;
  wire [7:0] ser1_dout;                  // ser 1 data output
  wire [3:2] ser1_addr;
  wire ser1_ack;                        // ser 1 acknowledge
  wire [7:0] ser1_data_in;
  wire ser1_irq_r;                      // ser 1 rcv interrupt request
  wire [7:0] ser1_data_out;
  wire ser1_irq_t;                      // ser 1 xmt interrupt request
  wire ser1_wt;
 
  wire ser1_irq_r;
 
  wire ser1_irq_t;
 
  // dsk
  // dsk
  wire dsk_en;
  wire dsk_stb;                         // dsk strobe
  wire dsk_wr;
  wire [31:0] dsk_dout;                  // dsk data output
  wire [19:2] dsk_addr;
  wire dsk_ack;                         // dsk acknowledge
  wire [31:0] dsk_data_in;
  wire dsk_irq;                         // dsk interrupt request
  wire [31:0] dsk_data_out;
 
  wire dsk_wt;
 
  wire dsk_irq;
 
  // fms
  // fms
  wire fms_en;
  wire fms_stb;                         // fms strobe
  wire fms_wr;
  wire [31:0] fms_dout;                  // fms data output
  wire [11:2] fms_addr;
  wire fms_ack;                         // fms acknowledge
  wire [31:0] fms_data_in;
 
  wire [31:0] fms_data_out;
 
  wire fms_wt;
 
  // dac
  // dac
  wire [15:0] dac_sample_l;
  wire [15:0] dac_sample_l;              // dac sample value, left
  wire [15:0] dac_sample_r;
  wire [15:0] dac_sample_r;              // dac sample value, right
  wire dac_next;
  wire dac_next;                        // dac next sample request
  // bio
  // bio
  wire bio_en;
  wire bio_stb;                         // bio strobe
  wire bio_wr;
  wire [31:0] bio_dout;                  // bio data output
  wire bio_addr;
  wire bio_ack;                         // bio acknowledge
  wire [31:0] bio_data_in;
 
  wire [31:0] bio_data_out;
  //--------------------------------------
  wire bio_wt;
  // module instances
 
  //--------------------------------------
 
 
  clk_rst clk_rst1(
  clk_rst clk_rst_1(
    .clk_in(clk_in),
    .clk_in(clk_in),
    .reset_inout_n(reset_inout_n),
    .rst_inout_n(rst_inout_n),
    .sdram_clk(sdram_clk),
    .sdram_clk(sdram_clk),
    .sdram_fb(sdram_fb),
    .sdram_fb(sdram_fb),
    .clk(clk),
    .clk(clk),
    .clk_ok(clk_ok),
    .clk_ok(clk_ok),
    .reset(reset)
    .rst(rst)
  );
  );
 
 
  busctrl busctrl1(
  cpu cpu_1(
    // cpu
    .clk(clk),
    .cpu_en(cpu_en),
    .rst(rst),
    .cpu_wr(cpu_wr),
    .bus_stb(bus_stb),
    .cpu_size(cpu_size[1:0]),
    .bus_we(bus_we),
    .cpu_addr(cpu_addr[31:0]),
    .bus_addr(bus_addr[31:2]),
    .cpu_data_in(cpu_data_in[31:0]),
    .bus_din(bus_din[31:0]),
    .cpu_data_out(cpu_data_out[31:0]),
    .bus_dout(bus_dout[31:0]),
    .cpu_wt(cpu_wt),
    .bus_ack(bus_ack),
    // ram
    .bus_irq(bus_irq[15:0])
    .ram_en(ram_en),
  );
    .ram_wr(ram_wr),
 
    .ram_size(ram_size[1:0]),
 
    .ram_addr(ram_addr[24:0]),
 
    .ram_data_in(ram_data_in[31:0]),
 
    .ram_data_out(ram_data_out[31:0]),
 
    .ram_wt(ram_wt),
 
    // rom
 
    .rom_en(rom_en),
 
    .rom_wr(rom_wr),
 
    .rom_size(rom_size[1:0]),
 
    .rom_addr(rom_addr[20:0]),
 
    .rom_data_out(rom_data_out[31:0]),
 
    .rom_wt(rom_wt),
 
    // tmr0
 
    .tmr0_en(tmr0_en),
 
    .tmr0_wr(tmr0_wr),
 
    .tmr0_addr(tmr0_addr[3:2]),
 
    .tmr0_data_in(tmr0_data_in[31:0]),
 
    .tmr0_data_out(tmr0_data_out[31:0]),
 
    .tmr0_wt(tmr0_wt),
 
    // tmr1
 
    .tmr1_en(tmr1_en),
 
    .tmr1_wr(tmr1_wr),
 
    .tmr1_addr(tmr1_addr[3:2]),
 
    .tmr1_data_in(tmr1_data_in[31:0]),
 
    .tmr1_data_out(tmr1_data_out[31:0]),
 
    .tmr1_wt(tmr1_wt),
 
    // dsp
 
    .dsp_en(dsp_en),
 
    .dsp_wr(dsp_wr),
 
    .dsp_addr(dsp_addr[13:2]),
 
    .dsp_data_in(dsp_data_in[15:0]),
 
    .dsp_data_out(dsp_data_out[15:0]),
 
    .dsp_wt(dsp_wt),
 
    // kbd
 
    .kbd_en(kbd_en),
 
    .kbd_wr(kbd_wr),
 
    .kbd_addr(kbd_addr),
 
    .kbd_data_in(kbd_data_in[7:0]),
 
    .kbd_data_out(kbd_data_out[7:0]),
 
    .kbd_wt(kbd_wt),
 
    // ser0
 
    .ser0_en(ser0_en),
 
    .ser0_wr(ser0_wr),
 
    .ser0_addr(ser0_addr[3:2]),
 
    .ser0_data_in(ser0_data_in[7:0]),
 
    .ser0_data_out(ser0_data_out[7:0]),
 
    .ser0_wt(ser0_wt),
 
    // ser1
 
    .ser1_en(ser1_en),
 
    .ser1_wr(ser1_wr),
 
    .ser1_addr(ser1_addr[3:2]),
 
    .ser1_data_in(ser1_data_in[7:0]),
 
    .ser1_data_out(ser1_data_out[7:0]),
 
    .ser1_wt(ser1_wt),
 
    // dsk
 
    .dsk_en(dsk_en),
 
    .dsk_wr(dsk_wr),
 
    .dsk_addr(dsk_addr[19:2]),
 
    .dsk_data_in(dsk_data_in[31:0]),
 
    .dsk_data_out(dsk_data_out[31:0]),
 
    .dsk_wt(dsk_wt),
 
    // fms
 
    .fms_en(fms_en),
 
    .fms_wr(fms_wr),
 
    .fms_addr(fms_addr[11:2]),
 
    .fms_data_in(fms_data_in[31:0]),
 
    .fms_data_out(fms_data_out[31:0]),
 
    .fms_wt(fms_wt),
 
    // bio
 
    .bio_en(bio_en),
 
    .bio_wr(bio_wr),
 
    .bio_addr(bio_addr),
 
    .bio_data_in(bio_data_in[31:0]),
 
    .bio_data_out(bio_data_out[31:0]),
 
    .bio_wt(bio_wt)
 
  );
 
 
 
  cpu cpu1(
 
    .clk(clk),
 
    .reset(reset),
 
    .bus_en(cpu_en),
 
    .bus_wr(cpu_wr),
 
    .bus_size(cpu_size[1:0]),
 
    .bus_addr(cpu_addr[31:0]),
 
    .bus_data_in(cpu_data_in[31:0]),
 
    .bus_data_out(cpu_data_out[31:0]),
 
    .bus_wt(cpu_wt),
 
    .irq(cpu_irq[15:0])
 
  );
 
 
 
  assign cpu_irq[15] = tmr1_irq;
 
  assign cpu_irq[14] = tmr0_irq;
 
  assign cpu_irq[13] = 1'b0;
 
  assign cpu_irq[12] = 1'b0;
 
  assign cpu_irq[11] = 1'b0;
 
  assign cpu_irq[10] = 1'b0;
 
  assign cpu_irq[ 9] = 1'b0;
 
  assign cpu_irq[ 8] = dsk_irq;
 
  assign cpu_irq[ 7] = 1'b0;
 
  assign cpu_irq[ 6] = 1'b0;
 
  assign cpu_irq[ 5] = 1'b0;
 
  assign cpu_irq[ 4] = kbd_irq;
 
  assign cpu_irq[ 3] = ser1_irq_r;
 
  assign cpu_irq[ 2] = ser1_irq_t;
 
  assign cpu_irq[ 1] = ser0_irq_r;
 
  assign cpu_irq[ 0] = ser0_irq_t;
 
 
 
  ram ram1(
  ram ram_1(
    .clk(clk),
    .clk(clk),
    .clk_ok(clk_ok),
    .clk_ok(clk_ok),
    .reset(reset),
    .rst(rst),
    .en(ram_en),
    .stb(ram_stb),
    .wr(ram_wr),
    .we(bus_we),
    .size(ram_size[1:0]),
    .addr(bus_addr[24:2]),
    .addr(ram_addr[24:0]),
    .data_in(bus_dout[31:0]),
    .data_in(ram_data_in[31:0]),
    .data_out(ram_dout[31:0]),
    .data_out(ram_data_out[31:0]),
    .ack(ram_ack),
    .wt(ram_wt),
 
    .sdram_cke(sdram_cke),
    .sdram_cke(sdram_cke),
    .sdram_cs_n(sdram_cs_n),
    .sdram_cs_n(sdram_cs_n),
    .sdram_ras_n(sdram_ras_n),
    .sdram_ras_n(sdram_ras_n),
    .sdram_cas_n(sdram_cas_n),
    .sdram_cas_n(sdram_cas_n),
    .sdram_we_n(sdram_we_n),
    .sdram_we_n(sdram_we_n),
Line 379... Line 246...
    .sdram_udqm(sdram_udqm),
    .sdram_udqm(sdram_udqm),
    .sdram_ldqm(sdram_ldqm),
    .sdram_ldqm(sdram_ldqm),
    .sdram_dq(sdram_dq[15:0])
    .sdram_dq(sdram_dq[15:0])
  );
  );
 
 
  rom rom1(
  rom rom_1(
    .clk(clk),
    .clk(clk),
    .reset(reset),
    .rst(rst),
    .en(rom_en),
    .stb(rom_stb),
    .wr(rom_wr),
    .we(bus_we),
    .size(rom_size[1:0]),
    .addr(bus_addr[20:2]),
    .addr(rom_addr[20:0]),
    .data_out(rom_dout[31:0]),
    .data_out(rom_data_out[31:0]),
    .ack(rom_ack),
    .wt(rom_wt),
 
    .ce_n(flash_ce_n),
    .ce_n(flash_ce_n),
    .oe_n(flash_oe_n),
    .oe_n(flash_oe_n),
    .we_n(flash_we_n),
    .we_n(flash_we_n),
    .rst_n(flash_rst_n),
    .rst_n(flash_rst_n),
    .byte_n(flash_byte_n),
    .byte_n(flash_byte_n),
    .a(flash_a[19:0]),
    .a(flash_a[19:0]),
    .d(flash_d[15:0])
    .d(flash_d[15:0])
  );
  );
 
 
  tmr tmr1_0(
  tmr tmr_1(
    .clk(clk),
    .clk(clk),
    .reset(reset),
    .rst(rst),
    .en(tmr0_en),
    .stb(tmr0_stb),
    .wr(tmr0_wr),
    .we(bus_we),
    .addr(tmr0_addr[3:2]),
    .addr(bus_addr[3:2]),
    .data_in(tmr0_data_in[31:0]),
    .data_in(bus_dout[31:0]),
    .data_out(tmr0_data_out[31:0]),
    .data_out(tmr0_dout[31:0]),
    .wt(tmr0_wt),
    .ack(tmr0_ack),
    .irq(tmr0_irq)
    .irq(tmr0_irq)
  );
  );
 
 
  tmr tmr1_1(
  tmr tmr_2(
    .clk(clk),
    .clk(clk),
    .reset(reset),
    .rst(rst),
    .en(tmr1_en),
    .stb(tmr1_stb),
    .wr(tmr1_wr),
    .we(bus_we),
    .addr(tmr1_addr[3:2]),
    .addr(bus_addr[3:2]),
    .data_in(tmr1_data_in[31:0]),
    .data_in(bus_dout[31:0]),
    .data_out(tmr1_data_out[31:0]),
    .data_out(tmr1_dout[31:0]),
    .wt(tmr1_wt),
    .ack(tmr1_ack),
    .irq(tmr1_irq)
    .irq(tmr1_irq)
  );
  );
 
 
  dsp dsp1(
  dsp dsp_1(
    .clk(clk),
    .clk(clk),
    .reset(reset),
    .rst(rst),
    .en(dsp_en),
    .stb(dsp_stb),
    .wr(dsp_wr),
    .we(bus_we),
    .addr(dsp_addr[13:2]),
    .addr(bus_addr[13:2]),
    .data_in(dsp_data_in[15:0]),
    .data_in(bus_dout[15:0]),
    .data_out(dsp_data_out[15:0]),
    .data_out(dsp_dout[15:0]),
    .wt(dsp_wt),
    .ack(dsp_ack),
    .hsync(vga_hsync),
    .hsync(vga_hsync),
    .vsync(vga_vsync),
    .vsync(vga_vsync),
    .r(vga_r[2:0]),
    .r(vga_r[2:0]),
    .g(vga_g[2:0]),
    .g(vga_g[2:0]),
    .b(vga_b[2:0])
    .b(vga_b[2:0])
  );
  );
 
 
  kbd kbd1(
  kbd kbd_1(
    .clk(clk),
    .clk(clk),
    .reset(reset),
    .rst(rst),
    .en(kbd_en),
    .stb(kbd_stb),
    .wr(kbd_wr),
    .we(bus_we),
    .addr(kbd_addr),
    .addr(bus_addr[2]),
    .data_in(kbd_data_in[7:0]),
    .data_in(bus_dout[7:0]),
    .data_out(kbd_data_out[7:0]),
    .data_out(kbd_dout[7:0]),
    .wt(kbd_wt),
    .ack(kbd_ack),
    .irq(kbd_irq),
    .irq(kbd_irq),
    .ps2_clk(ps2_clk),
    .ps2_clk(ps2_clk),
    .ps2_data(ps2_data)
    .ps2_data(ps2_data)
  );
  );
 
 
  ser ser1_0(
  ser ser_1(
    .clk(clk),
    .clk(clk),
    .reset(reset),
    .rst(rst),
    .en(ser0_en),
    .stb(ser0_stb),
    .wr(ser0_wr),
    .we(bus_we),
    .addr(ser0_addr[3:2]),
    .addr(bus_addr[3:2]),
    .data_in(ser0_data_in[7:0]),
    .data_in(bus_dout[7:0]),
    .data_out(ser0_data_out[7:0]),
    .data_out(ser0_dout[7:0]),
    .wt(ser0_wt),
    .ack(ser0_ack),
    .irq_r(ser0_irq_r),
    .irq_r(ser0_irq_r),
    .irq_t(ser0_irq_t),
    .irq_t(ser0_irq_t),
    .rxd(rs232_0_rxd),
    .rxd(rs232_0_rxd),
    .txd(rs232_0_txd)
    .txd(rs232_0_txd)
  );
  );
 
 
  ser ser1_1(
  ser ser_2(
    .clk(clk),
    .clk(clk),
    .reset(reset),
    .rst(rst),
    .en(ser1_en),
    .stb(ser1_stb),
    .wr(ser1_wr),
    .we(bus_we),
    .addr(ser1_addr[3:2]),
    .addr(bus_addr[3:2]),
    .data_in(ser1_data_in[7:0]),
    .data_in(bus_dout[7:0]),
    .data_out(ser1_data_out[7:0]),
    .data_out(ser1_dout[7:0]),
    .wt(ser1_wt),
    .ack(ser1_ack),
    .irq_r(ser1_irq_r),
    .irq_r(ser1_irq_r),
    .irq_t(ser1_irq_t),
    .irq_t(ser1_irq_t),
    .rxd(rs232_1_rxd),
    .rxd(rs232_1_rxd),
    .txd(rs232_1_txd)
    .txd(rs232_1_txd)
  );
  );
 
 
  dsk dsk1(
  assign pbus_a[4:3] = 2'b00;
 
 
 
  dsk dsk_1(
    .clk(clk),
    .clk(clk),
    .reset(reset),
    .rst(rst),
    .en(dsk_en),
    .stb(dsk_stb),
    .wr(dsk_wr),
    .we(bus_we),
    .addr(dsk_addr[19:2]),
    .addr(bus_addr[19:2]),
    .data_in(dsk_data_in[31:0]),
    .data_in(bus_dout[31:0]),
    .data_out(dsk_data_out[31:0]),
    .data_out(dsk_dout[31:0]),
    .wt(dsk_wt),
    .ack(dsk_ack),
    .irq(dsk_irq),
    .irq(dsk_irq),
    .ata_d(pbus_d[15:0]),
    .ata_d(pbus_d[15:0]),
    .ata_a(pbus_a[2:0]),
    .ata_a(pbus_a[2:0]),
    .ata_cs0_n(ata_cs0_n),
    .ata_cs0_n(ata_cs0_n),
    .ata_cs1_n(ata_cs1_n),
    .ata_cs1_n(ata_cs1_n),
Line 503... Line 371...
    .ata_dmarq(ata_dmarq),
    .ata_dmarq(ata_dmarq),
    .ata_dmack_n(ata_dmack_n),
    .ata_dmack_n(ata_dmack_n),
    .ata_iordy(ata_iordy)
    .ata_iordy(ata_iordy)
  );
  );
 
 
  fms fms1(
  fms fms_1(
    .clk(clk),
    .clk(clk),
    .reset(reset),
    .rst(rst),
    .en(fms_en),
    .stb(fms_stb),
    .wr(fms_wr),
    .we(bus_we),
    .addr(fms_addr[11:2]),
    .addr(bus_addr[11:2]),
    .data_in(fms_data_in[31:0]),
    .data_in(bus_dout[31:0]),
    .data_out(fms_data_out[31:0]),
    .data_out(fms_dout[31:0]),
    .wt(fms_wt),
    .ack(fms_ack),
    .next(dac_next),
    .next(dac_next),
    .sample_l(dac_sample_l[15:0]),
    .sample_l(dac_sample_l[15:0]),
    .sample_r(dac_sample_r[15:0])
    .sample_r(dac_sample_r[15:0])
  );
  );
 
 
  dac dac1(
  dac dac_1(
    .clk(clk),
    .clk(clk),
    .reset(reset),
    .rst(rst),
    .sample_l(dac_sample_l[15:0]),
    .sample_l(dac_sample_l[15:0]),
    .sample_r(dac_sample_r[15:0]),
    .sample_r(dac_sample_r[15:0]),
    .next(dac_next),
    .next(dac_next),
    .mclk(dac_mclk),
    .mclk(dac_mclk),
    .sclk(dac_sclk),
    .sclk(dac_sclk),
    .lrck(dac_lrck),
    .lrck(dac_lrck),
    .sdti(dac_sdti)
    .sdti(dac_sdti)
  );
  );
 
 
  assign pbus_a[4:3] = 2'b00;
  assign slot1_cs_n = 1'b1;
  assign slot1_cs_n = 1;
  assign slot2_cs_n = 1'b1;
  assign slot2_cs_n = 1;
  assign ether_cs_n = 1'b1;
  assign ether_cs_n = 1;
 
 
  bio bio_1(
  bio bio1(
    .clk(clk),
    .clk(clk),
    .rst(rst),
    .reset(reset),
    .stb(bio_stb),
    .en(bio_en),
    .we(bus_we),
    .wr(bio_wr),
    .addr(bus_addr[2]),
    .addr(bio_addr),
    .data_in(bus_dout[31:0]),
    .data_in(bio_data_in[31:0]),
    .data_out(bio_dout[31:0]),
    .data_out(bio_data_out[31:0]),
    .ack(bio_ack),
    .wt(bio_wt),
 
    .sw1_1(flash_a[19]),
    .sw1_1(flash_a[19]),
    .sw1_2(flash_a[18]),
    .sw1_2(flash_a[18]),
    .sw1_3(sw1_3),
    .sw1_3(sw1_3),
    .sw1_4(sw1_4),
    .sw1_4(sw1_4),
    .sw2_n(sw2_n),
    .sw2_n(sw2_n),
    .sw3_n(sw3_n)
    .sw3_n(sw3_n)
  );
  );
 
 
 
  //--------------------------------------
 
  // address decoder
 
  //--------------------------------------
 
 
 
  // RAM: architectural limit  = 512 MB
 
  //      implementation limit =  32 MB
 
  assign ram_stb =
 
    (bus_stb == 1 && bus_addr[31:29] == 3'b000
 
                  && bus_addr[28:25] == 4'b0000) ? 1 : 0;
 
 
 
  // ROM: architectural limit  = 256 MB
 
  //      implementation limit =   2 MB
 
  assign rom_stb =
 
    (bus_stb == 1 && bus_addr[31:28] == 4'b0010
 
                  && bus_addr[27:21] == 7'b0000000) ? 1 : 0;
 
 
 
  // I/O: architectural limit  = 256 MB
 
  assign i_o_stb =
 
    (bus_stb == 1 && bus_addr[31:28] == 4'b0011) ? 1 : 0;
 
  assign tmr0_stb =
 
    (i_o_stb == 1 && bus_addr[27:20] == 8'h00
 
                  && bus_addr[19:12] == 8'h00) ? 1 : 0;
 
  assign tmr1_stb =
 
    (i_o_stb == 1 && bus_addr[27:20] == 8'h00
 
                  && bus_addr[19:12] == 8'h01) ? 1 : 0;
 
  assign dsp_stb =
 
    (i_o_stb == 1 && bus_addr[27:20] == 8'h01) ? 1 : 0;
 
  assign kbd_stb =
 
    (i_o_stb == 1 && bus_addr[27:20] == 8'h02) ? 1 : 0;
 
  assign ser0_stb =
 
    (i_o_stb == 1 && bus_addr[27:20] == 8'h03
 
                  && bus_addr[19:12] == 8'h00) ? 1 : 0;
 
  assign ser1_stb =
 
    (i_o_stb == 1 && bus_addr[27:20] == 8'h03
 
                  && bus_addr[19:12] == 8'h01) ? 1 : 0;
 
  assign dsk_stb =
 
    (i_o_stb == 1 && bus_addr[27:20] == 8'h04) ? 1 : 0;
 
  assign fms_stb =
 
    (i_o_stb == 1 && bus_addr[27:20] == 8'h05
 
                  && bus_addr[19:12] == 8'h00) ? 1 : 0;
 
  assign bio_stb =
 
    (i_o_stb == 1 && bus_addr[27:20] == 8'h10
 
                  && bus_addr[19:12] == 8'h00) ? 1 : 0;
 
 
 
  //--------------------------------------
 
  // data and acknowledge multiplexers
 
  //--------------------------------------
 
 
 
  assign bus_din[31:0] =
 
    (ram_stb == 1)  ? ram_dout[31:0] :
 
    (rom_stb == 1)  ? rom_dout[31:0] :
 
    (tmr0_stb == 1) ? tmr0_dout[31:0] :
 
    (tmr1_stb == 1) ? tmr1_dout[31:0] :
 
    (dsp_stb == 1)  ? { 16'h0000, dsp_dout[15:0] } :
 
    (kbd_stb == 1)  ? { 24'h000000, kbd_dout[7:0] } :
 
    (ser0_stb == 1) ? { 24'h000000, ser0_dout[7:0] } :
 
    (ser1_stb == 1) ? { 24'h000000, ser1_dout[7:0] } :
 
    (dsk_stb == 1)  ? dsk_dout[31:0] :
 
    (fms_stb == 1)  ? fms_dout[31:0] :
 
    (bio_stb == 1)  ? bio_dout[31:0] :
 
    32'h00000000;
 
 
 
  assign bus_ack =
 
    (ram_stb == 1)  ? ram_ack :
 
    (rom_stb == 1)  ? rom_ack :
 
    (tmr0_stb == 1) ? tmr0_ack :
 
    (tmr1_stb == 1) ? tmr1_ack :
 
    (dsp_stb == 1)  ? dsp_ack :
 
    (kbd_stb == 1)  ? kbd_ack :
 
    (ser0_stb == 1) ? ser0_ack :
 
    (ser1_stb == 1) ? ser1_ack :
 
    (dsk_stb == 1)  ? dsk_ack :
 
    (fms_stb == 1)  ? fms_ack :
 
    (bio_stb == 1)  ? bio_ack :
 
    0;
 
 
 
  //--------------------------------------
 
  // bus interrupt request assignments
 
  //--------------------------------------
 
 
 
  assign bus_irq[15] = tmr1_irq;
 
  assign bus_irq[14] = tmr0_irq;
 
  assign bus_irq[13] = 0;
 
  assign bus_irq[12] = 0;
 
  assign bus_irq[11] = 0;
 
  assign bus_irq[10] = 0;
 
  assign bus_irq[ 9] = 0;
 
  assign bus_irq[ 8] = dsk_irq;
 
  assign bus_irq[ 7] = 0;
 
  assign bus_irq[ 6] = 0;
 
  assign bus_irq[ 5] = 0;
 
  assign bus_irq[ 4] = kbd_irq;
 
  assign bus_irq[ 3] = ser1_irq_r;
 
  assign bus_irq[ 2] = ser1_irq_t;
 
  assign bus_irq[ 1] = ser0_irq_r;
 
  assign bus_irq[ 0] = ser0_irq_t;
 
 
endmodule
endmodule
 
 
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.