OpenCores
URL https://opencores.org/ocsvn/kiss-board/kiss-board/trunk

Subversion Repositories kiss-board

[/] [kiss-board/] [trunk/] [kiss-board_soc/] [src/] [tessera_top.v] - Blame information for rev 11

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 fukuchi
 
2
`timescale 1ps/1ps
3
 
4
module tessera_top (
5
        //
6
        sys_reset_n,
7
        sys_init_n,
8
        sys_clk0,
9
        sys_clk1,
10
        sys_clk2,
11
        sys_clk3,
12
        //
13
//      jtag_tms,
14
//      jtag_tck,
15
//      jtag_trst,
16
//      jtag_tdi,
17
//      jtag_tdo,
18
        //
19
        uart_txd,
20
        uart_rxd,
21
        uart_rts_n,
22
        uart_cts_n,
23
        uart_dtr_n,
24
        uart_dsr_n,
25
        uart_dcd_n,
26
        uart_ri_n,
27
        //
28
        mem_cs2_rstdrv,
29
        mem_cs2_int,
30
        mem_cs2_dir,
31
        mem_cs2_g_n,
32
        mem_cs2_n,
33
        mem_cs2_iochrdy,
34
        mem_cs1_rst_n,
35
        mem_cs1_n,
36
        mem_cs1_rdy,
37
        mem_cs0_n,
38
        mem_we_n,
39
        mem_oe_n,
40
        mem_a,
41
        mem_d,
42
        //      
43
        sdram0_clk,
44
        sdram0_cke,
45
        sdram0_cs_n,
46
        sdram0_ras_n,
47
        sdram0_cas_n,
48
        sdram0_we_n,
49
        sdram0_dqm,
50
        sdram0_ba,
51
        sdram0_a,
52
        sdram0_d,
53
        //
54
        sdram1_clk,
55
        sdram1_cke,
56
        sdram1_cs_n,
57
        sdram1_ras_n,
58
        sdram1_cas_n,
59
        sdram1_we_n,
60
        sdram1_dqm,
61
        sdram1_ba,
62
        sdram1_a,
63
        sdram1_d,
64
        //
65
        vga_clkp,
66
        vga_clkn,
67
        vga_hsync,
68
        vga_vsync,
69
        vga_blank,
70
        vga_d,
71
        // misc
72
        misc_gpio,
73
        misc_tp
74
);
75
        //
76
        input           sys_reset_n;
77
        output          sys_init_n;
78
        input           sys_clk0;       // XT 20MHz(pos)
79
        input           sys_clk1;       // XT 20MHz(neg)
80
        input           sys_clk2;       // XT 6MHz(pos)
81
        input           sys_clk3;       // XT 6MHz(neg)
82
        //
83
//      input           jtag_tms;
84
//      input           jtag_tck;
85
//      input           jtag_trst;
86
//      input           jtag_tdi;
87
//      output          jtag_tdo;
88
        //
89
        output          uart_txd;
90
        input           uart_rxd;
91
        output          uart_rts_n;
92
        input           uart_cts_n;
93
        output          uart_dtr_n;
94
        input           uart_dsr_n;
95
        input           uart_dcd_n;
96
        input           uart_ri_n;
97
        //
98
        output          mem_cs2_rstdrv;
99
        input           mem_cs2_int;
100
        output          mem_cs2_dir;
101
        output          mem_cs2_g_n;
102
        output          mem_cs2_n;
103
        input           mem_cs2_iochrdy;
104
        output          mem_cs1_rst_n;
105
        output          mem_cs1_n;
106
        input           mem_cs1_rdy;
107
        output          mem_cs0_n;
108
        output          mem_we_n;
109
        output          mem_oe_n;
110
        output  [22:0]   mem_a;
111
        inout   [7:0]    mem_d;
112
        //      
113
        output          sdram0_clk;
114
        output          sdram0_cke;
115
        output  [1:0]    sdram0_cs_n;
116
        output          sdram0_ras_n;
117
        output          sdram0_cas_n;
118
        output          sdram0_we_n;
119
        output  [1:0]    sdram0_dqm;
120
        output  [1:0]    sdram0_ba;
121
        output  [12:0]   sdram0_a;
122
        inout   [15:0]   sdram0_d;
123
        //
124
        output          sdram1_clk;
125
        output          sdram1_cke;
126
        output  [1:0]    sdram1_cs_n;
127
        output          sdram1_ras_n;
128
        output          sdram1_cas_n;
129
        output          sdram1_we_n;
130
        output  [1:0]    sdram1_dqm;
131
        output  [1:0]    sdram1_ba;
132
        output  [12:0]   sdram1_a;
133
        inout   [15:0]   sdram1_d;
134
        //
135
        output          vga_clkp;
136
        output          vga_clkn;
137
        output          vga_hsync;
138
        output          vga_vsync;
139
        output          vga_blank;
140
        output  [23:0]   vga_d;
141
        // misc
142
        input   [3:0]    misc_gpio;
143
        output          misc_tp;
144
 
145
        // JTAG OE control
146
//      wire            jtag_tdo_oe;
147
//      wire            jtag_tdo_o;
148
//      assign jtag_tdo = (jtag_tdo_oe) ? jtag_tdo_o: 1'bz;
149
 
150
        // OE control PAD for SDRAM
151
        wire    [15:0]   sdram0_d_oe;
152
        wire    [15:0]   sdram0_d_o;
153
        wire    [15:0]   sdram1_d_oe;
154
        wire    [15:0]   sdram1_d_o;
155
        assign sdram0_d[15] = (sdram0_d_oe[15]) ? sdram0_d_o[15]: 1'bz;
156
        assign sdram0_d[14] = (sdram0_d_oe[14]) ? sdram0_d_o[14]: 1'bz;
157
        assign sdram0_d[13] = (sdram0_d_oe[13]) ? sdram0_d_o[13]: 1'bz;
158
        assign sdram0_d[12] = (sdram0_d_oe[12]) ? sdram0_d_o[12]: 1'bz;
159
        assign sdram0_d[11] = (sdram0_d_oe[11]) ? sdram0_d_o[11]: 1'bz;
160
        assign sdram0_d[10] = (sdram0_d_oe[10]) ? sdram0_d_o[10]: 1'bz;
161
        assign sdram0_d[9]  = (sdram0_d_oe[9] ) ? sdram0_d_o[9] : 1'bz;
162
        assign sdram0_d[8]  = (sdram0_d_oe[8] ) ? sdram0_d_o[8] : 1'bz;
163
        assign sdram0_d[7]  = (sdram0_d_oe[7] ) ? sdram0_d_o[7] : 1'bz;
164
        assign sdram0_d[6]  = (sdram0_d_oe[6] ) ? sdram0_d_o[6] : 1'bz;
165
        assign sdram0_d[5]  = (sdram0_d_oe[5] ) ? sdram0_d_o[5] : 1'bz;
166
        assign sdram0_d[4]  = (sdram0_d_oe[4] ) ? sdram0_d_o[4] : 1'bz;
167
        assign sdram0_d[3]  = (sdram0_d_oe[3] ) ? sdram0_d_o[3] : 1'bz;
168
        assign sdram0_d[2]  = (sdram0_d_oe[2] ) ? sdram0_d_o[2] : 1'bz;
169
        assign sdram0_d[1]  = (sdram0_d_oe[1] ) ? sdram0_d_o[1] : 1'bz;
170
        assign sdram0_d[0]  = (sdram0_d_oe[0] ) ? sdram0_d_o[0] : 1'bz;
171
        assign sdram1_d[15] = (sdram1_d_oe[15]) ? sdram1_d_o[15]: 1'bz;
172
        assign sdram1_d[14] = (sdram1_d_oe[14]) ? sdram1_d_o[14]: 1'bz;
173
        assign sdram1_d[13] = (sdram1_d_oe[13]) ? sdram1_d_o[13]: 1'bz;
174
        assign sdram1_d[12] = (sdram1_d_oe[12]) ? sdram1_d_o[12]: 1'bz;
175
        assign sdram1_d[11] = (sdram1_d_oe[11]) ? sdram1_d_o[11]: 1'bz;
176
        assign sdram1_d[10] = (sdram1_d_oe[10]) ? sdram1_d_o[10]: 1'bz;
177
        assign sdram1_d[9]  = (sdram1_d_oe[9] ) ? sdram1_d_o[9] : 1'bz;
178
        assign sdram1_d[8]  = (sdram1_d_oe[8] ) ? sdram1_d_o[8] : 1'bz;
179
        assign sdram1_d[7]  = (sdram1_d_oe[7] ) ? sdram1_d_o[7] : 1'bz;
180
        assign sdram1_d[6]  = (sdram1_d_oe[6] ) ? sdram1_d_o[6] : 1'bz;
181
        assign sdram1_d[5]  = (sdram1_d_oe[5] ) ? sdram1_d_o[5] : 1'bz;
182
        assign sdram1_d[4]  = (sdram1_d_oe[4] ) ? sdram1_d_o[4] : 1'bz;
183
        assign sdram1_d[3]  = (sdram1_d_oe[3] ) ? sdram1_d_o[3] : 1'bz;
184
        assign sdram1_d[2]  = (sdram1_d_oe[2] ) ? sdram1_d_o[2] : 1'bz;
185
        assign sdram1_d[1]  = (sdram1_d_oe[1] ) ? sdram1_d_o[1] : 1'bz;
186
        assign sdram1_d[0]  = (sdram1_d_oe[0] ) ? sdram1_d_o[0] : 1'bz;
187
 
188
        // OE control PAD for MEM-BUS
189
        wire    [7:0]    mem_d_oe;
190
        wire    [7:0]    mem_d_o;
191
        assign mem_d[7] = (mem_d_oe[7]) ? mem_d_o[7]: 1'bz;
192
        assign mem_d[6] = (mem_d_oe[6]) ? mem_d_o[6]: 1'bz;
193
        assign mem_d[5] = (mem_d_oe[5]) ? mem_d_o[5]: 1'bz;
194
        assign mem_d[4] = (mem_d_oe[4]) ? mem_d_o[4]: 1'bz;
195
        assign mem_d[3] = (mem_d_oe[3]) ? mem_d_o[3]: 1'bz;
196
        assign mem_d[2] = (mem_d_oe[2]) ? mem_d_o[2]: 1'bz;
197
        assign mem_d[1] = (mem_d_oe[1]) ? mem_d_o[1]: 1'bz;
198
        assign mem_d[0] = (mem_d_oe[0]) ? mem_d_o[0]: 1'bz;
199
 
200
 
201
// PLL_A
202
        //wire          sys_pll_a_clk;
203
        //wire          sys_pll_a_locked;
204
        //pllx7per8_20to17_50   i_pll_a (.inclk0(sys_clk0),.c0(sys_pll_a_clk));
205
        //pllx1_20to20          i_pll_a (.inclk0(sys_clk0),.c0(sys_pll_a_clk));
206
        //pllx5per4_20to25      i_pll_a (.inclk0(sys_clk0),.c0(sys_pll_a_clk));
207
        //pllx3per2_20to30      i_pll_a (.inclk0(sys_clk0),.c0(sys_pll_a_clk));
208
        //pllx7per4_20to35      i_pll_a (.inclk0(sys_clk0),.c0(sys_pll_a_clk),.locked(sys_pll_a_locked));
209
        //pllx2_20to40          i_pll_a (.inclk0(sys_clk0),.c0(sys_pll_a_clk));
210
        //pllx5per2_20to50      i_pll_a (.inclk0(sys_clk0),.c0(sys_pll_a_clk));
211
        //pllx3_20to60          i_pll_a (.inclk0(sys_clk0),.c0(sys_pll_a_clk));
212
        //pllx7per2_20to70      i_pll_a (.inclk0(sys_clk0),.c0(sys_pll_a_clk));
213
        //pllx4_20to80          i_pll_a (.inclk0(sys_clk0),.c0(sys_pll_a_clk));
214
        //pllx6_20to120         i_pll_a (.inclk0(sys_clk0),.c0(sys_pll_a_clk));
215
// PLL_B
216
        //wire          sys_pll_b_clk;
217
        //wire          sys_pll_b_locked;
218
        //pllx7per8_20to17_50   i_pll_b (.inclk0(sys_clk0),.c0(sys_pll_b_clk),.locked(sys_pll_b_locked));
219
        //pllx1_20to20          i_pll_b (.inclk0(sys_clk0),.c0(sys_pll_b_clk));
220
        //pllx5per4_20to25      i_pll_c (.inclk0(sys_clk0),.c0(sys_pll_b_clk));
221
        //pllx3per2_20to30      i_pll_b (.inclk0(sys_clk0),.c0(sys_pll_b_clk));
222
        //pllx7per4_20to35      i_pll_b (.inclk0(sys_clk0),.c0(sys_pll_b_clk));
223
        //pllx2_20to40          i_pll_b (.inclk0(sys_clk0),.c0(sys_pll_b_clk));
224
        //pllx5per2_20to50      i_pll_b (.inclk0(sys_clk0),.c0(sys_pll_b_clk));
225
        //pllx3_20to60          i_pll_b (.inclk0(sys_clk0),.c0(sys_pll_b_clk));
226
        //pllx7per2_20to70      i_pll_b (.inclk0(sys_clk0),.c0(sys_pll_b_clk));
227
        //pllx4_20to80          i_pll_b (.inclk0(sys_clk0),.c0(sys_pll_b_clk));
228
        //pllx6_20to120         i_pll_b (.inclk0(sys_clk0),.c0(sys_pll_b_clk));
229
 
230
        wire    [1:0]    sys_clmode;
231
        wire            sys_or1200_clk;
232
        wire            sys_wb_clk;
233
        wire            sys_mem_clk;
234
        wire            sys_sdram_clk;
235
        wire            sys_vga_clk;
236
        wire            sys_pll_locked;
237
 
238
//////////////////////////////////////////////
239
// Single PLL
240
// ExternalPin
241
//      sys_clk0: OpenRiscCPU,WinsBoneBus,VGA,Flash,SDRAM
242
//      sys_clk1: not use
243
//      sys_clk2: not use
244
//      sys_clk3: not use
245
//////////////////////////////////////////////
246
// CLOCK SPEC:[CPU][WB][FLASH][SDRAM][VGA]
247
`define CLOCK_25_25_50_50_25
248
//`define CLOCK_30_30_50_50_25
249
//`define CLOCK_25_25_60_60_25
250
//`define CLOCK_35_35_70_70_35
251
 
