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

Subversion Repositories openmsp430

[/] [openmsp430/] [trunk/] [core/] [bench/] [verilog/] [ram.v] - Diff between revs 23 and 72

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

Rev 23 Rev 72
Line 29... Line 29...
//
//
// *Author(s):
// *Author(s):
//              - Olivier Girard,    olgirard@gmail.com
//              - Olivier Girard,    olgirard@gmail.com
//
//
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
// $Rev: 23 $
// $Rev: 72 $
// $LastChangedBy: olivier.girard $
// $LastChangedBy: olivier.girard $
// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
// $LastChangedDate: 2010-08-01 20:54:37 +0200 (Sun, 01 Aug 2010) $
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
`include "timescale.v"
`include "timescale.v"
`include "openMSP430_defines.v"
`include "openMSP430_defines.v"
 
 
module ram (
module ram (
Line 51... Line 51...
    ram_wen                        // RAM write enable (low active)
    ram_wen                        // RAM write enable (low active)
);
);
 
 
// PARAMETERs
// PARAMETERs
//============
//============
parameter ADDR_MSB   =  6;
parameter ADDR_MSB   =  6;         // MSB of the address bus
 
parameter MEM_SIZE   =  256;       // Memory size in bytes
 
 
// OUTPUTs
// OUTPUTs
//============
//============
output      [15:0] ram_dout;       // RAM data output
output      [15:0] ram_dout;       // RAM data output
 
 
Line 69... Line 70...
 
 
 
 
// RAM
// RAM
//============
//============
 
 
reg         [15:0] mem [(1<<(ADDR_MSB+1))-1:0];
reg         [15:0] mem [(MEM_SIZE/2)-1:0];
reg   [ADDR_MSB:0] ram_addr_reg;
reg   [ADDR_MSB:0] ram_addr_reg;
 
 
wire        [15:0] mem_val = mem[ram_addr];
wire        [15:0] mem_val = mem[ram_addr];
 
 
 
 
always @(posedge ram_clk)
always @(posedge ram_clk)
  if (~ram_cen)
  if (~ram_cen & ram_addr<(MEM_SIZE/2))
    begin
    begin
      if      (ram_wen==2'b00) mem[ram_addr] <= ram_din;
      if      (ram_wen==2'b00) mem[ram_addr] <= ram_din;
      else if (ram_wen==2'b01) mem[ram_addr] <= {ram_din[15:8], mem_val[7:0]};
      else if (ram_wen==2'b01) mem[ram_addr] <= {ram_din[15:8], mem_val[7:0]};
      else if (ram_wen==2'b10) mem[ram_addr] <= {mem_val[15:8], ram_din[7:0]};
      else if (ram_wen==2'b10) mem[ram_addr] <= {mem_val[15:8], ram_din[7:0]};
      ram_addr_reg <= ram_addr;
      ram_addr_reg <= ram_addr;

powered by: WebSVN 2.1.0

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