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

Subversion Repositories eco32

[/] [eco32/] [tags/] [eco32-0.23/] [fpga/] [src/] [busctrl/] [busctrl.v] - Diff between revs 27 and 67

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 27 Rev 67
Line 1... Line 1...
module busctrl(cpu_en, cpu_wr, cpu_size, cpu_addr, cpu_data_out, cpu_data_in, cpu_wt,
//
               ram_en, ram_wr, ram_size, ram_addr, ram_data_in, ram_data_out, ram_wt,
// busctrl.v -- bus controller
               rom_en, rom_wr, rom_size, rom_addr, rom_data_out, rom_wt,
//
               tmr_en, tmr_wr, tmr_addr2, tmr_data_in, tmr_data_out, tmr_wt,
 
               dsp_en, dsp_wr, dsp_addr, dsp_data_in, dsp_data_out, dsp_wt,
module busctrl(cpu_en, cpu_wr, cpu_size, cpu_addr,
               kbd_en, kbd_wr, kbd_addr2, kbd_data_in, kbd_data_out, kbd_wt,
               cpu_data_out, cpu_data_in, cpu_wt,
               ser0_en, ser0_wr, ser0_addr, ser0_data_in, ser0_data_out, ser0_wt,
               ram_en, ram_wr, ram_size, ram_addr,
               ser1_en, ser1_wr, ser1_addr, ser1_data_in, ser1_data_out, ser1_wt,
               ram_data_in, ram_data_out, ram_wt,
               dsk_en, dsk_wr, dsk_addr, dsk_data_in, dsk_data_out, dsk_wt);
               rom_en, rom_wr, rom_size, rom_addr,
 
               rom_data_out, rom_wt,
 
               tmr_en, tmr_wr, tmr_addr,
 
               tmr_data_in, tmr_data_out, tmr_wt,
 
               dsp_en, dsp_wr, dsp_addr,
 
               dsp_data_in, dsp_data_out, dsp_wt,
 
               kbd_en, kbd_wr, kbd_addr,
 
               kbd_data_in, kbd_data_out, kbd_wt,
 
               ser0_en, ser0_wr, ser0_addr,
 
               ser0_data_in, ser0_data_out, ser0_wt,
 
               ser1_en, ser1_wr, ser1_addr,
 
               ser1_data_in, ser1_data_out, ser1_wt,
 
               dsk_en, dsk_wr, dsk_addr,
 
               dsk_data_in, dsk_data_out, dsk_wt);
    // cpu
    // cpu
    input cpu_en;
    input cpu_en;
    input cpu_wr;
    input cpu_wr;
    input [1:0] cpu_size;
    input [1:0] cpu_size;
    input [31:0] cpu_addr;
    input [31:0] cpu_addr;
Line 31... Line 44...
    input [31:0] rom_data_out;
    input [31:0] rom_data_out;
    input rom_wt;
    input rom_wt;
    // tmr
    // tmr
    output tmr_en;
    output tmr_en;
    output tmr_wr;
    output tmr_wr;
    output tmr_addr2;
    output tmr_addr;
    output [31:0] tmr_data_in;
    output [31:0] tmr_data_in;
    input [31:0] tmr_data_out;
    input [31:0] tmr_data_out;
    input tmr_wt;
    input tmr_wt;
    // dsp
    // dsp
    output dsp_en;
    output dsp_en;
Line 45... Line 58...
    input [15:0] dsp_data_out;
    input [15:0] dsp_data_out;
    input dsp_wt;
    input dsp_wt;
    // kbd
    // kbd
    output kbd_en;
    output kbd_en;
    output kbd_wr;
    output kbd_wr;
    output kbd_addr2;
    output kbd_addr;
    output [7:0] kbd_data_in;
    output [7:0] kbd_data_in;
    input [7:0] kbd_data_out;
    input [7:0] kbd_data_out;
    input kbd_wt;
    input kbd_wt;
    // ser0
    // ser0
    output ser0_en;
    output ser0_en;