252
//`define CLOCK_40_20_40_40_40
253
//`define CLOCK_35_17P5_35_35_35
254
 
255
// x1
256
`ifdef CLOCK_25_25_50_50_25
257
        wire            sys_pll_a_clk;
258
        wire            sys_pll_b_clk;
259
        //wire          sys_pll_b_clk_div;
260
        pll_20to25AND50 i_pll (.inclk0(sys_clk0),.c0(sys_pll_a_clk),.c1(sys_pll_b_clk),.locked(sys_pll_locked));
261
        //div           i_div (.clock(sys_pll_b_clk),.q(sys_pll_b_clk_div));
262
        assign sys_clmode       = 2'b00;
263
        assign sys_or1200_clk   = sys_pll_a_clk;
264
        assign sys_wb_clk       = sys_pll_a_clk;
265
        assign sys_mem_clk      = sys_pll_b_clk;
266
        assign sys_sdram_clk    = sys_pll_b_clk;
267
        assign sys_vga_clk      = sys_pll_a_clk; // VESA 800x525(-4) just 60Hz at 25MHz
268
`endif
269
`ifdef CLOCK_30_30_50_50_25
270
        wire            sys_pll_a_clk;
271
        wire            sys_pll_b_clk;
272
        wire            sys_pll_b_clk_div;
273
        pll_20to30AND50 i_pll (.inclk0(sys_clk0),.c0(sys_pll_a_clk),.c1(sys_pll_b_clk),.locked(sys_pll_locked));
274
        div             i_div (.clock(sys_pll_b_clk),.q(sys_pll_b_clk_div));
275
        assign sys_clmode       = 2'b00;
276
        assign sys_or1200_clk   = sys_pll_a_clk;
277
        assign sys_wb_clk       = sys_pll_a_clk;
278
        assign sys_mem_clk      = sys_pll_b_clk;
279
        assign sys_sdram_clk    = sys_pll_b_clk;
280
        assign sys_vga_clk      = sys_pll_b_clk_div; // VESA 800x525(-4) just 60Hz at 25MHz,not related clock,but skew is ok.
281
`endif
282
`ifdef CLOCK_25_25_60_60_25
283
        wire            sys_pll_a_clk;
284
        wire            sys_pll_b_clk;
285
        //wire          sys_pll_b_clk_div;
286
        pll_20to25AND60 i_pll (.inclk0(sys_clk0),.c0(sys_pll_a_clk),.c1(sys_pll_b_clk),.locked(sys_pll_locked));
287
        //div           i_div (.clock(sys_pll_b_clk),.q(sys_pll_b_clk_div));
288
        assign sys_clmode       = 2'b00;
289
        assign sys_or1200_clk   = sys_pll_a_clk;
290
        assign sys_wb_clk       = sys_pll_a_clk;
291
        assign sys_mem_clk      = sys_pll_b_clk;
292
        assign sys_sdram_clk    = sys_pll_b_clk;
293
        assign sys_vga_clk      = sys_pll_a_clk; // VESA 800x525(-4) just 60Hz at 25MHz
294
`endif
295
`ifdef CLOCK_35_35_70_70_35
296
        wire            sys_pll_a_clk;
297
        wire            sys_pll_b_clk;
298
        //wire          sys_pll_b_clk_div;
299
        pll_20to35AND70 i_pll (.inclk0(sys_clk0),.c0(sys_pll_a_clk),.c1(sys_pll_b_clk),.locked(sys_pll_locked));
300
        //div           i_div (.clock(sys_pll_b_clk),.q(sys_pll_b_clk_div));
301
        assign sys_clmode       = 2'b00;
302
        assign sys_or1200_clk   = sys_pll_a_clk;
303
        assign sys_wb_clk       = sys_pll_a_clk;
304
        assign sys_mem_clk      = sys_pll_b_clk;
305
        assign sys_sdram_clk    = sys_pll_b_clk;
306
        assign sys_vga_clk      = sys_pll_a_clk; // VESA 800x525(-4) just 60Hz at 25MHz
307
`endif
308
 
