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

Subversion Repositories gpio

[/] [gpio/] [tags/] [rel_3/] [rtl/] [verilog/] [gpio_defines.v] - Blame information for rev 67

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

Line No. Rev Author Line
1 14 lampret
//////////////////////////////////////////////////////////////////////
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
// CVS Revision History
45
//
46
// $Log: not supported by cvs2svn $
47 29 lampret
// Revision 1.4  2002/05/06 18:25:31  lampret
48
// negedge flops are enabled by default.
49
//
50 27 lampret
// Revision 1.3  2001/12/25 17:12:35  lampret
51
// Added RGPIO_INTS.
52
//
53 21 lampret
// Revision 1.2  2001/11/15 02:24:37  lampret
54
// Added GPIO_REGISTERED_WB_OUTPUTS, GPIO_REGISTERED_IO_OUTPUTS and GPIO_NO_NEGEDGE_FLOPS.
55
//
56 17 lampret
// Revision 1.1  2001/09/18 18:49:07  lampret
57
// Changed top level ptc into gpio_top. Changed defines.v into gpio_defines.v.
58
//
59 14 lampret
// Revision 1.1  2001/08/21 21:39:28  lampret
60
// Changed directory structure, port names and drfines.
61
//
62
// Revision 1.3  2001/07/15 00:21:10  lampret
63
// Registers can be omitted and will have certain default values
64
//
65
// Revision 1.2  2001/07/14 20:39:26  lampret
66
// Better configurability.
67
//
68
// Revision 1.1  2001/06/05 07:45:26  lampret
69
// Added initial RTL and test benches. There are still some issues with these files.
70
//
71
//
72
 
73
//
74
// Number of GPIO I/O signals
75
//
76
// This is the most important parameter of the GPIO IP core. It defines how many
77
// I/O signals core has. Range is from 1 to 32. If more than 32 I/O signals are
78
// required, use several instances of GPIO IP core.
79
//
80
// Default is 16.
81
//
82
`define GPIO_IOS 16
83
 
84
//
85
// Undefine this one if you don't want to remove GPIO block from your design
86
// but you also don't need it. When it is undefined, all GPIO ports still
87
// remain valid and the core can be synthesized however internally there is
88
// no GPIO funationality.
89
//
90
// Defined by default (duhh !).
91
//
92
`define GPIO_IMPLEMENTED
93
 
94 17 lampret
//
95
// Define to register all WISHBONE outputs.
96
//
97
// Register outputs if you are using GPIO core as a block and synthesizing
98
// and place&routing it separately from the rest of the system.
99
//
100
// If you do not need registered outputs, you can save some area by not defining
101
// this macro. By default it is defined.
102
//
103
`define GPIO_REGISTERED_WB_OUTPUTS
104
 
105
//
106
// Define to register all GPIO pad outputs.
107
//
108
// Register outputs if you are using GPIO core as a block and synthesizing
109
// and place&routing it separately from the rest of the system.
110
//
111
// If you do not need registered outputs, you can save some area by not defining
112
// this macro. By default it is defined.
113
//
114
`define GPIO_REGISTERED_IO_OUTPUTS
115
 
116
//
117
// Define to avoid using negative edge clock flip-flops for external clock
118
// (caused by RGPIO_CTRL[NEC] bit. Instead an inverted external clock with
119
// positive edge clock flip-flops will be used.
120
//
121 27 lampret
// By default it is not defined.
122 17 lampret
//
123 27 lampret
//`define GPIO_NO_NEGEDGE_FLOPS
124 17 lampret
 
125 29 lampret
//
126
// If GPIO_NO_NEGEDGE_FLOPS is defined, a mux needs to be placed on external clock
127
// clk_pad_i to implement RGPIO_CTRL[NEC] functionality. If no mux is allowed on
128
// clock signal, enable the following define.
129
//
130
// By default it is not defined.
131
//
132
//`define GPIO_NO_CLKPAD_LOGIC
133
 
