URL
https://opencores.org/ocsvn/altor32/altor32/trunk
Subversion Repositories altor32
[/] [altor32/] [trunk/] [rtl/] [cpu/] [altor32_ram_sp.v] - Rev 29
Go to most recent revision | Compare with Previous | Blame | View Log
//----------------------------------------------------------------- // AltOR32 // Alternative Lightweight OpenRisc // V2.0 // Ultra-Embedded.com // Copyright 2011 - 2013 // // Email: admin@ultra-embedded.com // // License: LGPL //----------------------------------------------------------------- // // Copyright (C) 2011 - 2013 Ultra-Embedded.com // // This source file may be used and distributed without // restriction provided that this copyright statement is not // removed from the file and that any derivative work contains // the original copyright notice and the associated disclaimer. // // This source file is free software; you can redistribute it // and/or modify it under the terms of the GNU Lesser General // Public License as published by the Free Software Foundation; // either version 2.1 of the License, or (at your option) any // later version. // // This source is distributed in the hope that it will be // useful, but WITHOUT ANY WARRANTY; without even the implied // warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR // PURPOSE. See the GNU Lesser General Public License for more // details. // // You should have received a copy of the GNU Lesser General // Public License along with this source; if not, write to the // Free Software Foundation, Inc., 59 Temple Place, Suite 330, // Boston, MA 02111-1307 USA //----------------------------------------------------------------- //----------------------------------------------------------------- // Module: altor32_ram_sp - Single port RAM (used in cache) //----------------------------------------------------------------- module altor32_ram_sp ( input clk_i /*verilator public*/, output [(WIDTH - 1):0] dat_o /*verilator public*/, input [(WIDTH - 1):0] dat_i /*verilator public*/, input [(SIZE - 1):0] adr_i /*verilator public*/, input wr_i /*verilator public*/ ); //----------------------------------------------------------------- // Params //----------------------------------------------------------------- parameter [31:0] WIDTH = 8; parameter [31:0] SIZE = 14; //----------------------------------------------------------------- // Registers //----------------------------------------------------------------- reg [(WIDTH - 1):0] ram [((2<< (SIZE-1)) - 1):0] /*verilator public*/; reg [(SIZE - 1):0] rd_addr; //----------------------------------------------------------------- // Processes //----------------------------------------------------------------- always @ (posedge clk_i) begin if (wr_i == 1'b1) ram[adr_i] <= dat_i; rd_addr <= adr_i; end //------------------------------------------------------------------- // Combinatorial //------------------------------------------------------------------- assign dat_o = ram[rd_addr]; endmodule
Go to most recent revision | Compare with Previous | Blame | View Log