309
// x2
310
`ifdef CLOCK_40_20_40_40_40
311
        wire            sys_pll_a_clk;
312
        wire            sys_pll_b_clk;
313
        //wire          sys_pll_b_clk_div;
314
        //wire          sys_pll_0_locked;
315
        //wire          sys_pll_1_locked;
316
        pll_20to20AND40 i_pll (.inclk0(sys_clk0),.c0(sys_pll_a_clk),.c1(sys_pll_b_clk),.locked(sys_pll_locked));
317
        //assign sys_pll_locked = sys_pll_0_locked || sys_pll_1_locked;
318
        //div           i_div (.clock(sys_pll_b_clk),.q(sys_pll_b_clk_div));
319
        assign sys_clmode       = 2'b01;
320
        assign sys_or1200_clk   = sys_pll_b_clk; // related clock
321
        assign sys_wb_clk       = sys_pll_a_clk; // related clock
322
        assign sys_mem_clk      = sys_pll_b_clk;
323
        assign sys_sdram_clk    = sys_pll_b_clk;
324
        assign sys_vga_clk      = sys_pll_b_clk; // VGA illegal size((800+480-32 )x521) near 60Hz at 40MHz
325
`endif
326
`ifdef CLOCK_35_17P5_35_35_35
327
        wire            sys_pll_a_clk;
328
        wire            sys_pll_b_clk;
329
        //wire          sys_pll_b_clk_div;
330
        wire            sys_pll_0_locked;
331
        wire            sys_pll_1_locked;
332
        pll_20to17P5AND35 i_pll (.inclk0(sys_clk0),.c0(sys_pll_a_clk),.c1(sys_pll_b_clk),.locked(sys_pll_locked));
333
        assign sys_clmode       = 2'b01;
334
        assign sys_or1200_clk   = sys_pll_b_clk; // related clock
335
        assign sys_wb_clk       = sys_pll_a_clk; // related clock
336
        assign sys_mem_clk      = sys_pll_b_clk;
337
        assign sys_sdram_clk    = sys_pll_b_clk;
338
        assign sys_vga_clk      = sys_pll_b_clk; // VGA illegal size((800+480-192 )x521) near 60Hz at 35MHz
339
`endif
340
 
