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

Subversion Repositories openmsp430

[/] [openmsp430/] [trunk/] [fpga/] [xilinx_avnet_lx9microbard/] [rtl/] [verilog/] [openMSP430_fpga.v] - Blame information for rev 157

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 157 olivier.gi
//----------------------------------------------------------------------------
2
// Copyright (C) 2011 Authors
3
//
4
// This source file may be used and distributed without restriction provided
5
// that this copyright statement is not removed from the file and that any
6
// derivative work contains the original copyright notice and the associated
7
// disclaimer.
8
//
9
// This source file is free software; you can redistribute it and/or modify
10
// it under the terms of the GNU Lesser General Public License as published
11
// by the Free Software Foundation; either version 2.1 of the License, or
12
// (at your option) any later version.
13
//
14
// This source is distributed in the hope that it will be useful, but WITHOUT
15
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
16
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
17
// License for more details.
18
//
19
// You should have received a copy of the GNU Lesser General Public License
20
// along with this source; if not, write to the Free Software Foundation,
21
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
22
//
23
//----------------------------------------------------------------------------
24
// 
25
// *File Name: openMSP430_fpga.v
26
// 
27
// *Module Description:
28
//                      openMSP430 FPGA Top-level for the Avnet LX9 Microboard
29
//
30
// *Author(s):
31
//              - Ricardo Ribalda,    ricardo.ribalda@gmail.com
32
//              - Olivier Girard,    olgirard@gmail.com
33
//
34
//----------------------------------------------------------------------------
35
`include "openmsp430/openMSP430_defines.v"
36
 
37
module openMSP430_fpga (
38
 
39
     //----------------------------------------------
40
     // User Reset Push Button
41
     //----------------------------------------------
42
     USER_RESET,
43
 
44
     //----------------------------------------------
45
     // Micron N25Q128 SPI Flash
46
     //   This is a Multi-I/O Flash.  Several pins
47
     //  have dual purposes depending on the mode.
48
     //----------------------------------------------
49
     SPI_SCK,
50
     SPI_CS_n,
51
     SPI_MOSI_MISO0,
52
     SPI_MISO_MISO1,
53
     SPI_Wn_MISO2,
54
     SPI_HOLDn_MISO3,
55
 
56
     //----------------------------------------------
57
     // TI CDCE913 Triple-Output PLL Clock Chip
58
     //   Y1: 40 MHz, USER_CLOCK can be used as
59
     //              external configuration clock
60
     //   Y2: 66.667 MHz
61
     //   Y3: 100 MHz 
62
     //----------------------------------------------
63
     USER_CLOCK,
64
     CLOCK_Y2,
65
     CLOCK_Y3,
66
 
67
     //----------------------------------------------
68
     // The following oscillator is not populated
69
     // in production but the footprint is compatible
70
     // with the Maxim DS1088LU                 
71
     //----------------------------------------------
72
     BACKUP_CLK,
73
 
74
     //----------------------------------------------
75
     // User DIP Switch x4
76
     //----------------------------------------------
77
     GPIO_DIP1,
78
     GPIO_DIP2,
79
     GPIO_DIP3,
80
     GPIO_DIP4,
81
 
82
     //----------------------------------------------
83
     // User LEDs                       
84
     //----------------------------------------------
85
     GPIO_LED1,
86
     GPIO_LED2,
87
     GPIO_LED3,
88
     GPIO_LED4,
89
 
90
     //----------------------------------------------
91
     // Silicon Labs CP2102 USB-to-UART Bridge Chip
92
     //----------------------------------------------
93
     USB_RS232_RXD,
94
     USB_RS232_TXD,
95
 
96
     //----------------------------------------------
97
     // Texas Instruments CDCE913 programming port
98
     //----------------------------------------------
99
     SCL,
100
     SDA,
101
 
102
     //----------------------------------------------
103
     // Micron MT46H32M16LFBF-5 LPDDR                   
104
     //----------------------------------------------
105
 
106
     // Addresses
107
     LPDDR_A0,
108
     LPDDR_A1,
109
     LPDDR_A2,
110
     LPDDR_A3,
111
     LPDDR_A4,
112
     LPDDR_A5,
113
     LPDDR_A6,
114
     LPDDR_A7,
115
     LPDDR_A8,
116
     LPDDR_A9,
117
     LPDDR_A10,
118
     LPDDR_A11,
119
     LPDDR_A12,
120
     LPDDR_BA0,
121
     LPDDR_BA1,
122
 
123
     // Data                                                                  
124
     LPDDR_DQ0,
125
     LPDDR_DQ1,
126
     LPDDR_DQ2,
127
     LPDDR_DQ3,
128
     LPDDR_DQ4,
129
     LPDDR_DQ5,
130
     LPDDR_DQ6,
131
     LPDDR_DQ7,
132
     LPDDR_DQ8,
133
     LPDDR_DQ9,
134
     LPDDR_DQ10,
135
     LPDDR_DQ11,
136
     LPDDR_DQ12,
137
     LPDDR_DQ13,
138
     LPDDR_DQ14,
139
     LPDDR_DQ15,
140
     LPDDR_LDM,
141
     LPDDR_UDM,
142
     LPDDR_LDQS,
143
     LPDDR_UDQS,
144
 
145
     // Clock
146
     LPDDR_CK_N,
147
     LPDDR_CK_P,
148
     LPDDR_CKE,
149
 
150
     // Control
151
     LPDDR_CAS_n,
152
     LPDDR_RAS_n,
153
     LPDDR_WE_n,
154
     LPDDR_RZQ,
155
 
156
     //----------------------------------------------
157
     // National Semiconductor DP83848J 10/100 Ethernet PHY                     
158
     //   Pull-ups on RXD are necessary to set the PHY AD to 11110b.
159
     //   Must keep the PHY from defaulting to PHY AD = 00000b      
160
     //   because this is Isolate Mode                              
161
     //----------------------------------------------
162
     ETH_COL,
163
     ETH_CRS,
164
     ETH_MDC,
165
     ETH_MDIO,
166
     ETH_RESET_n,
167
     ETH_RX_CLK,
168
     ETH_RX_D0,
169
     ETH_RX_D1,
170
     ETH_RX_D2,
171
     ETH_RX_D3,
172
     ETH_RX_DV,
173
     ETH_RX_ER,
174
     ETH_TX_CLK,
175
     ETH_TX_D0,
176
     ETH_TX_D1,
177
     ETH_TX_D2,
178
     ETH_TX_D3,
179
     ETH_TX_EN,
180
 
181
     //----------------------------------------------
182
     // Peripheral Modules (PMODs) and GPIO
183
     //     https://www.digilentinc.com/PMODs
184
     //----------------------------------------------
185
 
186
     // Connector J5
187
     PMOD1_P1,
188
     PMOD1_P2,
189
     PMOD1_P3,
190
     PMOD1_P4,
191
     PMOD1_P7,
192
     PMOD1_P8,
193
     PMOD1_P9,
194
     PMOD1_P10,
195
 
196
     // Connector J4
197
     PMOD2_P1,
198
     PMOD2_P2,
199
     PMOD2_P3,
200
     PMOD2_P4,
201
     PMOD2_P7,
202
     PMOD2_P8,
203
     PMOD2_P9,
204
     PMOD2_P10
205
);
206
 
207
//----------------------------------------------
208
// User Reset Push Button
209
//----------------------------------------------
210
input    USER_RESET;
211
 
212
//----------------------------------------------
213
// Micron N25Q128 SPI Flash
214
//   This is a Multi-I/O Flash.  Several pins
215
//  have dual purposes depending on the mode.
216
//----------------------------------------------
217
output   SPI_SCK;
218
output   SPI_CS_n;
219
inout    SPI_MOSI_MISO0;
220
inout    SPI_MISO_MISO1;
221
output   SPI_Wn_MISO2;
222
output   SPI_HOLDn_MISO3;
223
 
224
//----------------------------------------------
225
// TI CDCE913 Triple-Output PLL Clock Chip
226
//   Y1: 40 MHz; USER_CLOCK can be used as
227
//              external configuration clock
228
//   Y2: 66.667 MHz
229
//   Y3: 100 MHz 
230
//----------------------------------------------
231
input    USER_CLOCK;
232
input    CLOCK_Y2;
233
input    CLOCK_Y3;
234
 
235
//----------------------------------------------
236
// The following oscillator is not populated
237
// in production but the footprint is compatible
238
// with the Maxim DS1088LU                      
239
//----------------------------------------------
240
input    BACKUP_CLK;
241
 
242
//----------------------------------------------
243
// User DIP Switch x4
244
//----------------------------------------------
245
input    GPIO_DIP1;
246
input    GPIO_DIP2;
247
input    GPIO_DIP3;
248
input    GPIO_DIP4;
249
 
250
//----------------------------------------------
251
// User LEDs                    
252
//----------------------------------------------
253
output   GPIO_LED1;
254
output   GPIO_LED2;
255
output   GPIO_LED3;
256
output   GPIO_LED4;
257
 
258
//----------------------------------------------
259
// Silicon Labs CP2102 USB-to-UART Bridge Chip
260
//----------------------------------------------
261
input    USB_RS232_RXD;
262
output   USB_RS232_TXD;
263
 
264
//----------------------------------------------
265
// Texas Instruments CDCE913 programming port
266
//----------------------------------------------
267
output   SCL;
268
inout    SDA;
269
 
270
//----------------------------------------------
271
// Micron MT46H32M16LFBF-5 LPDDR                        
272
//----------------------------------------------
273
 
274
// Addresses
275
output   LPDDR_A0;
276
output   LPDDR_A1;
277
output   LPDDR_A2;
278
output   LPDDR_A3;
279
output   LPDDR_A4;
280
output   LPDDR_A5;
281
output   LPDDR_A6;
282
output   LPDDR_A7;
283
output   LPDDR_A8;
284
output   LPDDR_A9;
285
output   LPDDR_A10;
286
output   LPDDR_A11;
287
output   LPDDR_A12;
288
output   LPDDR_BA0;
289
output   LPDDR_BA1;
290
 
291
// Data                                                                  
292
inout    LPDDR_DQ0;
293
inout    LPDDR_DQ1;
294
inout    LPDDR_DQ2;
295
inout    LPDDR_DQ3;
296
inout    LPDDR_DQ4;
297
inout    LPDDR_DQ5;
298
inout    LPDDR_DQ6;
299
inout    LPDDR_DQ7;
300
inout    LPDDR_DQ8;
301
inout    LPDDR_DQ9;
302
inout    LPDDR_DQ10;
303
inout    LPDDR_DQ11;
304
inout    LPDDR_DQ12;
305
inout    LPDDR_DQ13;
306
inout    LPDDR_DQ14;
307
inout    LPDDR_DQ15;
308
output   LPDDR_LDM;
309
output   LPDDR_UDM;
310
inout    LPDDR_LDQS;
311
inout    LPDDR_UDQS;
312
 
313
// Clock
314
output   LPDDR_CK_N;
315
output   LPDDR_CK_P;
316
output   LPDDR_CKE;
317
 
318
// Control
319
output   LPDDR_CAS_n;
320
output   LPDDR_RAS_n;
321
output   LPDDR_WE_n;
322
inout    LPDDR_RZQ;
323
 
324
//----------------------------------------------
325
// National Semiconductor DP83848J 10/100 Ethernet PHY                  
326
//   Pull-ups on RXD are necessary to set the PHY AD to 11110b.
327
//   Must keep the PHY from defaulting to PHY AD = 00000b      
328
//   because this is Isolate Mode                              
329
//----------------------------------------------
330
input    ETH_COL;
331
input    ETH_CRS;
332
output   ETH_MDC;
333
inout    ETH_MDIO;
334
output   ETH_RESET_n;
335
input    ETH_RX_CLK;
336
input    ETH_RX_D0;
337
input    ETH_RX_D1;
338
input    ETH_RX_D2;
339
input    ETH_RX_D3;
340
input    ETH_RX_DV;
341
input    ETH_RX_ER;
342
input    ETH_TX_CLK;
343
output   ETH_TX_D0;
344
output   ETH_TX_D1;
345
output   ETH_TX_D2;
346
output   ETH_TX_D3;
347
output   ETH_TX_EN;
348
 
349
//----------------------------------------------
350
// Peripheral Modules (PMODs) and GPIO
351
//     https://www.digilentinc.com/PMODs
352
//----------------------------------------------
353
 
354
// Connector J5
355
inout    PMOD1_P1;
356
inout    PMOD1_P2;
357
inout    PMOD1_P3;
358
input    PMOD1_P4;
359
inout    PMOD1_P7;
360
inout    PMOD1_P8;
361
inout    PMOD1_P9;
362
inout    PMOD1_P10;
363
 
364
// Connector J4
365
inout    PMOD2_P1;
366
inout    PMOD2_P2;
367
inout    PMOD2_P3;
368
inout    PMOD2_P4;
369
inout    PMOD2_P7;
370
inout    PMOD2_P8;
371
inout    PMOD2_P9;
372
inout    PMOD2_P10;
373
 
374
 
375
//=============================================================================
376
// 1)  INTERNAL WIRES/REGISTERS/PARAMETERS DECLARATION
377
//=============================================================================
378
 
379
// Clock generation
380
wire               clk_40mhz;
381
wire               dcm_locked;
382
wire               dcm_clkfx;
383
wire               dcm_clk0;
384
wire               dcm_clkfb;
385
wire               dco_clk;
386
 
387
// Reset generation
388
wire               reset_pin;
389
wire               reset_pin_n;
390
wire               reset_n;
391
 
392
// Debug interface
393
wire               omsp0_dbg_i2c_scl;
394
wire               omsp0_dbg_i2c_sda_in;
395
wire               omsp0_dbg_i2c_sda_out;
396
wire        [23:0] chipscope_trigger;
397
wire               omsp0_dbg_uart_rxd;
398
wire               omsp0_dbg_uart_txd;
399
 
400
// Data memory
401
wire [`DMEM_MSB:0] omsp0_dmem_addr;
402
wire               omsp0_dmem_cen;
403
wire        [15:0] omsp0_dmem_din;
404
wire         [1:0] omsp0_dmem_wen;
405
wire        [15:0] omsp0_dmem_dout;
406
 
