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

Subversion Repositories openmsp430

[/] [openmsp430/] [trunk/] [core/] [synthesis/] [altera/] [src/] [openMSP430_fpga.v] - Blame information for rev 63

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 63 olivier.gi
//----------------------------------------------------------------------------
2
// Copyright (C) 2001 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 Xilinx synthesis.
29
//
30
// *Author(s):
31
//              - Olivier Girard,    olgirard@gmail.com
32
//
33
//----------------------------------------------------------------------------
34
// $Rev: 37 $
35
// $LastChangedBy: olivier.girard $
36
// $LastChangedDate: 2009-12-29 21:58:14 +0100 (Tue, 29 Dec 2009) $
37
//----------------------------------------------------------------------------
38
`include "arch.v"
39
`include "timescale.v"
40
`include "openMSP430_defines.v"
41
 
42
module openMSP430_fpga (
43
 
44
// OUTPUTs
45
    aclk_en,                      // ACLK enable
46
    dbg_freeze,                   // Freeze peripherals
47
    dbg_uart_txd,                 // Debug interface: UART TXD
48
    irq_acc,                      // Interrupt request accepted (one-hot signal)
49
    per_addr,                     // Peripheral address
50
    per_din,                      // Peripheral data input
51
    per_wen,                      // Peripheral write enable (high active)
52
    per_en,                       // Peripheral enable (high active)
53
    smclk_en,                     // SMCLK enable
54
 
55
// INPUTs
56
    dbg_uart_rxd,                 // Debug interface: UART RXD
57
    dco_clk,                      // Fast oscillator (fast clock)
58
    irq,                          // Maskable interrupts
59
    lfxt_clk,                     // Low frequency oscillator (typ 32kHz)
60
    nmi,                          // Non-maskable interrupt (asynchronous)
61
    per_dout,                     // Peripheral data output
62
    reset_n                       // Reset Pin (low active)
63
);
64
 
65
// OUTPUTs
66
//=========
67
output              aclk_en;      // ACLK enable
68
output              dbg_freeze;   // Freeze peripherals
69
output              dbg_uart_txd; // Debug interface: UART TXD
70
output       [13:0] irq_acc;      // Interrupt request accepted (one-hot signal)
71
output        [7:0] per_addr;     // Peripheral address
72
output       [15:0] per_din;      // Peripheral data input
73
output        [1:0] per_wen;      // Peripheral write enable (high active)
74
output              per_en;       // Peripheral enable (high active)
75
output              smclk_en;     // SMCLK enable
76
 
77
 
78
// INPUTs
79
//=========
80
input               dbg_uart_rxd; // Debug interface: UART RXD
81
input               dco_clk;      // Fast oscillator (fast clock)
82
input        [13:0] irq;          // Maskable interrupts
83
input               lfxt_clk;     // Low frequency oscillator (typ 32kHz)
84
input               nmi;          // Non-maskable interrupt (asynchronous)
85
input        [15:0] per_dout;     // Peripheral data output
86
input               reset_n;      // Reset Pin (active low)
87
 
88
 
89
//=============================================================================
90
// 1)  INTERNAL WIRES/REGISTERS/PARAMETERS DECLARATION
91
//=============================================================================
92
 
93
wire  [`DMEM_MSB:0] dmem_addr;
94
wire                dmem_cen;
95
wire         [15:0] dmem_din;
96
wire          [1:0] dmem_wen;
97
wire         [15:0] dmem_dout;
98
 
