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

Subversion Repositories ram_wb

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /ram_wb
    from Rev 1 to Rev 2
    Reverse comparison

Rev 1 → Rev 2

/trunk/rtl/verilog/ram_wb_defines.v
0,0 → 1,3
`define RAM_WB_ADR_WIDTH 12
`define RAM_WB_MEM_SIZE 4096
`define RAM_WB_DAT_SIZE 32
trunk/rtl/verilog/ram_wb_defines.v Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/rtl/verilog/RAM_wb_sc_dw.v =================================================================== --- trunk/rtl/verilog/RAM_wb_sc_dw.v (nonexistent) +++ trunk/rtl/verilog/RAM_wb_sc_dw.v (revision 2) @@ -0,0 +1,40 @@ +module RAM_wb_sc_dw + ( + d_a, + q_a, + adr_a, + we_a, + q_b, + adr_b, + d_b, + we_b, + clk + ); + parameter DATA_WIDTH = 32; + parameter ADDR_WIDTH = 11; + parameter MEM_SIZE = 2048; + + input [(DATA_WIDTH-1):0] d_a; + input [(ADDR_WIDTH-1):0] adr_a; + input [(ADDR_WIDTH-1):0] adr_b; + input we_a; + output [(DATA_WIDTH-1):0] q_b; + input [(DATA_WIDTH-1):0] d_b; + output reg [(DATA_WIDTH-1):0] q_a; + input we_b; + input clk; + reg [(DATA_WIDTH-1):0] q_b; + reg [DATA_WIDTH-1:0] ram [0:MEM_SIZE - 1] ; + always @ (posedge clk) + begin + q_a <= ram[adr_a]; + if (we_a) + ram[adr_a] <= d_a; + end + always @ (posedge clk) + begin + q_b <= ram[adr_b]; + if (we_b) + ram[adr_b] <= d_b; + end +endmodule
trunk/rtl/verilog/RAM_wb_sc_dw.v Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/rtl/verilog/RAM_wb.v =================================================================== --- trunk/rtl/verilog/RAM_wb.v (nonexistent) +++ trunk/rtl/verilog/RAM_wb.v (revision 2) @@ -0,0 +1,64 @@ + + +module RAM_wb ( dat_i, dat_o, adr_i, we_i, sel_i, cyc_i, stb_i, ack_o, cti_i, clk_i, rst_i); + + parameter ram_wb_adr_width = `RAM_WB_ADR_WIDTH; + parameter ram_wb_mem_size = `RAM_WB_MEM_SIZE; + parameter ram_wb_dat_width = `RAM_WB_DAT_WIDTH; + + // wishbone signals + input [31:0] dat_i; + output [31:0] dat_o; + input [ram_wb_adr_width-1:2] adr_i; + input we_i; + input [3:0] sel_i; + input cyc_i; + input stb_i; + output reg ack_o; + input [2:0] cti_i; + + // clock + input clk_i; + // async reset + input rst_i; + + wire [31:0] wr_data; + + // mux for data to ram + assign wr_data[31:24] = sel_i[3] ? dat_i[31:24] : dat_o[31:24]; + assign wr_data[23:16] = sel_i[2] ? dat_i[23:16] : dat_o[23:16]; + assign wr_data[15: 8] = sel_i[1] ? dat_i[15: 8] : dat_o[15: 8]; + assign wr_data[ 7: 0] = sel_i[0] ? dat_i[ 7: 0] : dat_o[ 7: 0]; + + + //vfifo_dual_port_ram_sc_dw + RAM_wb_sc_dw + /* # + ( + .DATA_WIDTH(32), + .ADDR_WIDTH(11) + )*/ + ram + ( + .d_a(wr_data), + .q_a(), + .adr_a(adr_i), + .we_a(we_i & ack_o), + .q_b(dat_o), + .adr_b(adr_i), + .d_b(32'h0), + .we_b(1'b0), + .clk(clk_i) + ); + + + // ack_o + always @ (posedge clk_i or posedge rst_i) + if (rst_i) + ack_o <= 1'b0; + else + ack_o <= cyc_i & stb_i & !ack_o; + +endmodule + + \ No newline at end of file
trunk/rtl/verilog/RAM_wb.v Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/rtl/verilog/ram_wb.v =================================================================== --- trunk/rtl/verilog/ram_wb.v (nonexistent) +++ trunk/rtl/verilog/ram_wb.v (revision 2) @@ -0,0 +1,69 @@ + + +module RAM_wb ( dat_i, dat_o, adr_i, we_i, sel_i, cyc_i, stb_i, ack_o, cti_i, clk_i, rst_i); + + parameter ram_wb_adr_width = `RAM_WB_ADR_WIDTH; + parameter ram_wb_mem_size = `RAM_WB_MEM_SIZE; + parameter ram_wb_dat_width = `RAM_WB_DAT_WIDTH; + + // wishbone signals + input [31:0] dat_i; + output [31:0] dat_o; + input [ram_wb_adr_width-1:2] adr_i; + input we_i; + input [3:0] sel_i; + input cyc_i; + input stb_i; + output reg ack_o; + input [2:0] cti_i; + + // clock + input clk_i; + // async reset + input rst_i; + + wire [31:0] wr_data; + + // mux for data to ram + assign wr_data[31:24] = sel_i[3] ? dat_i[31:24] : dat_o[31:24]; + assign wr_data[23:16] = sel_i[2] ? dat_i[23:16] : dat_o[23:16]; + assign wr_data[15: 8] = sel_i[1] ? dat_i[15: 8] : dat_o[15: 8]; + assign wr_data[ 7: 0] = sel_i[0] ? dat_i[ 7: 0] : dat_o[ 7: 0]; + + + //vfifo_dual_port_ram_sc_dw + ram_wb_sc_dw + /* # + ( + .DATA_WIDTH(32), + .ADDR_WIDTH(11) + )*/ + ram + ( + .d_a(wr_data), + .q_a(), + .adr_a(adr_i), + .we_a(we_i & ack_o), + .q_b(dat_o), + .adr_b(adr_i), + .d_b(32'h0), + .we_b(1'b0), + .clk(clk_i) + ); + + + // ack_o + always @ (posedge clk_i or posedge rst_i) + if (rst_i) + ack_o <= 1'b0; + else + if (!ack_o) + if (cyc_i & stb_i) + ack_o <= 1'b1; + else + if ((sel_i != 4'b1111) | (ct_i == 3'b000) | (cti_i == 3'b111)) + ack_o <= 1'b0; + +endmodule + + \ No newline at end of file
trunk/rtl/verilog/ram_wb.v Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: trunk/doc/src/block.dia =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: trunk/doc/src/block.dia =================================================================== --- trunk/doc/src/block.dia (nonexistent) +++ trunk/doc/src/block.dia (revision 2)
trunk/doc/src/block.dia Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: trunk/doc/src/RAM_wb.odt =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: trunk/doc/src/RAM_wb.odt =================================================================== --- trunk/doc/src/RAM_wb.odt (nonexistent) +++ trunk/doc/src/RAM_wb.odt (revision 2)
trunk/doc/src/RAM_wb.odt Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: trunk/doc/src/block.png =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: trunk/doc/src/block.png =================================================================== --- trunk/doc/src/block.png (nonexistent) +++ trunk/doc/src/block.png (revision 2)
trunk/doc/src/block.png Property changes : Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property

powered by: WebSVN 2.1.0

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