341
//////////////////////////////////////////////
342
// ExternalPin
343
//      sys_clk0: OpenRiscCPU,WinsBoneBus
344
//      sys_clk1: not use
345
//      sys_clk2: VGA,Flash,SDRAM(need external OSC)
346
//      sys_clk3: not use
347
//////////////////////////////////////////////
348
`ifdef CLOCK_DOUBLE_40_20_75_75_25
349
        wire            sys_pll_0_locked;
350
        wire            sys_pll_1_locked;
351
        pll_Xto40AND20 i_pll_0 (
352
                .inclk0(        sys_clk0),              // Reference
353
                .c0(            sys_pll_a_clk),         // OpenRisc CPU :40MHz
354
                .c1(            sys_pll_b_clk),         // WishBone BUS :20MHz
355
                .locked(        sys_pll_0_locked)
356
        );
357
        pll_Xto80AND25 i_pll_1 (
358
                .inclk0(        sys_clk2),              // Reference
359
                .c0(            sys_pll_c_clk),         // Flash,SDRAM  :75MHz
360
                .c1(            sys_pll_d_clk),         // VGA          :25MHz
361
                .locked(        sys_pll_1_locked)
362
        );
363
        assign sys_clmode       = 2'b01;
364
        assign sys_or1200_clk   = sys_pll_a_clk;
365
        assign sys_wb_clk       = sys_pll_b_clk;
366
        assign sys_mem_clk      = sys_pll_c_clk;
367
        assign sys_sdram_clk    = sys_pll_c_clk;
368
        assign sys_vga_clk      = sys_pll_d_clk;
369
        assign sys_pll_locked   = sys_pll_0_locked || sys_pll_1_locked;
370
`endif
371
 