99
wire  [`PMEM_MSB:0] pmem_addr;
100
wire                pmem_cen;
101
wire         [15:0] pmem_din;
102
wire          [1:0] pmem_wen;
103
wire         [15:0] pmem_dout;
104
 
105
wire                mclk;
106
wire                puc;
107
 
108
 
109
//=============================================================================
110
// 2)  PROGRAM AND DATA MEMORIES
111
//=============================================================================
112
 
113
`ifdef CYCLONE_II
114
  cyclone2_pmem pmem (.clock(mclk), .clken(~pmem_cen), .wren(~(&pmem_wen)), .byteena(~pmem_wen), .address(pmem_addr), .data(pmem_din), .q(pmem_dout));
115
  cyclone2_dmem dmem (.clock(mclk), .clken(~dmem_cen), .wren(~(&dmem_wen)), .byteena(~dmem_wen), .address(dmem_addr), .data(dmem_din), .q(dmem_dout));
116
`endif
117
`ifdef CYCLONE_III
118
  cyclone3_pmem pmem (.clock(mclk), .clken(~pmem_cen), .wren(~(&pmem_wen)), .byteena(~pmem_wen), .address(pmem_addr), .data(pmem_din), .q(pmem_dout));
119
  cyclone3_dmem dmem (.clock(mclk), .clken(~dmem_cen), .wren(~(&dmem_wen)), .byteena(~dmem_wen), .address(dmem_addr), .data(dmem_din), .q(dmem_dout));
120
`endif
121
`ifdef CYCLONE_IV_GX
122
  cyclone4gx_pmem pmem (.clock(mclk), .clken(~pmem_cen), .wren(~(&pmem_wen)), .byteena(~pmem_wen), .address(pmem_addr), .data(pmem_din), .q(pmem_dout));
123
  cyclone4gx_dmem dmem (.clock(mclk), .clken(~dmem_cen), .wren(~(&dmem_wen)), .byteena(~dmem_wen), .address(dmem_addr), .data(dmem_din), .q(dmem_dout));
124
`endif
125
`ifdef ARRIA_GX
126
  arriagx_pmem pmem (.clock(mclk), .clken(~pmem_cen), .wren(~(&pmem_wen)), .byteena(~pmem_wen), .address(pmem_addr), .data(pmem_din), .q(pmem_dout));
127
  arriagx_dmem dmem (.clock(mclk), .clken(~dmem_cen), .wren(~(&dmem_wen)), .byteena(~dmem_wen), .address(dmem_addr), .data(dmem_din), .q(dmem_dout));
128
`endif
129
`ifdef ARRIA_II_GX
130
  arria2gx_pmem pmem (.clock(mclk), .clken(~pmem_cen), .wren(~(&pmem_wen)), .byteena(~pmem_wen), .address(pmem_addr), .data(pmem_din), .q(pmem_dout));
131
  arria2gx_dmem dmem (.clock(mclk), .clken(~dmem_cen), .wren(~(&dmem_wen)), .byteena(~dmem_wen), .address(dmem_addr), .data(dmem_din), .q(dmem_dout));
132
`endif
133
`ifdef STRATIX
134
  stratix_pmem pmem (.clock(mclk), .clken(~pmem_cen), .wren(~(&pmem_wen)), .byteena(~pmem_wen), .address(pmem_addr), .data(pmem_din), .q(pmem_dout));
135
  stratix_dmem dmem (.clock(mclk), .clken(~dmem_cen), .wren(~(&dmem_wen)), .byteena(~dmem_wen), .address(dmem_addr), .data(dmem_din), .q(dmem_dout));
136
`endif
137
`ifdef STRATIX_II
138
  stratix2_pmem pmem (.clock(mclk), .clken(~pmem_cen), .wren(~(&pmem_wen)), .byteena(~pmem_wen), .address(pmem_addr), .data(pmem_din), .q(pmem_dout));
139
  stratix2_dmem dmem (.clock(mclk), .clken(~dmem_cen), .wren(~(&dmem_wen)), .byteena(~dmem_wen), .address(dmem_addr), .data(dmem_din), .q(dmem_dout));
140
`endif
141
`ifdef STRATIX_III
142
  stratix3_pmem pmem (.clock(mclk), .clken(~pmem_cen), .wren(~(&pmem_wen)), .byteena(~pmem_wen), .address(pmem_addr), .data(pmem_din), .q(pmem_dout));
143
  stratix3_dmem dmem (.clock(mclk), .clken(~dmem_cen), .wren(~(&dmem_wen)), .byteena(~dmem_wen), .address(dmem_addr), .data(dmem_din), .q(dmem_dout));
144
`endif
145
 
146
 
147
 
148
//=============================================================================
149
// 3)  OPENMSP430
150
//=============================================================================
151
 
152
openMSP430 openMSP430_0 (
153
 
154
// OUTPUTs
155
    .aclk_en      (aclk_en),      // ACLK enable
156
    .dbg_freeze   (dbg_freeze),   // Freeze peripherals
157
    .dbg_uart_txd (dbg_uart_txd), // Debug interface: UART TXD
158
    .dmem_addr    (dmem_addr),    // Data Memory address
159
    .dmem_cen     (dmem_cen),     // Data Memory chip enable (low active)
160
    .dmem_din     (dmem_din),     // Data Memory data input
161
    .dmem_wen     (dmem_wen),     // Data Memory write enable (low active)
162
    .irq_acc      (irq_acc),      // Interrupt request accepted (one-hot signal)
163
    .mclk         (mclk),         // Main system clock
164
    .per_addr     (per_addr),     // Peripheral address
165
    .per_din      (per_din),      // Peripheral data input
166
    .per_wen      (per_wen),      // Peripheral write enable (high active)
167
    .per_en       (per_en),       // Peripheral enable (high active)
168
    .pmem_addr    (pmem_addr),    // Program Memory address
169
    .pmem_cen     (pmem_cen),     // Program Memory chip enable (low active)
170
    .pmem_din     (pmem_din),     // Program Memory data input (optional)
171
    .pmem_wen     (pmem_wen),     // Program Memory write enable (low active) (optional)
172
    .puc          (puc),          // Main system reset
173
    .smclk_en     (smclk_en),     // SMCLK enable
174
 
175
// INPUTs
176
    .dbg_uart_rxd (dbg_uart_rxd), // Debug interface: UART RXD
177
    .dco_clk      (dco_clk),      // Fast oscillator (fast clock)
178
    .dmem_dout    (dmem_dout),    // Data Memory data output
179
    .irq          (irq),          // Maskable interrupts
180
    .lfxt_clk     (lfxt_clk),     // Low frequency oscillator (typ 32kHz)
181
    .nmi          (nmi),          // Non-maskable interrupt (asynchronous)
182
    .per_dout     (per_dout),     // Peripheral data output
183
    .pmem_dout    (pmem_dout),    // Program Memory data output
184
    .reset_n      (reset_n)       // Reset Pin (low active)
185
);
186
 
187
 
188
 
189
endmodule // openMSP430_fpga
190
 

powered by: WebSVN 2.1.0

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