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

Subversion Repositories de1_olpcl2294_system

[/] [de1_olpcl2294_system/] [trunk/] [src/] [gpio_defines.v] - Blame information for rev 4

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

Line No. Rev Author Line
1 4 qaztronic
//////////////////////////////////////////////////////////////////////
2
////                                                              ////
3
////  WISHBONE GPIO Definitions                                   ////
4
////                                                              ////
5
////  This file is part of the GPIO project                       ////
6
////  http://www.opencores.org/cores/gpio/                        ////
7
////                                                              ////
8
////  Description                                                 ////
9
////  GPIO IP Definitions.                                        ////
10
////                                                              ////
11
////  To Do:                                                      ////
12
////   Nothing                                                    ////
13
////                                                              ////
14
////  Author(s):                                                  ////
15
////      - Damjan Lampret, lampret@opencores.org                 ////
16
////                                                              ////
17
//////////////////////////////////////////////////////////////////////
18
////                                                              ////
19
//// Copyright (C) 2000 Authors and OPENCORES.ORG                 ////
20
////                                                              ////
21
//// This source file may be used and distributed without         ////
22
//// restriction provided that this copyright statement is not    ////
23
//// removed from the file and that any derivative work contains  ////
24
//// the original copyright notice and the associated disclaimer. ////
25
////                                                              ////
26
//// This source file is free software; you can redistribute it   ////
27
//// and/or modify it under the terms of the GNU Lesser General   ////
28
//// Public License as published by the Free Software Foundation; ////
29
//// either version 2.1 of the License, or (at your option) any   ////
30
//// later version.                                               ////
31
////                                                              ////
32
//// This source is distributed in the hope that it will be       ////
33
//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
34
//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
35
//// PURPOSE.  See the GNU Lesser General Public License for more ////
36
//// details.                                                     ////
37
////                                                              ////
38
//// You should have received a copy of the GNU Lesser General    ////
39
//// Public License along with this source; if not, download it   ////
40
//// from http://www.opencores.org/lgpl.shtml                     ////
41
////                                                              ////
42
//////////////////////////////////////////////////////////////////////
43
//
44
 
45
//
46
// Number of GPIO I/O signals
47
//
48
// This is the most important parameter of the GPIO IP core. It defines how many
49
// I/O signals core has. Range is from 1 to 32. If more than 32 I/O signals are
50
// required, use several instances of GPIO IP core.
51
//
52
// Default is 16.
53
//
54
`define GPIO_IOS 32
55
 
56
//depending on number of GPIO_IOS, define this...
57
// for example: if there is 26 GPIO_IOS, define GPIO_LINES26
58
//
59
 
60
`define GPIO_LINES32
61
 
62
//
63
// Undefine this one if you don't want to remove GPIO block from your design
64
// but you also don't need it. When it is undefined, all GPIO ports still
65
// remain valid and the core can be synthesized however internally there is
66
// no GPIO funationality.
67
//
68
// Defined by default (duhh !).
69
//
70
`define GPIO_IMPLEMENTED
71
 
72
//
73
// Define to register all WISHBONE outputs.
74
//
75
// Register outputs if you are using GPIO core as a block and synthesizing
76
// and place&routing it separately from the rest of the system.
77
//
78
// If you do not need registered outputs, you can save some area by not defining
79
// this macro. By default it is defined.
80
//
81
`define GPIO_REGISTERED_WB_OUTPUTS
82
 
83
//
84
// Define to register all GPIO pad outputs.
85
//
86
// Register outputs if you are using GPIO core as a block and synthesizing
87
// and place&routing it separately from the rest of the system.
88
//
89
// If you do not need registered outputs, you can save some area by not defining
90
// this macro. By default it is defined.
91
//
92
`define GPIO_REGISTERED_IO_OUTPUTS
93
 
94
//
95
// Implement aux feature. If this define is not defined also aux_i port and 
96
// RGPIO_AUX register will be removed
97
//
98
// Defined by default.
99
//
100
`define GPIO_AUX_IMPLEMENT
101
 
