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

Subversion Repositories or1200_soc

[/] [or1200_soc/] [trunk/] [boards/] [de1_board/] [src/] [uart_defines.v] - Blame information for rev 21

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 21 qaztronic
//////////////////////////////////////////////////////////////////////
2
////                                                              ////
3
////  uart_defines.v                                              ////
4
////                                                              ////
5
////                                                              ////
6
////  This file is part of the "UART 16550 compatible" project    ////
7
////  http://www.opencores.org/cores/uart16550/                   ////
8
////                                                              ////
9
////  Documentation related to this project:                      ////
10
////  - http://www.opencores.org/cores/uart16550/                 ////
11
////                                                              ////
12
////  Projects compatibility:                                     ////
13
////  - WISHBONE                                                  ////
14
////  RS232 Protocol                                              ////
15
////  16550D uart (mostly supported)                              ////
16
////                                                              ////
17
////  Overview (main Features):                                   ////
18
////  Defines of the Core                                         ////
19
////                                                              ////
20
////  Known problems (limits):                                    ////
21
////  None                                                        ////
22
////                                                              ////
23
////  To Do:                                                      ////
24
////  Nothing.                                                    ////
25
////                                                              ////
26
////  Author(s):                                                  ////
27
////      - gorban@opencores.org                                  ////
28
////      - Jacob Gorban                                          ////
29
////      - Igor Mohor (igorm@opencores.org)                      ////
30
////                                                              ////
31
////  Created:        2001/05/12                                  ////
32
////  Last Updated:   2001/05/17                                  ////
33
////                  (See log for the revision history)          ////
34
////                                                              ////
35
////                                                              ////
36
//////////////////////////////////////////////////////////////////////
37
////                                                              ////
38
//// Copyright (C) 2000, 2001 Authors                             ////
39
////                                                              ////
40
//// This source file may be used and distributed without         ////
41
//// restriction provided that this copyright statement is not    ////
42
//// removed from the file and that any derivative work contains  ////
43
//// the original copyright notice and the associated disclaimer. ////
44
////                                                              ////
45
//// This source file is free software; you can redistribute it   ////
46
//// and/or modify it under the terms of the GNU Lesser General   ////
47
//// Public License as published by the Free Software Foundation; ////
48
//// either version 2.1 of the License, or (at your option) any   ////
49
//// later version.                                               ////
50
////                                                              ////
51
//// This source is distributed in the hope that it will be       ////
52
//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
53
//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
54
//// PURPOSE.  See the GNU Lesser General Public License for more ////
55
//// details.                                                     ////
56
////                                                              ////
57
//// You should have received a copy of the GNU Lesser General    ////
58
//// Public License along with this source; if not, download it   ////
59
//// from http://www.opencores.org/lgpl.shtml                     ////
60
////                                                              ////
61
//////////////////////////////////////////////////////////////////////
62
//
63
// CVS Revision History
64
//
65
// $Log: uart_defines.v,v $
66
// Revision 1.1  2009/03/25 22:16:56  kenagy
67
// no message
68
//
69
// Revision 1.1  2009/02/19 23:49:39  kenagy
70
// no message
71
//
72
// Revision 1.1  2009/02/19 20:11:32  kenagy
73
// no message
74
//
75
// Revision 1.1  2008/08/04 23:09:51  kenagy
76
// no message
77
//
78
// Revision 1.14  2003/09/12 07:26:58  dries
79
// adjusted comment + define
80
//
81
// Revision 1.13  2003/06/11 16:37:47  gorban
82
// This fixes errors in some cases when data is being read and put to the FIFO at the same time. Patch is submitted by Scott Furman. Update is very recommended.
83
//
84
// Revision 1.12  2002/07/22 23:02:23  gorban
85
// Bug Fixes:
86
//  * Possible loss of sync and bad reception of stop bit on slow baud rates fixed.
87
//   Problem reported by Kenny.Tung.
88
//  * Bad (or lack of ) loopback handling fixed. Reported by Cherry Withers.
89
//
90
// Improvements:
91
//  * Made FIFO's as general inferrable memory where possible.
92
//  So on FPGA they should be inferred as RAM (Distributed RAM on Xilinx).
93
//  This saves about 1/3 of the Slice count and reduces P&R and synthesis times.
94
//
95
//  * Added optional baudrate output (baud_o).
96
//  This is identical to BAUDOUT* signal on 16550 chip.
97
//  It outputs 16xbit_clock_rate - the divided clock.
98
//  It's disabled by default. Define UART_HAS_BAUDRATE_OUTPUT to use.
99
//
100
// Revision 1.10  2001/12/11 08:55:40  mohor
101
// Scratch register define added.
102
//
103
// Revision 1.9  2001/12/03 21:44:29  gorban
104
// Updated specification documentation.
105
// Added full 32-bit data bus interface, now as default.
106
// Address is 5-bit wide in 32-bit data bus mode.
107
// Added wb_sel_i input to the core. It's used in the 32-bit mode.
108
// Added debug interface with two 32-bit read-only registers in 32-bit mode.
109
// Bits 5 and 6 of LSR are now only cleared on TX FIFO write.
110
// My small test bench is modified to work with 32-bit mode.
111
//
112
// Revision 1.8  2001/11/26 21:38:54  gorban
113
// Lots of fixes:
114
// Break condition wasn't handled correctly at all.
115
// LSR bits could lose their values.
116
// LSR value after reset was wrong.
117
// Timing of THRE interrupt signal corrected.
118
// LSR bit 0 timing corrected.
119
//
120
// Revision 1.7  2001/08/24 21:01:12  mohor
121
// Things connected to parity changed.
122
// Clock devider changed.
123
//
124
// Revision 1.6  2001/08/23 16:05:05  mohor
125
// Stop bit bug fixed.
126
// Parity bug fixed.
127
// WISHBONE read cycle bug fixed,
128
// OE indicator (Overrun Error) bug fixed.
129
// PE indicator (Parity Error) bug fixed.
130
// Register read bug fixed.
131
//
132
// Revision 1.5  2001/05/31 20:08:01  gorban
133
// FIFO changes and other corrections.
134
//
135
// Revision 1.4  2001/05/21 19:12:02  gorban
136
// Corrected some Linter messages.
137
//
138
// Revision 1.3  2001/05/17 18:34:18  gorban
139
// First 'stable' release. Should be sythesizable now. Also added new header.
140
//
141
// Revision 1.0  2001-05-17 21:27:11+02  jacob
142
// Initial revision
143
//
144
//
145
 