372
// Reset
373
        //wire          sys_reset;
374
        //assign sys_reset = (!sys_reset_n) || (!sys_pll_locked);
375
        reg             sys_reset;
376
        always @(negedge sys_or1200_clk) sys_reset = (!sys_reset_n) || (!sys_pll_locked);
377
 
378
// OR1200 Clock and ResetRelease
379
// WishBone Clock and ResetRelease
380
        reg     [1:0]    sys_or1200_res_mt;
381
        reg             sys_or1200_res;
382
        reg     [1:0]    sys_wb_res_mt;
383
        reg             sys_wb_res;
384
        //always @(posedge sys_or1200_clk) sys_or1200_res_mt <= {sys_or1200_res_mt[0],sys_reset};
385
        //always @(negedge sys_or1200_clk) sys_or1200_res    <= #1 sys_or1200_res_mt[1];
386
        always @(negedge sys_or1200_clk) sys_or1200_res <= sys_wb_res;                                          // neg release
387
 
388
        always @(posedge sys_wb_clk) sys_wb_res_mt <= {sys_wb_res_mt[0],sys_reset};
389
        always @(negedge sys_wb_clk) sys_wb_res    <= sys_wb_res_mt[1];                                         // neg release
390
 
391
// External-Memory-Bus Clock and ResetRelease
392
        reg     [1:0]    sys_mem_res_mt;