407
// Program memory
408
wire [`PMEM_MSB:0] omsp0_pmem_addr;
409
wire               omsp0_pmem_cen;
410
wire        [15:0] omsp0_pmem_din;
411
wire         [1:0] omsp0_pmem_wen;
412
wire        [15:0] omsp0_pmem_dout;
413
 
414
// UART
415
wire               omsp0_uart_rxd;
416
wire               omsp0_uart_txd;
417
 
418
// LEDs & Switches
419
wire         [3:0] omsp0_switch;
420
wire         [3:0] omsp0_led;
421
 
422
 
423
//=============================================================================
424
// 2)  RESET GENERATION & FPGA STARTUP
425
//=============================================================================
426
 
427
// Reset input buffer
428
IBUF   ibuf_reset_n   (.O(reset_pin), .I(USER_RESET));
429
assign reset_pin_n = ~reset_pin;
430
 
431
// Release the reset only, if the DCM is locked
432
assign  reset_n = reset_pin_n & dcm_locked;
433
 
434
// Top level reset generation
435
wire dco_rst;
436
omsp_sync_reset sync_reset_dco (.rst_s (dco_rst), .clk(dco_clk), .rst_a(!reset_n));
437
 
438
 
439
//=============================================================================
440
// 3)  CLOCK GENERATION
441
//=============================================================================
442
 
443
// Input buffers
444
//------------------------
445
IBUFG ibuf_clk_main   (.O(clk_40mhz),    .I(USER_CLOCK));
446
IBUFG ibuf_clk_y2     (.O(),             .I(CLOCK_Y2));
447
IBUFG ibuf_clk_y3     (.O(),             .I(CLOCK_Y3));
448
IBUFG ibuf_clk_bkup   (.O(),             .I(BACKUP_CLK));
449
 
450
 
451
// Digital Clock Manager
452
//------------------------
453
DCM_SP #(.CLKFX_MULTIPLY(7),
454
         .CLKFX_DIVIDE(10),
455
         .CLKIN_PERIOD(25.000)) dcm_inst (
456
 
457
// OUTPUTs
458
    .CLKFX        (dcm_clkfx),
459
    .CLK0         (dcm_clk0),
460
    .LOCKED       (dcm_locked),
461
 
462
// INPUTs
463
    .CLKFB        (dcm_clkfb),
464
    .CLKIN        (clk_40mhz),
465
    .PSEN         (1'b0),
466
    .RST          (reset_pin)
467
);
468
 
469
BUFG CLK0_BUFG_INST (
470
    .I(dcm_clk0),
471
    .O(dcm_clkfb)
472
);
473
 
474
//synthesis translate_off
475
defparam dcm_inst.CLKFX_MULTIPLY  = 7;
476
defparam dcm_inst.CLKFX_DIVIDE    = 10;
477
defparam dcm_inst.CLKIN_PERIOD    = 25.000;
478
//synthesis translate_on
479
 
480
// Clock buffers
481
//------------------------
482
BUFG  buf_sys_clock  (.O(dco_clk), .I(dcm_clkfx));
483
 
484
 
485
//=============================================================================
486
// 4)  OPENMSP430 SYSTEM 0
487
//=============================================================================
488
 
489
omsp_system_0 omsp_system_0_inst (
490
 
491
// Clock & Reset
492
    .dco_clk           (dco_clk),                     // Fast oscillator (fast clock)
493
    .reset_n           (reset_n),                     // Reset Pin (low active, asynchronous and non-glitchy)
494
 
495
// Serial Debug Interface (UART)
496
    .dbg_uart_rxd      (omsp0_dbg_uart_rxd),          // Debug interface: UART RXD (asynchronous)
497
    .dbg_uart_txd      (omsp0_dbg_uart_txd),          // Debug interface: UART TXD
498
 
499
// Serial Debug Interface (I2C)
500
    .dbg_i2c_addr      (7'h50),                       // Debug interface: I2C Address
501
    .dbg_i2c_broadcast (7'h4F),                       // Debug interface: I2C Broadcast Address (for multicore systems)
502
    .dbg_i2c_scl       (omsp0_dbg_i2c_scl),           // Debug interface: I2C SCL
503
    .dbg_i2c_sda_in    (omsp0_dbg_i2c_sda_in),        // Debug interface: I2C SDA IN
504
    .dbg_i2c_sda_out   (omsp0_dbg_i2c_sda_out),       // Debug interface: I2C SDA OUT
505
 
506
// Data Memory
507
    .dmem_addr         (omsp0_dmem_addr),             // Data Memory address
508
    .dmem_cen          (omsp0_dmem_cen),              // Data Memory chip enable (low active)
509
    .dmem_din          (omsp0_dmem_din),              // Data Memory data input
510
    .dmem_wen          (omsp0_dmem_wen),              // Data Memory write enable (low active)
511
    .dmem_dout         (omsp0_dmem_dout),             // Data Memory data output
512
 
513
// Program Memory
514
    .pmem_addr         (omsp0_pmem_addr),             // Program Memory address
515
    .pmem_cen          (omsp0_pmem_cen),              // Program Memory chip enable (low active)
516
    .pmem_din          (omsp0_pmem_din),              // Program Memory data input (optional)
517
    .pmem_wen          (omsp0_pmem_wen),              // Program Memory write enable (low active) (optional)
518
    .pmem_dout         (omsp0_pmem_dout),             // Program Memory data output
519
 
520
// UART
521
    .uart_rxd          (omsp0_uart_rxd),              // UART Data Receive (RXD)
522
    .uart_txd          (omsp0_uart_txd),              // UART Data Transmit (TXD)
523
 
524
// Switches & LEDs
525
    .switch            (omsp0_switch),                // Input switches
526
    .led               (omsp0_led)                    // LEDs
527
);
528
 
529
 
530
//=============================================================================
531
// 6)  PROGRAM AND DATA MEMORIES
532
//=============================================================================
533
 
534
// Data Memory
535
ram_16x512 ram_16x512_dmem (
536
    .clka           ( dco_clk),
537
    .ena            (~omsp0_dmem_cen),
538
    .wea            (~omsp0_dmem_wen),
539
    .addra          ( omsp0_dmem_addr),
540
    .dina           ( omsp0_dmem_din),
541
    .douta          ( omsp0_dmem_dout)
542
);
543
 
544
 
545
// Program Memory
546
ram_16x2k  ram_16x2k_pmem  (
547
    .clka           ( dco_clk),
548
    .ena            (~omsp0_pmem_cen),
549
    .wea            (~omsp0_pmem_wen),
550
    .addra          ( omsp0_pmem_addr),
551
    .dina           ( omsp0_pmem_din),
552
    .douta          ( omsp0_pmem_dout)
553
);
554
 
555
 
556
//=============================================================================
557
// 7)  I/O CELLS
558
//=============================================================================
559
 
560
//----------------------------------------------
561
// Micron N25Q128 SPI Flash
562
//   This is a Multi-I/O Flash.  Several pins
563
//  have dual purposes depending on the mode.
564
//----------------------------------------------
565
OBUF  SPI_CLK_PIN        (.I(1'b0),                  .O(SPI_SCK));
566
OBUF  SPI_CSN_PIN        (.I(1'b1),                  .O(SPI_CS_n));
567
IOBUF SPI_MOSI_MISO0_PIN (.T(1'b0), .I(1'b0), .O(),  .IO(SPI_MOSI_MISO0));
568
IOBUF SPI_MISO_MISO1_PIN (.T(1'b0), .I(1'b0), .O(),  .IO(SPI_MISO_MISO1));
569
OBUF  SPI_WN_PIN         (.I(1'b1),                  .O(SPI_Wn_MISO2));
570
OBUF  SPI_HOLD_PIN       (.I(1'b1),                  .O(SPI_HOLDn_MISO3));
571
 
572
//----------------------------------------------
573
// User DIP Switch x4
574
//----------------------------------------------
575
IBUF  SW3_PIN            (.O(omsp0_switch[3]),       .I(GPIO_DIP4));
576
IBUF  SW2_PIN            (.O(omsp0_switch[2]),       .I(GPIO_DIP3));
577
IBUF  SW1_PIN            (.O(omsp0_switch[1]),       .I(GPIO_DIP2));
578
IBUF  SW0_PIN            (.O(omsp0_switch[0]),       .I(GPIO_DIP1));
579
 
580
//----------------------------------------------
581
// User LEDs                    
582
//----------------------------------------------
583
OBUF  LED3_PIN           (.I(omsp0_led[3]),          .O(GPIO_LED4));
584
OBUF  LED2_PIN           (.I(omsp0_led[2]),          .O(GPIO_LED3));
585
OBUF  LED1_PIN           (.I(omsp0_led[1]),          .O(GPIO_LED2));
586
OBUF  LED0_PIN           (.I(omsp0_led[0]),          .O(GPIO_LED1));
587
 
588
//----------------------------------------------
589
// Silicon Labs CP2102 USB-to-UART Bridge Chip
590
//----------------------------------------------
591
IBUF  UART_RXD_PIN       (.O(omsp0_uart_rxd),        .I(USB_RS232_RXD));
592
OBUF  UART_TXD_PIN       (.I(omsp0_uart_txd),        .O(USB_RS232_TXD));
593
 
594
//----------------------------------------------
595
// Texas Instruments CDCE913 programming port
596
//----------------------------------------------
597
IOBUF SCL_PIN            (.T(1'b0), .I(1'b1), .O(),  .IO(SCL));
598
IOBUF SDA_PIN            (.T(1'b0), .I(1'b1), .O(),  .IO(SDA));
599
 
600
//----------------------------------------------
601
// Micron MT46H32M16LFBF-5 LPDDR                        
602
//----------------------------------------------
603
 
604
// Addresses
605
OBUF  LPDDR_A0_PIN       (.I(1'b0),                  .O(LPDDR_A0));
606
OBUF  LPDDR_A1_PIN       (.I(1'b0),                  .O(LPDDR_A1));
607
OBUF  LPDDR_A2_PIN       (.I(1'b0),                  .O(LPDDR_A2));
608
OBUF  LPDDR_A3_PIN       (.I(1'b0),                  .O(LPDDR_A3));
609
OBUF  LPDDR_A4_PIN       (.I(1'b0),                  .O(LPDDR_A4));
610
OBUF  LPDDR_A5_PIN       (.I(1'b0),                  .O(LPDDR_A5));
611
OBUF  LPDDR_A6_PIN       (.I(1'b0),                  .O(LPDDR_A6));
612
OBUF  LPDDR_A7_PIN       (.I(1'b0),                  .O(LPDDR_A7));
613
OBUF  LPDDR_A8_PIN       (.I(1'b0),                  .O(LPDDR_A8));
614
OBUF  LPDDR_A9_PIN       (.I(1'b0),                  .O(LPDDR_A9));
615
OBUF  LPDDR_A10_PIN      (.I(1'b0),                  .O(LPDDR_A10));
616
OBUF  LPDDR_A11_PIN      (.I(1'b0),                  .O(LPDDR_A11));
617
OBUF  LPDDR_A12_PIN      (.I(1'b0),                  .O(LPDDR_A12));
618
OBUF  LPDDR_BA0_PIN      (.I(1'b0),                  .O(LPDDR_BA0));
619
OBUF  LPDDR_BA1_PIN      (.I(1'b0),                  .O(LPDDR_BA1));
620
 
621
// Data                                                                  
622
IOBUF LPDDR_DQ0_PIN      (.T(1'b0), .I(1'b0), .O(),  .IO(LPDDR_DQ0));
623
IOBUF LPDDR_DQ1_PIN      (.T(1'b0), .I(1'b0), .O(),  .IO(LPDDR_DQ1));
624
IOBUF LPDDR_DQ2_PIN      (.T(1'b0), .I(1'b0), .O(),  .IO(LPDDR_DQ2));
625
IOBUF LPDDR_DQ3_PIN      (.T(1'b0), .I(1'b0), .O(),  .IO(LPDDR_DQ3));
626
IOBUF LPDDR_DQ4_PIN      (.T(1'b0), .I(1'b0), .O(),  .IO(LPDDR_DQ4));
627
IOBUF LPDDR_DQ5_PIN      (.T(1'b0), .I(1'b0), .O(),  .IO(LPDDR_DQ5));
628
IOBUF LPDDR_DQ6_PIN      (.T(1'b0), .I(1'b0), .O(),  .IO(LPDDR_DQ6));
629
IOBUF LPDDR_DQ7_PIN      (.T(1'b0), .I(1'b0), .O(),  .IO(LPDDR_DQ7));
630
IOBUF LPDDR_DQ8_PIN      (.T(1'b0), .I(1'b0), .O(),  .IO(LPDDR_DQ8));
631
IOBUF LPDDR_DQ9_PIN      (.T(1'b0), .I(1'b0), .O(),  .IO(LPDDR_DQ9));
632
IOBUF LPDDR_DQ10_PIN     (.T(1'b0), .I(1'b0), .O(),  .IO(LPDDR_DQ10));
633
IOBUF LPDDR_DQ11_PIN     (.T(1'b0), .I(1'b0), .O(),  .IO(LPDDR_DQ11));
634
IOBUF LPDDR_DQ12_PIN     (.T(1'b0), .I(1'b0), .O(),  .IO(LPDDR_DQ12));
635
IOBUF LPDDR_DQ13_PIN     (.T(1'b0), .I(1'b0), .O(),  .IO(LPDDR_DQ13));
636
IOBUF LPDDR_DQ14_PIN     (.T(1'b0), .I(1'b0), .O(),  .IO(LPDDR_DQ14));
637
IOBUF LPDDR_DQ15_PIN     (.T(1'b0), .I(1'b0), .O(),  .IO(LPDDR_DQ15));
638
OBUF  LPDDR_LDM_PIN      (.I(1'b0),                  .O(LPDDR_LDM));
639
OBUF  LPDDR_UDM_PIN      (.I(1'b0),                  .O(LPDDR_UDM));
640
IOBUF LPDDR_LDQS_PIN     (.T(1'b0), .I(1'b0), .O(),  .IO(LPDDR_LDQS));
641
IOBUF LPDDR_UDQS_PIN     (.T(1'b0), .I(1'b0), .O(),  .IO(LPDDR_UDQS));
642
 
643
// Clock
644
IOBUF LPDDR_CK_N_PIN     (.T(1'b1), .I(1'b0), .O(),  .IO(LPDDR_CK_N));
645
IOBUF LPDDR_CK_P_PIN     (.T(1'b1), .I(1'b1), .O(),  .IO(LPDDR_CK_P));
646
OBUF  LPDDR_CKE_PIN      (.I(1'b0),                  .O(LPDDR_CKE));
647
 
648
// Control
649
OBUF  LPDDR_CAS_N_PIN    (.I(1'b1),                  .O(LPDDR_CAS_n));
650
OBUF  LPDDR_RAS_N_PIN    (.I(1'b1),                  .O(LPDDR_RAS_n));
651
OBUF  LPDDR_WE_N_PIN     (.I(1'b1),                  .O(LPDDR_WE_n));
652
IOBUF LPDDR_RZQ_PIN      (.T(1'b0), .I(1'b0), .O(),  .IO(LPDDR_RZQ));
653
 
654
 
655
//----------------------------------------------
656
// National Semiconductor DP83848J 10/100 Ethernet PHY                  
657
//   Pull-ups on RXD are necessary to set the PHY AD to 11110b.
658
//   Must keep the PHY from defaulting to PHY AD = 00000b      
659
//   because this is Isolate Mode                              
660
//----------------------------------------------
661
IBUF  ETH_COL_PIN        (.O(),                      .I(ETH_COL));
662
IBUF  ETH_CRS_PIN        (.O(),                      .I(ETH_CRS));
663
OBUF  ETH_MDC_PIN        (.I(1'b0),                  .O(ETH_MDC));
664
IOBUF ETH_MDIO_PIN       (.T(1'b0), .I(1'b0), .O(),  .IO(ETH_MDIO));
665
OBUF  ETH_RESET_N_PIN    (.I(1'b1),                  .O(ETH_RESET_n));
666
IBUF  ETH_RX_CLK_PIN     (.O(),                      .I(ETH_RX_CLK));
667
IBUF  ETH_RX_D0_PIN      (.O(),                      .I(ETH_RX_D0));
668
IBUF  ETH_RX_D1_PIN      (.O(),                      .I(ETH_RX_D1));
669
IBUF  ETH_RX_D2_PIN      (.O(),                      .I(ETH_RX_D2));
670
IBUF  ETH_RX_D3_PIN      (.O(),                      .I(ETH_RX_D3));
671
IBUF  ETH_RX_DV_PIN      (.O(),                      .I(ETH_RX_DV));
672
IBUF  ETH_RX_ER_PIN      (.O(),                      .I(ETH_RX_ER));
673
IBUF  ETH_TX_CLK_PIN     (.O(),                      .I(ETH_TX_CLK));
674
OBUF  ETH_TX_D0_PIN      (.I(1'b0),                  .O(ETH_TX_D0));
675
OBUF  ETH_TX_D1_PIN      (.I(1'b0),                  .O(ETH_TX_D1));
676
OBUF  ETH_TX_D2_PIN      (.I(1'b0),                  .O(ETH_TX_D2));
677
OBUF  ETH_TX_D3_PIN      (.I(1'b0),                  .O(ETH_TX_D3));
678
OBUF  ETH_TX_EN_PIN      (.I(1'b0),                  .O(ETH_TX_EN));
679
 
680
//----------------------------------------------
681
// Peripheral Modules (PMODs) and GPIO
682
//     https://www.digilentinc.com/PMODs
683
//----------------------------------------------
684
 
685
`ifdef DBG_UART
686
// Connector J5
687
IOBUF PMOD1_P1_PIN       (.T(1'b0),                  .I(1'b0), .O(),                     .IO(PMOD1_P1));
688
IOBUF PMOD1_P2_PIN       (.T(1'b0),                  .I(1'b0), .O(),                     .IO(PMOD1_P2));
689
OBUF  PMOD1_P3_PIN       (                           .I(omsp0_dbg_uart_txd),             .O (PMOD1_P3));
690
IBUF  PMOD1_P4_PIN       (                                     .O(omsp0_dbg_uart_rxd),   .I (PMOD1_P4));
691
IOBUF PMOD1_P7_PIN       (.T(1'b0),                  .I(1'b0), .O(),                     .IO(PMOD1_P7));
692
IBUF  PMOD1_P8_PIN       (                                     .O(),                     .I (PMOD1_P8));
693
IOBUF PMOD1_P9_PIN       (.T(1'b0),                  .I(1'b0), .O(),                     .IO(PMOD1_P9));
694
IOBUF PMOD1_P10_PIN      (.T(1'b0),                  .I(1'b0), .O(),                     .IO(PMOD1_P10));
695
 
696
`else
697
// Connector J5
698
IOBUF PMOD1_P1_PIN       (.T(1'b0),                  .I(1'b0), .O(),                     .IO(PMOD1_P1));
699
IOBUF PMOD1_P2_PIN       (.T(1'b0),                  .I(1'b0), .O(),                     .IO(PMOD1_P2));
700
IOBUF PMOD1_P3_PIN       (.T(omsp0_dbg_i2c_sda_out), .I(1'b0), .O(omsp0_dbg_i2c_sda_in), .IO(PMOD1_P3));
701
IBUF  PMOD1_P4_PIN       (                                     .O(omsp0_dbg_i2c_scl),    .I (PMOD1_P4));
702
IOBUF PMOD1_P7_PIN       (.T(1'b0),                  .I(1'b0), .O(),                     .IO(PMOD1_P7));
703
IBUF  PMOD1_P8_PIN       (                                     .O(),                     .I (PMOD1_P8));
704
IOBUF PMOD1_P9_PIN       (.T(1'b0),                  .I(1'b0), .O(),                     .IO(PMOD1_P9));
705
IOBUF PMOD1_P10_PIN      (.T(1'b0),                  .I(1'b0), .O(),                     .IO(PMOD1_P10));
706
`endif
707
 
708
// Connector J4
709
IOBUF PMOD2_P1_PIN       (.T(1'b0), .I(1'b0), .O(),  .IO(PMOD2_P1));
710
IOBUF PMOD2_P2_PIN       (.T(1'b0), .I(1'b0), .O(),  .IO(PMOD2_P2));
711
IOBUF PMOD2_P3_PIN       (.T(1'b0), .I(1'b0), .O(),  .IO(PMOD2_P3));
712
IOBUF PMOD2_P4_PIN       (.T(1'b0), .I(1'b0), .O(),  .IO(PMOD2_P4));
713
IOBUF PMOD2_P7_PIN       (.T(1'b0), .I(1'b0), .O(),  .IO(PMOD2_P7));
714
IOBUF PMOD2_P8_PIN       (.T(1'b0), .I(1'b0), .O(),  .IO(PMOD2_P8));
715
IOBUF PMOD2_P9_PIN       (.T(1'b0), .I(1'b0), .O(),  .IO(PMOD2_P9));
716
IOBUF PMOD2_P10_PIN      (.T(1'b0), .I(1'b0), .O(),  .IO(PMOD2_P10));
717
 
718
 
719
//=============================================================================
720
//8)  CHIPSCOPE
721
//=============================================================================
722
//`define WITH_CHIPSCOPE
723
`ifdef WITH_CHIPSCOPE
724
 
725
// Sampling clock
726
reg [7:0] div_cnt;
727
always @ (posedge dco_clk or posedge dco_rst)
728
  if (dco_rst)           div_cnt <=  8'h00;
729
  else if (div_cnt > 10) div_cnt <=  8'h00;
730
  else                   div_cnt <=  div_cnt+8'h01;
731
 
732
reg clk_sample;
733
always @ (posedge dco_clk or posedge dco_rst)
734
  if (dco_rst) clk_sample <=  1'b0;
735
  else         clk_sample <=  (div_cnt==8'h00);
736
 
737
 
738
// ChipScope instance
739
wire        [35:0] chipscope_control;
740
chipscope_ila chipscope_ila (
741
    .CONTROL  (chipscope_control),
742
    .CLK      (clk_sample),
743
    .TRIG0    (chipscope_trigger)
744
);
745
 
746
chipscope_icon chipscope_icon (
747
    .CONTROL0 (chipscope_control)
748
);
749
 
750
 
751
assign chipscope_trigger[0]     = 1'b0;
752
assign chipscope_trigger[1]     = omsp0_dbg_uart_rxd;
753
assign chipscope_trigger[2]     = omsp0_dbg_uart_txd;
754
assign chipscope_trigger[23:3]  = 21'h00_0000;
755
`endif
756
 
757
endmodule // openMSP430_fpga
758
 

powered by: WebSVN 2.1.0

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