Line 73... Line 86...
    input [31:0] dsk_data_out;
    input [31:0] dsk_data_out;
    input dsk_wt;
    input dsk_wt;
 
 
  wire i_o_en;
  wire i_o_en;
 
 
  // decoder
  //
 
  // address decoder
 
  //
 
  // RAM: architectural limit = 512 MB
 
  //      board limit         =  32 MB
  assign ram_en =
  assign ram_en =
    (cpu_en == 1 && cpu_addr[31:29] == 3'b000
    (cpu_en == 1 && cpu_addr[31:29] == 3'b000
                 && cpu_addr[28:25] == 4'b0000) ? 1 : 0;
                 && cpu_addr[28:25] == 4'b0000) ? 1 : 0;
 
  // ROM: architectural limit = 256 MB
 
  //      board limit         =   2 MB
  assign rom_en =
  assign rom_en =
    (cpu_en == 1 && cpu_addr[31:28] == 4'b0010
    (cpu_en == 1 && cpu_addr[31:28] == 4'b0010
                 && cpu_addr[27:21] == 7'b0000000) ? 1 : 0;
                 && cpu_addr[27:21] == 7'b0000000) ? 1 : 0;
 
  // I/O: architectural limit = 256 MB
  assign i_o_en =
  assign i_o_en =
    (cpu_en == 1 && cpu_addr[31:28] == 4'b0011) ? 1 : 0;
    (cpu_en == 1 && cpu_addr[31:28] == 4'b0011) ? 1 : 0;
  assign tmr_en =
  assign tmr_en =
    (i_o_en == 1 && cpu_addr[27:20] == 8'h00) ? 1 : 0;
    (i_o_en == 1 && cpu_addr[27:20] == 8'h00) ? 1 : 0;
  assign dsp_en =
  assign dsp_en =
    (i_o_en == 1 && cpu_addr[27:20] == 8'h01) ? 1 : 0;
    (i_o_en == 1 && cpu_addr[27:20] == 8'h01) ? 1 : 0;
  assign kbd_en =
  assign kbd_en =
    (i_o_en == 1 && cpu_addr[27:20] == 8'h02) ? 1 : 0;
    (i_o_en == 1 && cpu_addr[27:20] == 8'h02) ? 1 : 0;
  assign ser0_en =
  assign ser0_en =
    (i_o_en == 1 && cpu_addr[27:20] == 8'h03
    (i_o_en == 1 && cpu_addr[27:20] == 8'h03
                 && cpu_addr[ 5: 4] == 2'b00) ? 1 : 0;
                 && cpu_addr[19:12] == 8'h00) ? 1 : 0;
  assign ser1_en =
  assign ser1_en =
    (i_o_en == 1 && cpu_addr[27:20] == 8'h03
    (i_o_en == 1 && cpu_addr[27:20] == 8'h03
                 && cpu_addr[ 5: 4] == 2'b01) ? 1 : 0;
                 && cpu_addr[19:12] == 8'h01) ? 1 : 0;
  assign dsk_en =
  assign dsk_en =
    (i_o_en == 1 && cpu_addr[27:20] == 8'h04) ? 1 : 0;
    (i_o_en == 1 && cpu_addr[27:20] == 8'h04) ? 1 : 0;
 
 
  // to cpu
  // to cpu
  assign cpu_wt =
  assign cpu_wt =
Line 132... Line 152...
  assign rom_size[1:0] = cpu_size[1:0];
  assign rom_size[1:0] = cpu_size[1:0];
  assign rom_addr[20:0] = cpu_addr[20:0];
  assign rom_addr[20:0] = cpu_addr[20:0];
 
 
  // to tmr
  // to tmr
  assign tmr_wr = cpu_wr;
  assign tmr_wr = cpu_wr;
  assign tmr_addr2 = cpu_addr[2];
  assign tmr_addr = cpu_addr[2];
  assign tmr_data_in[31:0] = cpu_data_out[31:0];
  assign tmr_data_in[31:0] = cpu_data_out[31:0];
 
 
  // to dsp
  // to dsp
  assign dsp_wr = cpu_wr;
  assign dsp_wr = cpu_wr;
  assign dsp_addr[13:2] = cpu_addr[13:2];
  assign dsp_addr[13:2] = cpu_addr[13:2];
  assign dsp_data_in[15:0] = cpu_data_out[15:0];
  assign dsp_data_in[15:0] = cpu_data_out[15:0];
 
 
  // to kbd
  // to kbd
  assign kbd_wr = cpu_wr;
  assign kbd_wr = cpu_wr;
  assign kbd_addr2 = cpu_addr[2];
  assign kbd_addr = cpu_addr[2];
  assign kbd_data_in[7:0] = cpu_data_out[7:0];
  assign kbd_data_in[7:0] = cpu_data_out[7:0];
 
 
  // to ser0
  // to ser0
  assign ser0_wr = cpu_wr;
  assign ser0_wr = cpu_wr;
  assign ser0_addr[3:2] = cpu_addr[3:2];
  assign ser0_addr[3:2] = cpu_addr[3:2];

powered by: WebSVN 2.1.0

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