source: XOpenSparcT1/trunk/sim/tb_top.v @ 17

Revision 17, 5.7 KB checked in by pntsvt00, 13 years ago (diff)

la simulazione legge dalla flash

Line 
1`timescale 1ns / 1ps
2
3module tb_top;
4   
5   parameter CLK_WIDTH             = 3;      // # of clock outputs
6   parameter CS_NUM                = 1;      // # of separate memory chip selects
7   parameter CS_WIDTH              = 1;      // # of total memory chip selects
8   parameter DQ_WIDTH              = 64;      // # of data width
9   parameter DQS_WIDTH             = 8;      // # of DQS strobes
10   parameter ODT_WIDTH             = 1;      // # of memory on-die term enables
11
12   parameter CLK_PERIOD            = 5000;   // Core/Mem clk period (in ps)
13   localparam real CLK_PERIOD_NS   = CLK_PERIOD / 1000.0;
14   localparam real TCYC_200           = 5.0;
15   parameter RST_ACT_LOW           = 1;      // =1 for active low reset, =0 for active high
16
17
18
19   genvar                        j;
20   genvar                        i;
21   reg                           clk_in;
22   wire                          clk_in_n;
23   wire                          clk_in_p;
24   reg                           sys_clk200;
25   wire                          clk200_n;
26   wire                          clk200_p;
27   reg                           sys_rst_n;
28   wire                          sys_rst_out;
29   
30   wire [DQ_WIDTH-1:0]          ddr2_dq_sdram;
31   wire [DQS_WIDTH-1:0]         ddr2_dqs_sdram;
32   wire [DQS_WIDTH-1:0]         ddr2_dqs_n_sdram;
33   wire [7:0]                   ddr2_dm_sdram;
34   wire                                  ddr2_clk_sdram;
35   wire                                     ddr2_clk_n_sdram;
36   wire [12:0]                                ddr2_address_sdram;
37   wire [1:0]                           ddr2_ba_sdram;
38   wire                         ddr2_ras_n_sdram;
39   wire                         ddr2_cas_n_sdram;
40   wire                         ddr2_we_n_sdram;
41   wire [CS_WIDTH-1:0]          ddr2_cs_n_sdram;
42   wire                         ddr2_cke_sdram;
43   wire [ODT_WIDTH-1:0]         ddr2_odt_sdram;
44
45   wire                          stx;
46   wire                          srx;
47   
48   wire [21:0]                    flash_addr; 
49   wire [15:0]                    flash_data;
50   
51
52   
53   initial begin
54 
55    // Display start message
56         $display("INFO: TBENCH: Starting simulation...");
57         
58    // Create VCD trace file
59         $dumpfile("trace.vcd");
60         $dumpvars();
61                       
62    // Run the simulation
63    //      sys_clock <= 1'b1;
64    //     sys_reset <= 1'b1;
65    //     #1000
66    //     sys_reset <= 1'b0;
67         #100000
68         $display("INFO: TBENCH: Completed simulation!");
69         $finish;
70                                                     
71    end
72
73
74   //***************************************************************************
75   // Clock generation and reset
76   //***************************************************************************
77
78   initial
79     clk_in = 1'b0;
80   always
81     clk_in = #(CLK_PERIOD_NS/2) ~clk_in;
82
83   assign                clk_in_p = clk_in;
84   assign                clk_in_n = ~clk_in;
85
86   initial
87     sys_clk200 = 1'b0;
88   always
89     sys_clk200 = #(TCYC_200/2) ~sys_clk200;
90
91   assign                clk200_p = sys_clk200;
92   assign                clk200_n = ~sys_clk200;
93
94   initial begin
95      sys_rst_n = 1'b0;
96      #200;
97      sys_rst_n = 1'b1;
98   end
99   assign sys_rst_out = RST_ACT_LOW ? sys_rst_n : ~sys_rst_n;
100
101   //***************************************************************************
102   // W1 module instance
103   //***************************************************************************
104
105W1 W1_inst
106(
107   .clk_in (clk_in),
108   .sysrst (sys_rst_out),
109
110   // ddr3 memory interface
111   .ddr3_dq (ddr2_dq_sdram),           
112   .ddr3_dqs (ddr2_dqs_n_sdram),
113   .ddr3_dqs_n (ddr2_dqs_n_sdram),
114   .ddr3_ck (ddr2_clk_sdram),
115   .ddr3_ck_n (ddr2_clk_n_sdram),
116   .ddr3_a (ddr2_address_sdram),
117   .ddr3_ba (ddr2_ba_sdram), //FIXME
118   .ddr3_ras_n (ddr2_ras_n_sdram),
119   .ddr3_cas_n (ddr2_cas_n_sdram),
120   .ddr3_we_n (ddr2_we_n_sdram),
121   .ddr3_cs_n (ddr2_cs_n_sdram),
122   .ddr3_odt (ddr2_odt_sdram),
123   .ddr3_ce (ddr2_cke_sdram),
124   .ddr3_dm (ddr2_dm_sdram),
125
126   // Console interface
127   .srx (srx),
128   .stx (stx),
129
130   //flash interface   
131   .flash_addr(flash_addr),
132   .flash_data(flash_data),
133   .flash_oen(flash_oen),
134   .flash_wen(flash_wen),
135   .flash_cen(flash_cen),
136   .flash_clk(flash_clk),
137   .flash_adv(flash_adv),
138   .flash_rst(flash_rst)
139);
140
141
142   //***************************************************************************
143   // FLASH module instance
144   //***************************************************************************
145   
146
147flash flash_inst
148(
149   .flash_addr(flash_addr),
150   .flash_data(flash_data),
151   .flash_oen(flash_oen),
152   .flash_wen(flash_wen),
153   .flash_cen(flash_cen),
154   .flash_clk(flash_clk),
155   .flash_adv(flash_adv),
156   .flash_rst(flash_rst)
157);
158           // if the data width is multiple of 16
159              //for(j = 0; j < CS_NUM; j = j+1) begin : gen_cs
160                for(i = 0; i < DQS_WIDTH/2; i = i+1) begin : gen
161                   ddr2_model u_mem0
162                     (
163                      .ck        (ddr2_clk_sdram),
164                      .ck_n      (ddr2_clk_n_sdram),
165                      .cke       (ddr2_cke_sdram),
166                      .cs_n      (ddr2_cs_n_sdram[CS_WIDTH*i/DQS_WIDTH]),
167                      .ras_n     (ddr2_ras_n_sdram),
168                      .cas_n     (ddr2_cas_n_sdram),
169                      .we_n      (ddr2_we_n_sdram),
170                      .dm_rdqs   (ddr2_dm_sdram[(2*(i+1))-1 : i*2]),
171                      .ba        (ddr2_ba_sdram), //FIXME
172                      .addr      (ddr2_address_sdram),
173                      .dq        (ddr2_dq_sdram[(16*(i+1))-1 : i*16]),
174                      .dqs       (ddr2_dqs_sdram[(2*(i+1))-1 : i*2]),
175                      .dqs_n     (ddr2_dqs_n_sdram[(2*(i+1))-1 : i*2]),
176                      .rdqs_n    (),
177                      .odt       (ddr2_odt_sdram[ODT_WIDTH*i/DQS_WIDTH])
178                      );
179                end
180              //end
181endmodule
182
Note: See TracBrowser for help on using the repository browser.