146
// remove comments to restore to use the new version with 8 data bit interface
147
// in 32bit-bus mode, the wb_sel_i signal is used to put data in correct place
148
// also, in 8-bit version there'll be no debugging features included
149
// CAUTION: doesn't work with current version of OR1200
150
//`define DATA_BUS_WIDTH_8
151
 
152
`ifdef DATA_BUS_WIDTH_8
153
 `define UART_ADDR_WIDTH 3
154
 `define UART_DATA_WIDTH 8
155
`else
156
 `define UART_ADDR_WIDTH 5
157
 `define UART_DATA_WIDTH 32
158
`endif
159
 
160
// Uncomment this if you want your UART to have
161
// 16xBaudrate output port.
162
// If defined, the enable signal will be used to drive baudrate_o signal
163
// It's frequency is 16xbaudrate
164
 
165
// `define UART_HAS_BAUDRATE_OUTPUT
166
 
167
// Register addresses
168
`define UART_REG_RB     `UART_ADDR_WIDTH'd0     // receiver buffer
169
`define UART_REG_TR  `UART_ADDR_WIDTH'd0        // transmitter
170
`define UART_REG_IE     `UART_ADDR_WIDTH'd1     // Interrupt enable
171
`define UART_REG_II  `UART_ADDR_WIDTH'd2        // Interrupt identification
172
`define UART_REG_FC  `UART_ADDR_WIDTH'd2        // FIFO control
173
`define UART_REG_LC     `UART_ADDR_WIDTH'd3     // Line Control
174
`define UART_REG_MC     `UART_ADDR_WIDTH'd4     // Modem control
175
`define UART_REG_LS  `UART_ADDR_WIDTH'd5        // Line status
176
`define UART_REG_MS  `UART_ADDR_WIDTH'd6        // Modem status
177
`define UART_REG_SR  `UART_ADDR_WIDTH'd7        // Scratch register
178
`define UART_REG_DL1    `UART_ADDR_WIDTH'd0     // Divisor latch bytes (1-2)
179
`define UART_REG_DL2    `UART_ADDR_WIDTH'd1
180
 
