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

Subversion Repositories eco32

[/] [eco32/] [trunk/] [fpga/] [experiments/] [memctrl/] [fpga/] [memctrl-2/] [src/] [toplevel/] [memtest.v] - Blame information for rev 319

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 319 hellwig
//
2
// memtest.v -- top-level for memory test
3
//
4
 
5
 
6
`timescale 1ns/10ps
7
`default_nettype none
8
 
9
 
10
module memtest(clk_in,
11
               rst_inout_n,
12
               sdram_clk,
13
               sdram_fb,
14
               sdram_cke,
15
               sdram_cs_n,
16
               sdram_ras_n,
17
               sdram_cas_n,
18
               sdram_we_n,
19
               sdram_ba,
20
               sdram_a,
21
               sdram_udqm,
22
               sdram_ldqm,
23
               sdram_dq,
24
               ssl);
25
 
26
    // clock and reset
27
    input clk_in;
28
    inout rst_inout_n;
29
    // SDRAM
30
    output sdram_clk;
31
    input sdram_fb;
32
    output sdram_cke;
33
    output sdram_cs_n;
34
    output sdram_ras_n;
35
    output sdram_cas_n;
36
    output sdram_we_n;
37
    output [1:0] sdram_ba;
38
    output [12:0] sdram_a;
39
    output sdram_udqm;
40
    output sdram_ldqm;
41
    inout [15:0] sdram_dq;
42
    // 7 segment LED output
43
    output [6:0] ssl;
44
 
45
  // clk_rst
46
  wire clk_ok;
47
  wire clk2;
48
  wire clk;
49
  wire rst;
50
  // ramctrl
51
  wire inst_stb;
52
  wire [25:0] inst_addr;
53
  wire [63:0] inst_to_test;
54
  wire inst_ack;
55
  wire inst_timeout;
56
  wire data_stb;
57
  wire data_we;
58
  wire [25:0] data_addr;
59
  wire [63:0] data_to_ram;
60
  wire [63:0] data_to_test;
61
  wire data_ack;
62
  wire data_timeout;
63
  // ramtest
64
  wire test_ended;
65
  wire test_error;
66
  reg [25:0] heartbeat2;
67
  reg [25:0] heartbeat;
68
 
69
  //
70
  // module instances
71
  //
72
 
73
  clk_rst clk_rst_1(
74
    .clk_in(clk_in),
75
    .rst_inout_n(rst_inout_n),
76
    .sdram_clk(sdram_clk),
77
    .sdram_fb(sdram_fb),
78
    .clk_ok(clk_ok),
79
    .clk2(clk2),
80
    .clk(clk),
81
    .rst(rst)
82
  );
83
 
84
  ramctrl ramctrl_1(
85
    .clk_ok(clk_ok),
86
    .clk(clk2),
87
    .inst_stb(inst_stb),
88
    .inst_addr({ test_ended ^ inst_addr[25], inst_addr[24:0] }),
89
    .inst_dout(inst_to_test[63:0]),
90
    .inst_ack(inst_ack),
91
    .inst_timeout(inst_timeout),
92
    .data_stb(data_stb),
93
    .data_we(data_we),
94
    .data_addr({ test_ended ^ data_addr[25], data_addr[24:0] }),
95
    .data_din(data_to_ram[63:0]),
96
    .data_dout(data_to_test[63:0]),
97
    .data_ack(data_ack),
98
    .data_timeout(data_timeout),
99
    .sdram_cke(sdram_cke),
100
    .sdram_cs_n(sdram_cs_n),
101
    .sdram_ras_n(sdram_ras_n),
102
    .sdram_cas_n(sdram_cas_n),
103
    .sdram_we_n(sdram_we_n),
104
    .sdram_ba(sdram_ba[1:0]),
105
    .sdram_a(sdram_a[12:0]),
106
    .sdram_udqm(sdram_udqm),
107
    .sdram_ldqm(sdram_ldqm),
108
    .sdram_dq(sdram_dq[15:0])
109
  );
110
 
111
  ramtest ramtest_1(
112
    .clk(clk),
113
    .rst(rst),
114
    .inst_stb(inst_stb),
115
    .inst_addr(inst_addr[25:0]),
116
    .inst_din(inst_to_test[63:0]),
117
    .inst_ack(inst_ack | inst_timeout),
118
    .data_stb(data_stb),
119
    .data_we(data_we),
120
    .data_addr(data_addr[25:0]),
121
    .data_dout(data_to_ram[63:0]),
122
    .data_din(data_to_test[63:0]),
123
    .data_ack(data_ack | data_timeout),
124
    .test_ended(test_ended),
125
    .test_error(test_error)
126
  );
127
 
128
  always @(posedge clk2) begin
129
    heartbeat2 <= heartbeat2 + 1;
130
  end
131
 
132
  always @(posedge clk) begin
133
    heartbeat <= heartbeat + 1;
134
  end
135
 
136
  assign ssl[0] = heartbeat2[25];
137
  assign ssl[1] = clk_ok;
138
  assign ssl[2] = rst;
139
  assign ssl[3] = heartbeat[25];
140
  assign ssl[4] = test_ended;
141
  assign ssl[5] = test_error;
142
  assign ssl[6] = 0;
143
 
144
endmodule

powered by: WebSVN 2.1.0

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