134 14 lampret
// 
135
// Undefine if you don't need to read GPIO registers except for RGPIO_IN register.
136
// When it is undefined all reads of GPIO registers return RGPIO_IN register. This
137
// is usually useful if you want really small area (for example when implemented in
138
// FPGA).
139
//
140
// To follow GPIO IP core specification document this one must be defined. Also to
141
// successfully run the test bench it must be defined. By default it is defined.
142
//
143
`define GPIO_READREGS
144
 
145
//
146
// Full WISHBONE address decoding
147
//
148
// It is is undefined, partial WISHBONE address decoding is performed.
149
// Undefine it if you need to save some area.
150
//
151
// By default it is defined.
152
//
153
`define GPIO_FULL_DECODE
154
 
155
//
156
// Strict 32-bit WISHBONE access
157
//
158
// If this one is defined, all WISHBONE accesses must be 32-bit. If it is
159
// not defined, err_o is asserted whenever 8- or 16-bit access is made.
160
// Undefine it if you need to save some area.
161
//
162
// By default it is defined.
163
//
164
`define GPIO_STRICT_32BIT_ACCESS
165
 
166
//
167
// WISHBONE address bits used for full decoding of GPIO registers.
168
//
169 17 lampret
`define GPIO_ADDRHH 6
170 14 lampret
`define GPIO_ADDRHL 5
171
`define GPIO_ADDRLH 1
172
`define GPIO_ADDRLL 0
173
 
174
//
175
// Bits of WISHBONE address used for partial decoding of GPIO registers.
176
//
177
// Default 4:2.
178
//
179
`define GPIO_OFS_BITS   `GPIO_ADDRHL-1:`GPIO_ADDRLH+1
180
 
181
//
182
// Addresses of GPIO registers
183
//
184
// To comply with GPIO IP core specification document they must go from
185
// address 0 to address 0x18 in the following order: RGPIO_IN, RGPIO_OUT,
186
// RGPIO_OE, RGPIO_INTE, RGPIO_PTRIG, RGPIO_AUX and RGPIO_CTRL
187
//
188
// If particular register is not needed, it's address definition can be omitted
189
// and the register will not be implemented. Instead a fixed default value will
190
// be used.
191
//
192
`define GPIO_RGPIO_IN           3'h0    // Address 0x00
193
`define GPIO_RGPIO_OUT          3'h1    // Address 0x04
194
`define GPIO_RGPIO_OE           3'h2    // Address 0x08
195
`define GPIO_RGPIO_INTE         3'h3    // Address 0x0c
196
`define GPIO_RGPIO_PTRIG        3'h4    // Address 0x10
197
`define GPIO_RGPIO_AUX          3'h5    // Address 0x14
198
`define GPIO_RGPIO_CTRL         3'h6    // Address 0x18
199 21 lampret
`define GPIO_RGPIO_INTS         3'h7    // Address 0x1c
200 14 lampret
 
201
//
202
// Default values for unimplemented GPIO registers
203
//
204
`define GPIO_DEF_RGPIO_IN       `GPIO_IOS'h0
205
`define GPIO_DEF_RGPIO_OUT      `GPIO_IOS'h0
206
`define GPIO_DEF_RGPIO_OE       `GPIO_IOS'h0
207
`define GPIO_DEF_RGPIO_INTE     `GPIO_IOS'h0
208
`define GPIO_DEF_RGPIO_PTRIG    `GPIO_IOS'h0
209
`define GPIO_DEF_RGPIO_AUX      `GPIO_IOS'h0
210
`define GPIO_DEF_RGPIO_CTRL     `GPIO_IOS'h0
211
 
212
//
213
// RGPIO_CTRL bits
214
//
215
// To comply with the GPIO IP core specification document they must go from
216
// bit 0 to bit 3 in the following order: ECLK, NEC, INTE, INT
217
//
218
`define GPIO_RGPIO_CTRL_ECLK            0
219
`define GPIO_RGPIO_CTRL_NEC             1
220
`define GPIO_RGPIO_CTRL_INTE            2
221 21 lampret
`define GPIO_RGPIO_CTRL_INTS            3

powered by: WebSVN 2.1.0

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