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

Subversion Repositories versatile_fifo

[/] [versatile_fifo/] [trunk/] [rtl/] [verilog/] [versatile_fifo_dual_port_ram_sc_dw.v] - Diff between revs 26 and 32

Only display areas with differences | Details | Blame | View Log

Rev 26 Rev 32
// true dual port RAM, sync
// true dual port RAM, sync
 
 
`ifdef ACTEL
`ifdef ACTEL
        `define SYN /*synthesis syn_ramstyle = "no_rw_check"*/
        `define SYN /*synthesis syn_ramstyle = "no_rw_check"*/
`endif
`endif
module vfifo_dual_port_ram_sc_dw
module vfifo_dual_port_ram_sc_dw
  (
  (
   d_a,
   d_a,
   q_a,
   q_a,
   adr_a,
   adr_a,
   we_a,
   we_a,
   q_b,
   q_b,
   adr_b,
   adr_b,
   d_b,
   d_b,
   we_b,
   we_b,
   clk
   clk
   );
   );
   parameter DATA_WIDTH = 32;
   parameter DATA_WIDTH = 32;
   parameter ADDR_WIDTH = 8;
   parameter ADDR_WIDTH = 8;
   input [(DATA_WIDTH-1):0]      d_a;
   input [(DATA_WIDTH-1):0]      d_a;
   input [(ADDR_WIDTH-1):0]       adr_a;
   input [(ADDR_WIDTH-1):0]       adr_a;
   input [(ADDR_WIDTH-1):0]       adr_b;
   input [(ADDR_WIDTH-1):0]       adr_b;
   input                         we_a;
   input                         we_a;
   output [(DATA_WIDTH-1):0]      q_b;
   output [(DATA_WIDTH-1):0]      q_b;
   input [(DATA_WIDTH-1):0]       d_b;
   input [(DATA_WIDTH-1):0]       d_b;
   output reg [(DATA_WIDTH-1):0] q_a;
   output reg [(DATA_WIDTH-1):0] q_a;
   input                         we_b;
   input                         we_b;
   input                         clk;
   input                         clk;
   reg [(DATA_WIDTH-1):0]         q_b;
   reg [(DATA_WIDTH-1):0]         q_b;
   reg [DATA_WIDTH-1:0] ram [(1<<ADDR_WIDTH)-1:0] ;
   reg [DATA_WIDTH-1:0] ram [(1<<ADDR_WIDTH)-1:0] `SYN;
   always @ (posedge clk)
   always @ (posedge clk)
     begin
     begin
        q_a <= ram[adr_a];
        q_a <= ram[adr_a];
        if (we_a)
        if (we_a)
             ram[adr_a] <= d_a;
             ram[adr_a] <= d_a;
     end
     end
   always @ (posedge clk)
   always @ (posedge clk)
     begin
     begin
          q_b <= ram[adr_b];
          q_b <= ram[adr_b];
        if (we_b)
        if (we_b)
          ram[adr_b] <= d_b;
          ram[adr_b] <= d_b;
     end
     end
endmodule
endmodule
 
 

powered by: WebSVN 2.1.0

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