181
// Interrupt Enable register bits
182
`define UART_IE_RDA     0        // Received Data available interrupt
183
`define UART_IE_THRE    1       // Transmitter Holding Register empty interrupt
184
`define UART_IE_RLS     2       // Receiver Line Status Interrupt
185
`define UART_IE_MS      3       // Modem Status Interrupt
186
 
187
// Interrupt Identification register bits
188
`define UART_II_IP      0        // Interrupt pending when 0
189
`define UART_II_II      3:1     // Interrupt identification
190
 
191
// Interrupt identification values for bits 3:1
192
`define UART_II_RLS     3'b011  // Receiver Line Status
193
`define UART_II_RDA     3'b010  // Receiver Data available
194
`define UART_II_TI      3'b110  // Timeout Indication
195
`define UART_II_THRE    3'b001  // Transmitter Holding Register empty
196
`define UART_II_MS      3'b000  // Modem Status
197
 
198
// FIFO Control Register bits
199
`define UART_FC_TL      1:0      // Trigger level
200
 
201
// FIFO trigger level values
202
`define UART_FC_1               2'b00
203
`define UART_FC_4               2'b01
204
`define UART_FC_8               2'b10
205
`define UART_FC_14      2'b11
206
 
207
// Line Control register bits
208
`define UART_LC_BITS    1:0      // bits in character
209
`define UART_LC_SB      2       // stop bits
210
`define UART_LC_PE      3       // parity enable
211
`define UART_LC_EP      4       // even parity
212
`define UART_LC_SP      5       // stick parity
213
`define UART_LC_BC      6       // Break control
214
`define UART_LC_DL      7       // Divisor Latch access bit
215
 
216
// Modem Control register bits
217
`define UART_MC_DTR     0
218
`define UART_MC_RTS     1
219
`define UART_MC_OUT1    2
220
`define UART_MC_OUT2    3
221
`define UART_MC_LB      4       // Loopback mode
222
 
223
// Line Status Register bits
224
`define UART_LS_DR      0        // Data ready
225
`define UART_LS_OE      1       // Overrun Error
226
`define UART_LS_PE      2       // Parity Error
227
`define UART_LS_FE      3       // Framing Error
228
`define UART_LS_BI      4       // Break interrupt
229
`define UART_LS_TFE     5       // Transmit FIFO is empty
230
`define UART_LS_TE      6       // Transmitter Empty indicator
231
`define UART_LS_EI      7       // Error indicator
232
 
233
// Modem Status Register bits
234
`define UART_MS_DCTS    0        // Delta signals
235
`define UART_MS_DDSR    1
236
`define UART_MS_TERI    2
237
`define UART_MS_DDCD    3
238
`define UART_MS_CCTS    4       // Complement signals
239
`define UART_MS_CDSR    5
240
`define UART_MS_CRI     6
241
`define UART_MS_CDCD    7
242
 
243
// FIFO parameter defines
244
 
245
`define UART_FIFO_WIDTH 8
246
`define UART_FIFO_DEPTH 16
247
`define UART_FIFO_POINTER_W     4
248
`define UART_FIFO_COUNTER_W     5
249
// receiver fifo has width 11 because it has break, parity and framing error bits
250
`define UART_FIFO_REC_WIDTH  11
251
 
252
 
253
`define VERBOSE_WB  0           // All activity on the WISHBONE is recorded
254
`define VERBOSE_LINE_STATUS 0   // Details about the lsr (line status register)
255
`define FAST_TEST   1           // 64/1024 packets are sent
256
 
257
 
258
 
259
 
260
 
261
 
262
 

powered by: WebSVN 2.1.0

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