393
        reg             sys_mem_res;
394
        always @(posedge sys_mem_clk) sys_mem_res_mt <= {sys_mem_res_mt[0],sys_reset};
395
        always @(negedge sys_mem_clk) sys_mem_res    <= sys_mem_res_mt[1];                                      // neg release
396
 
397
// SDRAM Clock and ResetRelease
398
        reg     [1:0]    sys_sdram_res_mt;
399
        reg             sys_sdram_res;
400
        always @(posedge sys_sdram_clk) sys_sdram_res_mt <= {sys_sdram_res_mt[0],sys_reset};
401
        always @(negedge sys_sdram_clk) sys_sdram_res    <= sys_sdram_res_mt[1];                                // neg release
402
 
403
// VGA Clock and ResetRelease
404
        reg     [1:0]    sys_vga_res_mt;
405
        reg             sys_vga_res;
406
        always @(posedge sys_vga_clk) sys_vga_res_mt <= {sys_vga_res_mt[0],sys_reset};
407
        always @(negedge sys_vga_clk) sys_vga_res    <= sys_vga_res_mt[1];                                      // neg release
408
 
409
// sdram re-sync
410
 
411
        //50MHz(retiming 100MHz))
412
        //reg   [1:0]   dummy_a;
413
        //reg   [1:0]   dummy_b;
414
        //wire          local_sdram1_clk;
415
        //wire          local_sdram0_clk;
416
        //reg           sync1_sdram1_clk;
417
        //reg           sync1_sdram0_clk;
418
        //reg           sync2_sdram1_clk;
419
        //reg           sync2_sdram0_clk;
420
        //reg   [15:0]  snap1_sdram1_d;
421
        //reg   [15:0]  snap1_sdram0_d;
422
        //reg   [15:0]  snap2_sdram1_d;
423
        //reg   [15:0]  snap2_sdram0_d;
424
        //assign sdram1_clk = sync2_sdram1_clk;
425
        //assign sdram0_clk = sync2_sdram0_clk;
426
        //always @(negedge sys_pll_b_clk) dummy_a <= {dummy_a[0],misc_gpio[0]};
427
        //always @(negedge sys_pll_b_clk) dummy_b <= {dummy_b[0],misc_gpio[1]};
428
        //always @(negedge sys_pll_b_clk) sync1_sdram1_clk <= local_sdram1_clk && dummy_a[1];   // negedge its dummy to insert other ff
429
        //always @(negedge sys_pll_b_clk) sync1_sdram0_clk <= local_sdram0_clk && dummy_b[1];   // negedge its dummy to insert other ff
430
        //always @(posedge sys_pll_b_clk) sync2_sdram1_clk <= sync1_sdram1_clk;                 // posedge
