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

Subversion Repositories yacc

[/] [yacc/] [trunk/] [syn/] [xilinx/] [ram32x32_xilinx.v] - Blame information for rev 4

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 tak.sugawa
//Jan.7.2005 Register File on Xilinx 
2
// using two dual port ram
3
module ram32x32_xilinx (
4
        data,
5
        wraddress,
6
        rdaddress_a,
7
        rdaddress_b,
8
        wren,
9
        clock,
10
        qa,
11
        qb);
12
 
13
        input   [31:0]  data;
14
        input   [4:0]  wraddress;
15
        input   [4:0]  rdaddress_a;
16
        input   [4:0]  rdaddress_b;
17
        input     wren;
18
        input     clock;
19
        output  [31:0]  qa;
20
        output  [31:0]  qb;
21
 
22
 
23
 
24
 ram32x32  ram1(//write port /read porta
25
        .addra(wraddress),
26
        .addrb(rdaddress_a),
27
        .clka(clock),
28
        .clkb(clock),
29
        .dina(data),
30
        .dinb(32'h0000_0000),
31
        .douta(),
32
        .doutb(qa),
33
        .wea(wren),
34
        .web(1'b0));    // synthesis black_box
35
 
36
ram32x32  ram2(//write port /read portb
37
        .addra(wraddress),
38
        .addrb(rdaddress_b),
39
        .clka(clock),
40
        .clkb(clock),
41
        .dina(data),
42
        .dinb(32'h0000_0000),
43
        .douta(),
44
        .doutb(qb),
45
        .wea(wren),
46
        .web(1'b0));    // synthesis black_box
47
 
48
 
49
 
50
/*  There is no specific 3port RAM on Xilinx.
51
      Following description is unavailable because of too many Slices required. Jan.7.2005
52
.
53
        reg [31:0] regfile [0:31];
54
        reg [4:0] addr_a,addr_b,w_addr;
55
        reg [31:0] data_port;
56
        integer i;
57
 
58
        always @(posedge clock) begin
59
                addr_a<=rdaddress_a;
60
                addr_b<=rdaddress_b;
61
 
62
 
63
        end
64
 
65
 
66
 
67
 
68
 
69
        always @ (posedge clock) begin
70
                  if (sync_reset)       for (i=0;i<32;i=i+1)    regfile[i]<=0;
71
                  else if (wren)                regfile[wraddress] <=data;
72
        end
73
 
74
 
75
 
76
 
77
        assign qa=regfile[addr_a];
78
        assign qb=regfile[addr_b];
79
 
80
 
81
*/
82
 
83
 
84
 
85
 
86
endmodule

powered by: WebSVN 2.1.0

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