102
//
103
// If this is not defined clk_pad_i will be removed. Input lines will be lached on 
104
// positive edge of system clock
105
// if disabled defines GPIO_NO_NEGEDGE_FLOPS, GPIO_NO_CLKPAD_LOGIC will have no effect.
106
//
107
// Defined by default.
108
//
109
// `define GPIO_CLKPAD
110
 
111
//
112
// Define to avoid using negative edge clock flip-flops for external clock
113
// (caused by NEC register. Instead an inverted external clock with
114
// positive edge clock flip-flops will be used.
115
// This define don't have any effect if GPIO_CLKPAD is not defined and if GPIO_SYNC_IN_CLK is defined
116
//
117
// By default it is not defined.
118
//
119
//`define GPIO_NO_NEGEDGE_FLOPS
120
 
121
//
122
// If GPIO_NO_NEGEDGE_FLOPS is defined, a mux needs to be placed on external clock
123
// clk_pad_i to implement RGPIO_CTRL[NEC] functionality. If no mux is allowed on
124
// clock signal, enable the following define.
125
// This define don't have any effect if GPIO_CLKPAD is not defined and if GPIO_SYNC_IN_CLK is defined
126
//
127
// By default it is not defined.
128
//
129
//`define GPIO_NO_CLKPAD_LOGIC
130
 
131
 
132
//
133
// synchronization defines
134
//
135
// Two synchronization flops to input lineis added.
136
// system clock synchronization.
137
//
138
`define GPIO_SYNC_IN_WB
139
 
140
//
141
// Add synchronization flops to external clock input line. Gpio will have just one clock domain, 
142
// everithing will be synchronized to wishbone clock. External clock muas be at least 2-3x slower 
143
// as systam clock.
144
//
145
`define GPIO_SYNC_CLK_WB
146
 
147
//
148
// Add synchronization to input pads. synchronization to external clock.
149
// Don't hawe any effect if GPIO_SYNC_CLK_WB is defined.
150
//
151
//`define GPIO_SYNC_IN_CLK
152
 
153
//
154
// Add synchronization flops between system clock and external clock.
155
// Only possible if external clock is enabled and clock synchroization is disabled.
156
//
157
//`define GPIO_SYNC_IN_CLK_WB
158
 
159
 
160
 
161
// 
162
// Undefine if you don't need to read GPIO registers except for RGPIO_IN register.
163
// When it is undefined all reads of GPIO registers return RGPIO_IN register. This
164
// is usually useful if you want really small area (for example when implemented in
165
// FPGA).
166
//
167
// To follow GPIO IP core specification document this one must be defined. Also to
168
// successfully run the test bench it must be defined. By default it is defined.
169
//
170
`define GPIO_READREGS
171
 
172
//
173
// Full WISHBONE address decoding
174
//
175
// It is is undefined, partial WISHBONE address decoding is performed.
176
// Undefine it if you need to save some area.
177
//
178
// By default it is defined.
179
//
180
`define GPIO_FULL_DECODE
181
 
182
//
183
// Strict 32-bit WISHBONE access
184
//
185
// If this one is defined, all WISHBONE accesses must be 32-bit. If it is
186
// not defined, err_o is asserted whenever 8- or 16-bit access is made.
187
// Undefine it if you need to save some area.
188
//
189
// By default it is defined.
190
//
191
//`define GPIO_STRICT_32BIT_ACCESS
192
//
193
`ifdef GPIO_STRICT_32BIT_ACCESS
194
`else
195
// added by gorand :
196
// if GPIO_STRICT_32BIT_ACCESS is not defined,
197
// depending on number of gpio I/O lines, the following are defined :
198
// if the number of I/O lines is in range 1-8,   GPIO_WB_BYTES1 is defined,
199
// if the number of I/O lines is in range 9-16,  GPIO_WB_BYTES2 is defined,
200
// if the number of I/O lines is in range 17-24, GPIO_WB_BYTES3 is defined,
201
// if the number of I/O lines is in range 25-32, GPIO_WB_BYTES4 is defined,
202
 