431
        //always @(posedge sys_pll_b_clk) sync2_sdram0_clk <= sync1_sdram0_clk;                 // posedge
432
        //always @(posedge sys_pll_b_clk) snap1_sdram1_d  <= sdram1_d;                          // posedge
433
        //always @(posedge sys_pll_b_clk) snap1_sdram0_d  <= sdram0_d;                          // posedge
434
        //always @(negedge sys_pll_b_clk) snap2_sdram1_d  <= snap1_sdram1_d;                    // negedge
435
        //always @(negedge sys_pll_b_clk) snap2_sdram0_d  <= snap1_sdram0_d;                    // negedge
436
 
437
// simple snap
438
        wire            local_sdram1_clk;
439
        wire            local_sdram0_clk;
440
        reg     [15:0]   snap2_sdram1_d;
441
        reg     [15:0]   snap2_sdram0_d;
442
        assign sdram1_clk = !local_sdram1_clk;                                                  // global signal,may be fast
443
        assign sdram0_clk = !local_sdram0_clk;                                                  // global signal,may be fast
444
        always @(posedge sdram1_clk) snap2_sdram1_d  <= sdram1_d;                               // to snap,same sdram_clk(sdram1_clk->sys_sdram_clk)
445
        always @(posedge sdram0_clk) snap2_sdram0_d  <= sdram0_d;                               // to snap,same sdram_clk(sdram0_clk->sys_sdram_clk)
446
 
447
        // 25MHz(retiming 50MHz)
448
        //reg   [1:0]   dummy;
449
        //wire          local_vga_clk;
450
        //reg           sync1_vga_clkp;
451
        //reg           sync1_vga_clkn;
452
        //reg           sync2_vga_clkp;
453
        //reg           sync2_vga_clkn;
454
        //always @(negedge sys_pll_a_clk) dummy <= {dummy[0],misc_gpio[2]};
455
        //always @(negedge sys_pll_a_clk) sync1_vga_clkp <= local_vga_clk && dummy[1];          // negedge its dummy to insert other ff
456
        //always @(negedge sys_pll_a_clk) sync1_vga_clkn <= (!local_vga_clk) && dummy[1];               // negedge its dummy to insert other ff
457
        //always @(posedge sys_pll_a_clk) sync2_vga_clkp <= sync1_vga_clkp;                     // posedge
458
        //always @(posedge sys_pll_a_clk) sync2_vga_clkn <= sync1_vga_clkn;                     // posedge
459
        //assign vga_clkp = sync2_vga_clkp;
460
        //assign vga_clkn = sync2_vga_clkn;
461
 
462
// simple snap
463
        wire            local_vga_clk;
464
        assign vga_clkp = !local_vga_clk;
465
        assign vga_clkn = 1'b0;
466
        //assign vga_clkn = local_vga_clk;
467
 
468
// bus mode
469
        //assign sys_clmode = 2'b00;
470
        //assign sys_clmode = 2'b01;
471
        // clmode=2'b00=>DIV=1,so impliment is SAME-CLK! WBCLK=CPUCLK.
472
        // same-posedge-phase is ok....
473
        // clmode=2'b01=>DIV=2,WBCLK=(1/2)CPUCLK
474
        // clmode=2'b10=>NA
475
        // clmode=2'b11=>DIV=4,WBCLK=(1/4)CPUCLK
476
 
477
        //wire  [1:0]   local_sdram0_cs_n;
478
        //wire  [1:0]   local_sdram1_cs_n;
479
 
