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

Subversion Repositories mips789

[/] [mips789/] [tags/] [arelease/] [rtl/] [verilog/] [ram_module.v] - Diff between revs 10 and 35

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

Rev 10 Rev 35
Line 1... Line 1...
`include "include.h"
/******************************************************************
/*
 *                                                                *
module mem_array
 *    Author: Liwei                                               *
    (
 *                                                                *
        input clk,
 *    This file is part of the "mips789" project.                 *
        input [31:0] pc_i,
 *    Downloaded from:                                            *
        output [31:0] ins_o,
 *    http://www.opencores.org/pdownloads.cgi/list/mips789        *
        input [3:0] wren,
 *                                                                *
        input [31:0]din,
 *    If you encountered any problem, please contact me via       *
        input [31:0]wr_addr_i,
 *    Email:mcupro@opencores.org  or mcupro@163.com               *
        input [31:0]rd_addr_i,
 *                                                                *
        output [31:0]dout
 ******************************************************************/
    );
 
    wire [29:0] rd_addr,pc,wr_addr;
 
    wire [31:0]dout_w;
module mem_array
    assign dout = dout_w;
    (
    assign rd_addr=rd_addr_i[31:2];
        input clk,
    assign wr_addr=wr_addr_i[31:2];
        input [31:0] pc_i,
    assign pc= pc_i[31:2];
        output [31:0] ins_o,
 
        input [3:0] wren,
 
        input [31:0]din,
 
        input [31:0]data_addr_i,
 `ifdef DEBUG
        output [31:0]dout
 
    );
    sim_syn_ram3 ram3 (
    wire [31:0] data_addr;
                     .data(din[31:31-7]),
    wire [31:0]dout_w;
                     .wraddress(wr_addr),
    assign dout = dout_w;
                     .rdaddress_a(pc),
    assign data_addr=data_addr_i[31:2];
                     .rdaddress_b(rd_addr),
    wire [29:0]pc= pc_i[31:2];
                     .wren(wren[3]),
 
                     .clock(clk),
    ram2048x8_3 ram3(
                     .qa(ins_o[31:31-7]),
                    .data_a(32'b0),
                     .qb(dout_w[31:31-7])
                    .wren_a(1'b0),
                 );
                    .address_a(pc),
 
                    .data_b(din[31:24]),
    sim_syn_ram2 ram2(
                    .address_b(data_addr),
                     .data(din[31-8:31-8-7]),
                    .wren_b(wren[3]),
                     .wraddress(wr_addr),
                    .clock(clk),
                     .rdaddress_a(pc),
                    .q_a(ins_o[31:24]),
                     .rdaddress_b(rd_addr),
                    .q_b(dout_w[31:24])
                     .wren(wren[2]),
                );
                     .clock(clk),
 
                     .qa(ins_o[31-8:31-8-7]),
    ram2048x8_2 ram2(
                     .qb(dout_w[31-8:31-7-8])
                    .data_a(32'b0),
                 );
                    .wren_a(1'b0),
 
                    .address_a(pc),
    sim_syn_ram1 ram1(
                    .data_b(din[23:16]),
                     .data(din[31-16:31-16-7]),
                    .address_b(data_addr),
                     .wraddress(wr_addr),
                    .wren_b(wren[2]),
                     .rdaddress_a(pc),
                    .clock(clk),
                     .rdaddress_b(rd_addr),
                    .q_a(ins_o[23:16]),
                     .wren(wren[1]),
                    .q_b(dout_w[23:16])
                     .clock(clk),
                );
                     .qa(ins_o[31-16:31-7-16]),
 
                     .qb(dout_w[31-16:31-7-16])
    ram2048x8_1 ram1(
                 );
                    .data_a(32'b0),
 
                    .wren_a(1'b0),
    sim_syn_ram0 ram0(
                    .address_a(pc),
                     .data(din[31-24:31-7-24]),
                    .data_b(din[15:8]),
                     .wraddress(wr_addr),
                    .address_b(data_addr),
                     .rdaddress_a(pc),
                    .wren_b(wren[1]),
                     .rdaddress_b(rd_addr),
                    .clock(clk),
                     .wren(wren[0]),
                    .q_a(ins_o[15:8]),
                     .clock(clk),
                    .q_b(dout_w[15:8])
                     .qa(ins_o[31-24:31-7-24]),
                );
                     .qb(dout_w[31-24:31-7-24])
 
                 );
    ram2048x8_0 ram0(
 
                    .data_a(32'b0),
 
                    .wren_a(1'b0),
 `else
                    .address_a(pc),
    ram4096x8_3 ram3(
                    .data_b(din[7:0]),
                    .data_a(32'b0),
                    .address_b(data_addr),
                    .wren_a(1'b0),
                    .wren_b(wren[0]),
                    .address_a(32'b0),
                    .clock(clk),
                    .data_b(din[31:24]),
                    .q_a(ins_o[7:0]),
                    .address_b(wr_addr),
                    .q_b(dout_w[7:0])
                    .wren_b(wren[3]),
                );
                    .clock(clk),
 
                    .q_a(ins_o[31:24]),
 
                    .q_b(dout_w[31:24])
 
                );
 
 
 
    ram4096x8_2 ram2(
 
                    .data_a(32'b0),
 
                    .wren_a(1'b0),
 
                    .address_a(32'b0),
 
                    .data_b(din[23:16]),
 
                    .address_b(wr_addr),
 
                    .wren_b(wren[2]),
 
                    .clock(clk),
 
                    .q_a(ins_o[23:16]),
 
                    .q_b(dout_w[23:16])
 
                );
 
 
 
    ram4096x8_1 ram1(
 
                    .data_a(32'b0),
 
                    .wren_a(1'b0),
 
                    .address_a(32'b0),
 
                    .data_b(din[15:8]),
 
                    .address_b(wr_addr),
 
                    .wren_b(wren[1]),
 
                    .clock(clk),
 
                    .q_a(ins_o[15:8]),
 
                    .q_b(dout_w[15:8])
 
                );
 
 
 
    ram4096x8_0 ram0(
 
                    .data_a(32'b0),
 
                    .wren_a(1'b0),
 
                    .address_a(32'b0),
 
                    .data_b(din[7:0]),
 
                    .address_b(wr_addr),
 
                    .wren_b(wren[0]),
 
                    .clock(clk),
 
                    .q_a(ins_o[7:0]),
 
                    .q_b(dout_w[7:0])
 
                );
 
// `endif
 
 
 
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.