203
`define GPIO_WB_BYTES4
204
//`define GPIO_WB_BYTES3
205
//`define GPIO_WB_BYTES2
206
//`define GPIO_WB_BYTES1
207
 
208
`endif
209
 
210
//
211
// WISHBONE address bits used for full decoding of GPIO registers.
212
//
213
`define GPIO_ADDRHH 7
214
`define GPIO_ADDRHL 6
215
`define GPIO_ADDRLH 1
216
`define GPIO_ADDRLL 0
217
 
218
//
219
// Bits of WISHBONE address used for partial decoding of GPIO registers.
220
//
221
// Default 5:2.
222
//
223
`define GPIO_OFS_BITS   `GPIO_ADDRHL-1:`GPIO_ADDRLH+1
224
 
225
//
226
// Addresses of GPIO registers
227
//
228
// To comply with GPIO IP core specification document they must go from
229
// address 0 to address 0x18 in the following order: RGPIO_IN, RGPIO_OUT,
230
// RGPIO_OE, RGPIO_INTE, RGPIO_PTRIG, RGPIO_AUX and RGPIO_CTRL
231
//
232
// If particular register is not needed, it's address definition can be omitted
233
// and the register will not be implemented. Instead a fixed default value will
234
// be used.
235
//
236
`define GPIO_RGPIO_IN             4'h0  // Address 0x00
237
`define GPIO_RGPIO_OUT          4'h1    // Address 0x04
238
`define GPIO_RGPIO_OE             4'h2  // Address 0x08
239
`define GPIO_RGPIO_INTE         4'h3    // Address 0x0c
240
`define GPIO_RGPIO_PTRIG        4'h4    // Address 0x10
241
 
242
`ifdef GPIO_AUX_IMPLEMENT
243
`define GPIO_RGPIO_AUX          4'h5    // Address 0x14
244
`endif // GPIO_AUX_IMPLEMENT
245
 
246
`define GPIO_RGPIO_CTRL         4'h6    // Address 0x18
247
`define GPIO_RGPIO_INTS         4'h7    // Address 0x1c
248
 
249
`ifdef GPIO_CLKPAD
250
`define GPIO_RGPIO_ECLK   4'h8  // Address 0x20
251
`define GPIO_RGPIO_NEC    4'h9  // Address 0x24
252
`endif //  GPIO_CLKPAD
253
 
254
//
255
// Default values for unimplemented GPIO registers
256
//
257
`define GPIO_DEF_RGPIO_IN       `GPIO_IOS'h0
258
`define GPIO_DEF_RGPIO_OUT      `GPIO_IOS'h0
259
`define GPIO_DEF_RGPIO_OE       `GPIO_IOS'h0
260
`define GPIO_DEF_RGPIO_INTE     `GPIO_IOS'h0
261
`define GPIO_DEF_RGPIO_PTRIG    `GPIO_IOS'h0
262
`define GPIO_DEF_RGPIO_AUX      `GPIO_IOS'h0
263
`define GPIO_DEF_RGPIO_CTRL     `GPIO_IOS'h0
264
`define GPIO_DEF_RGPIO_ECLK `GPIO_IOS'h0
265
`define GPIO_DEF_RGPIO_NEC `GPIO_IOS'h0
266
 
267
 
268
//
269
// RGPIO_CTRL bits
270
//
271
// To comply with the GPIO IP core specification document they must go from
272
// bit 0 to bit 1 in the following order: INTE, INT
273
//
274
`define GPIO_RGPIO_CTRL_INTE            0
275
`define GPIO_RGPIO_CTRL_INTS            1
276
 
277
 

powered by: WebSVN 2.1.0

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