480
        tessera_core i_tessera_core (
481
                // system
482
                .sys_or1200_res(        sys_or1200_res||sys_reset),
483
                .sys_or1200_clk(        sys_or1200_clk),
484
                .sys_wb_res(            sys_wb_res||sys_reset),
485
                .sys_wb_clk(            sys_wb_clk),
486
                .sys_mem_res(           sys_mem_res||sys_reset),
487
                .sys_mem_clk(           sys_mem_clk),
488
                .sys_sdram_res(         sys_sdram_res||sys_reset),
489
                .sys_sdram_clk(         sys_sdram_clk),
490
                .sys_vga_res(           sys_vga_res||sys_reset),
491
                .sys_vga_clk(           sys_vga_clk),
492
                //
493
                .sys_clmode(    sys_clmode),
494
                // jtag(not-used)
495
                .jtag_tms(      1'b0/*jtag_tms*/),
496
                .jtag_tck(      1'b0/*jtag_tck*/),
497
                .jtag_trst(     1'b0/*jtag_trst*/),
498
                .jtag_tdi(      1'b0/*jtag_tdi*/),
499
                .jtag_tdo_o(    /* not used *//*jtag_tdo_o*/),
500
                .jtag_tdo_oe(   /* not used *//*jtag_tdo_oe*/),
501
                // uart
502
                .uart_stx(      uart_txd),
503
                .uart_srx(      uart_rxd),
504
                .uart_rts(      uart_rts_n),
505
                .uart_cts(      uart_cts_n),
506
                .uart_dtr(      uart_dtr_n),
507
                .uart_dsr(      uart_dsr_n),
508
                .uart_ri(       uart_ri_n),
509
                .uart_dcd(      uart_dcd_n),
510
                // mem-bus
511
                .mem_cs2_n(     mem_cs2_n),
512
                .mem_cs2_g_n(   mem_cs2_g_n),
513
                .mem_cs2_dir(   mem_cs2_dir),
514
                .mem_cs2_rstdrv(mem_cs2_rstdrv),
515
                .mem_cs2_int(   mem_cs2_int),
516
                .mem_cs2_iochrdy(mem_cs2_iochrdy),
517
                .mem_cs1_n(     mem_cs1_n),
518
                .mem_cs1_rst_n( mem_cs1_rst_n),
519
                .mem_cs1_rdy(   mem_cs1_rdy),
520
                .mem_cs0_n(     mem_cs0_n),
521
                .mem_we_n(      mem_we_n),
522
                .mem_oe_n(      mem_oe_n),
523
                .mem_a(         mem_a),
524
                .mem_d_o(       mem_d_o),
525
                .mem_d_oe(      mem_d_oe),
526
                .mem_d_i(       mem_d),
527
                // sdram0
528
                //.sdram0_clk(  sdram0_clk),
529
                .sdram0_clk(    local_sdram0_clk),      // phase-shift
530
                .sdram0_cke(    sdram0_cke),
531
                .sdram0_cs_n(   sdram0_cs_n),
532
                .sdram0_ras_n(  sdram0_ras_n),
533
                .sdram0_cas_n(  sdram0_cas_n),
534
                .sdram0_we_n(   sdram0_we_n),
535
                .sdram0_dqm(    sdram0_dqm),
536
                .sdram0_ba(     sdram0_ba),
537
                .sdram0_a(      sdram0_a),
538
                //.sdram0_d_i(  sdram0_d),
539
                .sdram0_d_i(    snap2_sdram0_d),        // pre-register
540
                .sdram0_d_oe(   sdram0_d_oe),
541
                .sdram0_d_o(    sdram0_d_o),
542
                // sdram1
543
                //.sdram1_clk(  sdram1_clk),
544
                .sdram1_clk(    local_sdram1_clk),      // phase-shift
545
                .sdram1_cke(    sdram1_cke),
546
                .sdram1_cs_n(   sdram1_cs_n),
547
                .sdram1_ras_n(  sdram1_ras_n),
548
                .sdram1_cas_n(  sdram1_cas_n),
549
                .sdram1_we_n(   sdram1_we_n),
550
                .sdram1_dqm(    sdram1_dqm),
551
                .sdram1_ba(     sdram1_ba),
552
                .sdram1_a(      sdram1_a),
553
                //.sdram1_d_i(  sdram1_d),
554
                .sdram1_d_i(    snap2_sdram1_d),        // pre-register
555
                .sdram1_d_oe(   sdram1_d_oe),
556
                .sdram1_d_o(    sdram1_d_o),
557
                // vga
558
                .vga_clk(       local_vga_clk),
559
                .vga_hsync(     vga_hsync),
560
                .vga_vsync(     vga_vsync),
561
                .vga_blank(     vga_blank),
562
                .vga_d(         vga_d),
563
                // tet
564
                .option(        misc_gpio[0])
565
        );
566
 
567
// not-fix(output-pin-clamp)
568
        //
569
        assign sys_init_n       = 1'b1; // to re-config
570
        //
571
        assign misc_tp          = 1'b0; // LED on:0 off:1
572
        //
573
        //assign sdram0_cs_n[0] = local_sdram0_cs_n[0];
574
        //assign sdram0_cs_n[1] = 1'b1;
575
        //
576
        //assign sdram1_cs_n[0] = local_sdram1_cs_n[0];
577
        //assign sdram1_cs_n[1] = 1'b1;
578
 
579
endmodule

powered by: WebSVN 2.1.0

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