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

Subversion Repositories tdm

[/] [tdm/] [trunk/] [docs/] [tdm_project.html] - Blame information for rev 4

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

Line No. Rev Author Line
1 4 khatib
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
2
           "http://www.w3.org/TR/REC-html40/loose.dtd">
3
<HTML>
4
<META NAME="GENERATOR" CONTENT="TtH 2.67">
5
 
6
 
7
 
8
<H3 align=center>Jamil Khatib </H3>
9
 
10
<title> TDM controller core</title>
11
 
12
<H1 align="center">TDM controller core </H1>
13
 
14
<p>
15
 
16
<center>(C) Copyright 2001 Jamil Khatib.</center>
17
 
18
<p>
19
 
20
<H1>Contents </H1><A href="#tth_sEc1"
21
>1&nbsp; List of authors and changes</A><br>
22
<A href="#tth_sEc2"
23
>2&nbsp; Project Definition</A><br>
24
&nbsp;&nbsp;&nbsp;&nbsp;<A href="#tth_sEc2.1"
25
>2.1&nbsp; Introduction</A><br>
26
&nbsp;&nbsp;&nbsp;&nbsp;<A href="#tth_sEc2.2"
27
>2.2&nbsp; Objectives</A><br>
28
<A href="#tth_sEc3"
29
>3&nbsp; Specifications</A><br>
30
&nbsp;&nbsp;&nbsp;&nbsp;<A href="#tth_sEc3.1"
31
>3.1&nbsp; System Features Specification</A><br>
32
&nbsp;&nbsp;&nbsp;&nbsp;<A href="#tth_sEc3.2"
33
>3.2&nbsp; External Interfaces</A><br>
34
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A href="#tth_sEc3.2.1"
35
>3.2.1&nbsp; Back-end interface mapping to Wishbone SoC bus</A><br>
36
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A href="#tth_sEc3.2.2"
37
>3.2.2&nbsp; CPU interface</A><br>
38
<A href="#tth_sEc4"
39
>4&nbsp; Internal Blocks</A><br>
40
<A href="#tth_sEc5"
41
>5&nbsp; Design description</A><br>
42
&nbsp;&nbsp;&nbsp;&nbsp;<A href="#tth_sEc5.1"
43
>5.1&nbsp; ST-Bus interface</A><br>
44
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A href="#tth_sEc5.1.1"
45
>5.1.1&nbsp; Design notes</A><br>
46
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A href="#tth_sEc5.1.2"
47
>5.1.2&nbsp; Timing</A><br>
48
&nbsp;&nbsp;&nbsp;&nbsp;<A href="#tth_sEc5.2"
49
>5.2&nbsp; External FIFO</A><br>
50
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A href="#tth_sEc5.2.1"
51
>5.2.1&nbsp; Notes</A><br>
52
&nbsp;&nbsp;&nbsp;&nbsp;<A href="#tth_sEc5.3"
53
>5.3&nbsp; ISDN support</A><br>
54
&nbsp;&nbsp;&nbsp;&nbsp;<A href="#tth_sEc5.4"
55
>5.4&nbsp; Registers</A><br>
56
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A href="#tth_sEc5.4.1"
57
>5.4.1&nbsp; Transmit</A><br>
58
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A href="#tth_sEc5.4.2"
59
>5.4.2&nbsp; Receive</A><br>
60
&nbsp;&nbsp;&nbsp;&nbsp;<A href="#tth_sEc5.5"
61
>5.5&nbsp; Diagrams</A><br>
62
<A href="#tth_sEc6"
63
>6&nbsp; Testing and verifications</A><br>
64
&nbsp;&nbsp;&nbsp;&nbsp;<A href="#tth_sEc6.1"
65
>6.1&nbsp; Simulation and Test benches</A><br>
66
&nbsp;&nbsp;&nbsp;&nbsp;<A href="#tth_sEc6.2"
67
>6.2&nbsp; Verification techniques and algorithms</A><br>
68
&nbsp;&nbsp;&nbsp;&nbsp;<A href="#tth_sEc6.3"
69
>6.3&nbsp; Test plans</A><br>
70
<A href="#tth_sEc7"
71
>7&nbsp; Implementations</A><br>
72
&nbsp;&nbsp;&nbsp;&nbsp;<A href="#tth_sEc7.1"
73
>7.1&nbsp; Scripts, files and any other information</A><br>
74
<A href="#tth_sEc8"
75
>8&nbsp; Reviews and comments</A><br>
76
<A href="#tth_sEc9"
77
>9&nbsp; References</A><br>
78
 
79
<p>
80
        <H2><A NAME="tth_sEc1">
81
1</A>&nbsp;&nbsp;List of authors and changes</H2>
82
 
83
<p>
84
 
85
<TaBle border>
86
<tr><td>Name </td><td>Changes </td><td>Date </td><td>Contact address</td></tr><tr><td>
87
<tr><td>Jamil Khatib </td><td>Initial release </td><td>3-2-2001 </td><td>khatib@ieee.org </td></tr>
88
<tr><td>Jamil Khatib </td><td>General review and CPU interface added </td><td>10-2-2001 </td><td>khatib@ieee.org </td></tr>
89
<tr><td>Jamil Khatib </td><td>ISDN support added </td><td>3-4-2001 </td><td>khatib@ieee.org </td></tr>
90
<tr><td>Jamil Khatib </td><td>Buffer Calculations added </td><td>9-4-2001 </td><td>khatib@ieee.org </td></tr>
91
<tr><td>Jamil Khatib </td><td>General review </td><td>25-5-2001 </td><td>khatib@ieee.org </td></tr></TaBle>
92
 
93
 
94
<p>
95
        <H2><A NAME="tth_sEc2">
96
2</A>&nbsp;&nbsp;Project Definition</H2>
97
 
98
<p>
99
      <H3><A NAME="tth_sEc2.1">
100
2.1</A>&nbsp;&nbsp;Introduction</H3>
101
Time devision multiplexing is a scheme used to communicate between systems or devices via shared interface lines. Each device or system gets the access to this interface in a single time slot.
102
 
103
<p>
104
      <H3><A NAME="tth_sEc2.2">
105
2.2</A>&nbsp;&nbsp;Objectives</H3>
106
The aim of this project is to develop the basic TDM functionalities to be used by many communication systems like ISDN, E1, and voice codecs.
107
 
108
<p>
109
        <H2><A NAME="tth_sEc3">
110
3</A>&nbsp;&nbsp;Specifications</H2>
111
 
112
<p>
113
      <H3><A NAME="tth_sEc3.1">
114
3.1</A>&nbsp;&nbsp;System Features Specification</H3>
115
 
116
<OL type="1">
117
 
118
<li> Supports E1 bit rate and time slots (32 time slots or 32 DS0 channels at bit rate 2.048Mbps)
119
 
120
<li> Supports ST-Bus (Serial Telecom bus) interface.
121
 
122
<li> Routes time slots to/from HDLC controller via the backend interface and software support or to/from memory.
123
 
124
<li> Supports read for all or partial TDM slots from the ST-bus.
125
 
126
<li> Supports write for all or partial TDM slots to ST-bus.
127
 
128
<li> It supports N&times;64 mode (i.e. it supports sampling (or writing) to N consecutive time slots)
129
 
130
<li> Supports two serial lines one input and one output.
131
 
132
<li> Can be connected to other ST-Bus compatible devices via serial or star configurations.
133
 
134
<li> If no data is available for transmission it sends all ones.
135
 
136
<li> Backend interface uses the Wishbone bus interface which can be connected directly to the system or via FIFO buffer.
137
 
138
<li> Optional External FIFO buffer, configuration and status registers.
139
 
140
<li> The core will be made of two levels of hierarchies, the basic functionality and the Optional interfaces and buffers which makes it easy to add extra serial lines by duplicating the TDM controllers in parallel.
141
 
142
<li> ISDN (2B+D) support can be supported by adding three parallel HDLC controllers on the first three time slots.
143
</OL>
144
<p>
145
      <H3><A NAME="tth_sEc3.2">
146
3.2</A>&nbsp;&nbsp;External Interfaces</H3>
147
 
148
<p>
149
 
150
<TaBle border>
151
<tr><td>Signal name</td><td>Direction</td><td>Description</td></tr><tr><td>
152
<tr><td>Control interface </td><td></td><td></td></tr><tr><td>
153
<tr><td>CLK_I </td><td>Input </td><td>System clock </td></tr>
154
<tr><td>Rst_n </td><td>Input </td><td>System asynchronous reset (active low)</td></tr>
155
<tr><td>NoChannels[4:0] </td><td>Input </td><td>Number of time slots (Can be fixed)</td></tr>
156
<tr><td>DropChannels[4:0] </td><td>Input </td><td>Number of time slots to be dropped (Can be fixed)</td></tr><tr><td>
157
<tr><td>Serial Interface (ST-Bus)</td><td></td><td></td></tr><tr><td>
158
<tr><td>C2 </td><td>Input </td><td>Bus Clock</td></tr>
159
<tr><td>DSTi </td><td>Input</td><td>Receive serial Data</td></tr>
160
<tr><td>DSTo </td><td>Output </td><td>Transmit serial Data</td></tr>
161
<tr><td>F0_n </td><td>Input </td><td>Framing pulse (active low)</td></tr>
162
<tr><td>F0od_n </td><td>Output </td><td>Delayed Framing pulse (active low) generated after the channels has handled</td></tr><tr><td>
163
<tr><td>Back-end Interface (Received)</td><td></td><td></td></tr><tr><td>
164
<tr><td>RxD[7:0]</td><td>Output</td><td>Receive data bus</td></tr>
165
<tr><td>RxValidData</td><td>Output</td><td>Valid Data</td></tr>
166
<tr><td>FrameErr</td><td>Output</td><td>Error in the received data</td></tr>
167
<tr><td>Read</td><td>Input</td><td>Read byte</td></tr>
168
<tr><td>Ready</td><td>Output</td><td>Valid data exists</td></tr><tr><td>
169
<tr><td>Back-end Interface (Transmited)</td><td></td><td></td></tr><tr><td>
170
<tr><td>TxD[7:0]</td><td>Input</td><td>Transmit data bus</td></tr>
171
<tr><td>TxValidData</td><td>Input</td><td>Valid Data</td></tr>
172
<tr><td>Write</td><td>Input</td><td>Write byte</td></tr>
173
<tr><td>Ready</td><td>Output</td><td>Ready to get data</td></tr>
174
<tr><td>TxErr</td><td>Output</td><td>Buffer under flow</td></tr></TaBle>
175
 
176
 
177
<p>
178
       <H4><A NAME="tth_sEc3.2.1">
179
3.2.1</A>&nbsp;&nbsp;Back-end interface mapping to Wishbone SoC bus</H4>
180
The TDM backend interface is divided into two parts one for receive and one for transmit.It can be used as a slave core or master according to the below mapping. The core supports SINGLE READ/WRITE Cycle only using 8-bit data bus without address lines. The choice between master and slave is left for the system integrator and must do the configuration and glue logic as defined in the tables.
181
<br>
182
<p>
183
 
184
<p><A NAME="tth_fIg1">
185
</A> <a href="wishlogo.ps">Figure</a><A NAME="Logo">
186
</A><p>
187
<TaBle border>
188
<tr><td>Signal Name</td><td>Wishbone signal</td></tr><tr><td>
189
<tr><td>Master Configuration connected to FIFO</td><td>Receive channel</td></tr>
190
<tr><td>CLK_I </td><td>CLK_I</td></tr>
191
<tr><td>Rst </td><td>not RST_I</td></tr>
192
<tr><td>RxD[7:0]</td><td>DAT_O(7:0)</td></tr>
193
<tr><td>RxValidData</td><td>STB_O</td></tr>
194
<tr><td>RxValidData</td><td>CYC_O</td></tr>
195
<tr><td>Read</td><td>ACK_I and not RTY_I</td></tr>
196
<tr><td>Ready</td><td>WE_O</td></tr>
197
<tr><td>FrameERR</td><td>TAG0_O</td></tr>
198
<tr><td>Slave FIFO(two-clock domain FIFO)</td><td></td></tr>
199
<tr><td>Data[7:0]</td><td>DAT_I(7:0)</td></tr>
200
<tr><td>Chip Select</td><td>STB_I</td></tr>
201
<tr><td>STB_I and not FullFlag</td><td>ACK_O</td></tr>
202
<tr><td>FullFlag</td><td>RTY_O</td></tr>
203
<tr><td>Write</td><td>WE_I</td></tr>
204
<tr><td>Slave Configuration </td><td></td></tr>
205
<tr><td>CLK_I </td><td>CLK_I</td></tr>
206
<tr><td>Rst </td><td>not RST_I</td></tr>
207
<tr><td>RxD[7:0]</td><td>DAT_O(7:0)</td></tr>
208
<tr><td>RxValidData</td><td>TAG0_O</td></tr>
209
<tr><td>ReadByte</td><td>not WE_I</td></tr>
210
<tr><td>Ready</td><td>not RTY_O</td></tr>
211
<tr><td>STB_I and not WR_I</td><td>ACK_O</td></tr>
212
<tr><td>FrameERR</td><td>TAG1_O</td></tr></TaBle>
213
 
214
 
215
<p>
216
 
217
<TaBle border>
218
<tr><td>Signal Name</td><td>Wishbone signal</td></tr><tr><td>
219
<tr><td>Master Configuration connected to FIFO</td><td>Transmit channel</td></tr><tr><td>
220
<tr><td>C2 </td><td>CLK_I</td></tr>
221
<tr><td>Rst </td><td>not RST_I</td></tr>
222
<tr><td>TxD[7:0]</td><td>DAT_I(7:0)</td></tr>
223
<tr><td>Write</td><td>ACK_I and not RTY_I</td></tr>
224
<tr><td>Ready</td><td>not WE_O</td></tr>
225
<tr><td>TxValidData</td><td>TAG0_I</td></tr>
226
<tr><td>Always Active </td><td>CYC_O</td></tr>
227
<tr><td>Always Active </td><td>STB_O</td></tr>
228
<tr><td>Slave FIFO(two-clock domain FIFO)</td><td></td></tr>
229
<tr><td>Data[31:0]</td><td>DAT_I(31:0)</td></tr>
230
<tr><td>EmptyFlag</td><td>RTY_O</td></tr>
231
<tr><td>Read</td><td>WE_I</td></tr>
232
<tr><td>WE_I and not EmptyFlag</td><td>ACK_O</td></tr>
233
<tr><td>ChipSelect</td><td>STB_I</td></tr>
234
<tr><td>Slave Configuration </td><td></td></tr>
235
<tr><td>C2 </td><td>CLK_I</td></tr>
236
<tr><td>Rst </td><td>not RST_I</td></tr>
237
<tr><td>TxD[7:0]</td><td>DAT_I(7:0)</td></tr>
238
<tr><td>TxValidData</td><td>STB_I</td></tr>
239
<tr><td>Write</td><td>WE_I</td></tr>
240
<tr><td>Ready</td><td>not RTY_O</td></tr>
241
<tr><td>STB_I and WR_I</td><td>ACK_O</td></tr></TaBle>
242
 
243
 
244
<p>
245
       <H4><A NAME="tth_sEc3.2.2">
246
3.2.2</A>&nbsp;&nbsp;CPU interface</H4>
247
This interface is used when the FIFO and registers are included in the Core. This interface is compatible to WishBone slave bus interface that supports single read/write cycles and block cycles. The interface supports the following wishbone signals.
248
 
249
<p>
250
 
251
<TaBle border>
252
<tr><td>Signal</td><td>Note</td></tr><tr><td>
253
<tr><td>RST_I</td><td>Reset</td></tr>
254
<tr><td>CLK_I</td><td>Clock</td></tr>
255
<tr><td>ADR_I(2:0)</td><td>3-bit address line</td></tr>
256
<tr><td>DAT_O(7:0)</td><td>8-bit receive data</td></tr>
257
<tr><td>DAT_I(7:0)</td><td>8-bit transmit data</td></tr>
258
<tr><td>WE_I</td><td>Read/write</td></tr>
259
<tr><td>STB_I</td><td>Strobe</td></tr>
260
<tr><td>ACK_O</td><td>Acknowledge</td></tr>
261
<tr><td>CYC_I</td><td>Cycle</td></tr>
262
<tr><td>RTY_O</td><td>Retry</td></tr>
263
<tr><td>TAG0_O</td><td>TxDone interrupt</td></tr>
264
<tr><td>TAG1_O</td><td>RxReady interrupt</td></tr></TaBle>
265
 
266
 
267
<p>
268
        <H2><A NAME="tth_sEc4">
269
4</A>&nbsp;&nbsp;Internal Blocks</H2>
270
 
271
<p>
272
        <H2><A NAME="tth_sEc5">
273
5</A>&nbsp;&nbsp;Design description</H2>
274
 
275
<p>
276
      <H3><A NAME="tth_sEc5.1">
277
5.1</A>&nbsp;&nbsp;ST-Bus interface</H3>
278
The TDM controller interfaces to the TDM lines via serial telecom bus. The interface uses the external input clock (2.048MHz) for all of the internal serial logic. It detects the incoming framing pulse to synchronize the sampling and transmission of bits. The core reads and writes only the specified number of TDM channels (8-bits) by the size bus (No. of channels register). In the transmission mode the output pin should be disabled after writing the configured time slots. It generates also the output delayed framing pulse after it samples all the specified bits (TDM channels). This feature can be used to cascade controllers for different TDM channels.
279
 
280
<p>
281
       <H4><A NAME="tth_sEc5.1.1">
282
5.1.1</A>&nbsp;&nbsp;Design notes</H4>
283
 
284
<p>
285
       <H4><A NAME="tth_sEc5.1.2">
286
5.1.2</A>&nbsp;&nbsp;Timing</H4>
287
 
288
<p>
289
      <H3><A NAME="tth_sEc5.2">
290
5.2</A>&nbsp;&nbsp;External FIFO</H3>
291
The controller has optional external FIFO buffers, one for data to be transmitted and one for data to be received. Status and control registers are available to control these FIFOs. These two blocks (FIFOs and registers) are  built around the TDM controller core which make them optional if the core is to be used in different kind of applications.
292
 
293
<p>
294
The current implementation supports the following configuration:
295
The size of the Transmit and receive FIFOs is (8&times;32) bits which enables the whole TDM frame to be buffered.
296
 
297
<p>
298
The transmit buffer is used to prevent underflow while transmitting bytes to the line. All bytes will be available once the transmit is enabled. If the transmit FIFO is empty the core will transmit ones. The Receive buffer is used to provide data burst transfer to the Back end interface which prevents the back end from reading each byte alone. The FIFO size is suitable for operating frequencies 2.048MHz on the serial interface and 20 MHz on the back end interface. Other frequencies can operate if the back end can read the entire TDM frame before the first byte of the next frame is written (the next calculations is an example to be applied for different frequencies)
299
 
300
<p>
301
8 bits (Time needed to receive the first byte of the next frame) / 2.048MHz = 3.9 us
302
 
303
<p>
304
32 Bytes (Maximum frame size) / 20MHz = 1.6 us
305
 
306
<p>
307
These FIFOs are implemented on Single port memory. It is the responsibility of the external interface to write/read data to/from the FIFOs. TxDone and RxRdy interrupts are generated when the Tx buffer is empty and Rx buffer has data respectively .
308
 
309
<p>
310
       <H4><A NAME="tth_sEc5.2.1">
311
5.2.1</A>&nbsp;&nbsp;Notes</H4>
312
 
313
<UL>
314
 
315
<p>
316
 
317
<li> <b>Transmit Operation:</b> If the transmit FIFO is empty not enough data bytes is available according to no. of channels (caused by incomplete burst transfer, the core sets the Aborted bit in the TX status and control register and sends all ones in the transmit serial line.
318
 
319
<p>
320
 
321
<li> <b>Transmit Operation:</b> The back end (software) should write data to the Tx buffer register according to the configured number of time slots. The transmission will start only after the specified number of slots are available in the buffer other wise Aborted bit of the Tx Status register will be set and all ones will be transmitted  in this slot.
322
 
323
<p>
324
 
325
<li> <b>Receive Operation:</b> When Receive FIFO is full It drops the second FIFO contents and sets overflow bit in the Rx Status and Control register.
326
 
327
<p>
328
 
329
<li> <b>Receive Operation:</b> When RxRdy Interrupt is asserted (or RxRdy bit is set) the back end interface (software) must read the specified number of slots from the Rx Data buffer register or the buffer will not be marked as empty.
330
</UL>
331
<p>
332
      <H3><A NAME="tth_sEc5.3">
333
5.3</A>&nbsp;&nbsp;ISDN support</H3>
334
In order to provide (2B+D) ISDN support three HDLC controllers should be used on three time slots. The serial data the of first three time slots will enter (or get out) directly to (from) the three parallel HDLC controllers if HDLCen bit is set in the Tx Status and Control register. The HDLC controllers will be managed through the enable signals (each controller will be enabled on its corresponding time slot).
335
 
336
<p>
337
Eventhoush the ISDN controller is based on TDM but separate controller will be used that extracts and writes 2B+D only.
338
 
339
<p>
340
 
341
<p><A NAME="tth_fIg1">
342
</A> <a href="tdm_ISDN_top.ps">Figure</a> <center>Figure 1: ISDN support</center><A NAME="isdn">
343
</A>
344
<p>
345
<p>
346
      <H3><A NAME="tth_sEc5.4">
347
5.4</A>&nbsp;&nbsp;Registers</H3>
348
All internal registers are 32-bit width.
349
 
350
<p>
351
       <H4><A NAME="tth_sEc5.4.1">
352
5.4.1</A>&nbsp;&nbsp;Transmit</H4>
353
 
354
<p>
355
 
356
<TaBle>
357
<tr><td><b>Tx Status and Control Register: Tx_SC</b> </td><td>Offset Address = 0x0</td></tr></TaBle>
358
<br>
359
 
360
<p>
361
 
362
<TaBle border><tr><td>
363
<tr><td>BIT   </td><td align="center">7 </td><td align="center">6 </td><td align="center">5 </td><td align="center">4 </td><td align="center">3 </td><td align="center">2 </td><td align="center">1 </td><td align="center">0</td></tr>
364
<tr><td>FIELD </td><td align="center">N/A </td><td align="center">N/A </td><td align="center">N/A </td><td align="center">N/A</td><td align="center">must be set to 0</td><td align="center">TxUnderflow</td><td align="center">TxOverflow</td><td align="center">TxDone(empty)</td></tr>
365
<tr><td>RESET </td><td align="center">0</td><td align="center">0</td><td align="center">0</td><td align="center">0</td><td align="center">0</td><td align="center">0</td><td align="center">0</td><td align="center">0</td></tr>
366
<tr><td>R/W   </td><td align="center">RO</td><td align="center">RO</td><td align="center">RO</td><td align="center">RO</td><td align="center">RW</td><td align="center">RO</td><td align="center">RO</td><td align="center">RO</td></tr></TaBle>
367
<br>
368
 
369
<p>
370
 
371
<TaBle>
372
<tr><td><b>Tx FIFO buffer register: Tx_Buffer</b> </td><td>Offset Address = 0x1</td></tr></TaBle>
373
<br>
374
 
375
<p>
376
 
377
<TaBle border><tr><td>
378
<tr><td>BIT   </td><td align="center">31-0</td></tr>
379
<tr><td>FIELD </td><td align="center">Transmit Data</td></tr>
380
<tr><td>RESET </td><td align="center">0x0</td></tr>
381
<tr><td>R/W   </td><td align="center">WO</td></tr></TaBle>
382
 
383
writing before TxDone is set has no effect. Extra writes more than defined by noChannels - DropChannels has no effect either.
384
 
385
<p>
386
       <H4><A NAME="tth_sEc5.4.2">
387
5.4.2</A>&nbsp;&nbsp;Receive</H4>
388
 
389
<p>
390
 
391
<TaBle>
392
<tr><td><b>Rx Status and Control Register: Rx_SC</b> </td><td>Offset Address = 0x2</td></tr></TaBle>
393
<br>
394
 
395
<p>
396
 
397
<TaBle border><tr><td>
398
<tr><td>BIT   </td><td align="center">7 </td><td align="center">6 </td><td align="center">5 </td><td align="center">4 </td><td align="center">3 </td><td align="center">2 </td><td align="center">1 </td><td align="center">0</td></tr>
399
<tr><td>FIELD </td><td align="center">N/A </td><td align="center">N/A </td><td align="center">N/A </td><td align="center">N/A</td><td align="center">N/A</td><td align="center">RxBufferOverflow</td><td align="center">RxLineOverflow</td><td align="center">RxReady(Full)</td></tr>
400
<tr><td>RESET </td><td align="center">0</td><td align="center">0</td><td align="center">0</td><td align="center">0</td><td align="center">0</td><td align="center">0</td><td align="center">0</td><td align="center">0</td></tr>
401
<tr><td>R/W   </td><td align="center">RO</td><td align="center">RO</td><td align="center">RO</td><td align="center">RO</td><td align="center">RO</td><td align="center">RO</td><td align="center">RO</td><td align="center">RO</td></tr></TaBle>
402
<br>
403
 
404
<p>
405
RxLineOverflow: Overflow on serial Line buffer.
406
 
407
<p>
408
 
409
<TaBle>
410
<tr><td><b>Rx FIFO buffer register: Rx_Buffer</b> </td><td>Offset Address = 0x3</td></tr></TaBle>
411
<br>
412
 
413
<p>
414
 
415
<TaBle border><tr><td>
416
<tr><td>BIT   </td><td align="center">31-0</td></tr>
417
<tr><td>FIELD </td><td align="center">Received Data byte</td></tr>
418
<tr><td>RESET </td><td align="center">0x0</td></tr>
419
<tr><td>R/W   </td><td align="center">RO</td></tr></TaBle>
420
<br>
421
Reading before RxRdy is set or more than NoChannels-DropChannels carries no data.
422
 
423
<p>
424
 
425
<TaBle>
426
<tr><td><b>configuration register: CFG</b> </td><td>Offset Address = 0x4</td></tr></TaBle>
427
<br>
428
 
429
<p>
430
 
431
<TaBle border><tr><td>
432
<tr><td>BIT  </td><td align="center">12-8 </td><td align="center">7-5 </td><td align="center">4-0</td></tr>
433
<tr><td>FIELD </td><td align="center">DropChannels </td><td align="center">reserved </td><td align="center">No. of channels</td></tr>
434
<tr><td>RESET </td><td align="center">0x00 </td><td align="center">0X0 </td><td align="center">0x00</td></tr>
435
<tr><td>R/W   </td><td align="center">RW</td><td align="center">RO </td><td align="center">RW</td></tr></TaBle>
436
<br>
437
No of channels indicates total number of channels to be handled after the framing pulse by the controller. Single channel at least must be handled so 0x00 indicates single channel and so on.<br>
438
DropChannels indicates number of channels to be dropped (not handled) after the framing pulse and before the first channel to be handled.<br>
439
 
440
<p>
441
Example number of channels to be read is 2 starting after 3 channels from the framing pulse: NoChannels = 0x04 and DropChannels = 0x03<br>
442
 
443
<p>
444
<b>ISDN registers</b> The ISDN controller is a separate core that has three HDLC controllers. Each HDLC controller has its own Wishbone interface and registers for information about the HDLC registers refer to the HDLC core document.
445
 
446
<p>
447
      <H3><A NAME="tth_sEc5.5">
448
5.5</A>&nbsp;&nbsp;Diagrams</H3>
449
 
450
<p>
451
 
452
<p><A NAME="tth_fIg2">
453
</A> <a href="tdm_core.ps">Figure</a> <center>Figure 2: TDM core</center><A NAME="Core">
454
</A>
455
<p>
456
<p>
457
 
458
<p><A NAME="tth_fIg3">
459
</A> <a href="tdm_top.ps">Figure</a> <center>Figure 3: TDM controller</center><A NAME="top">
460
</A>
461
<p>
462
<p>
463
        <H2><A NAME="tth_sEc6">
464
6</A>&nbsp;&nbsp;Testing and verifications</H2>
465
 
466
<p>
467
 
468
<TaBle border>
469
<tr><td>Requirement </td><td>Test method </td><td>Validation method </td></tr><tr><td>
470
<tr><td>Interface timing </td><td></td><td></td></tr>
471
<tr><td></td><td></td><td></td></tr><tr><td>
472
<tr><td>Functionality </td><td></td><td></td></tr></TaBle>
473
 
474
 
475
      <H3><A NAME="tth_sEc6.1">
476
6.1</A>&nbsp;&nbsp;Simulation and Test benches</H3>
477
 
478
<p>
479
      <H3><A NAME="tth_sEc6.2">
480
6.2</A>&nbsp;&nbsp;Verification techniques and algorithms</H3>
481
 
482
<p>
483
      <H3><A NAME="tth_sEc6.3">
484
6.3</A>&nbsp;&nbsp;Test plans</H3>
485
 
486
<p>
487
        <H2><A NAME="tth_sEc7">
488
7</A>&nbsp;&nbsp;Implementations</H2>
489
 
490
<p>
491
The  design is implemented using the VHDL language. The design is divided into three blocks, serial interface, Buffers and Wishbone interface with internal registers. The TDM controller uses the wishbone clock as its main clock and uses the ST-bus clock as enables for the internal logic.
492
 
493
<p>
494
      <H3><A NAME="tth_sEc7.1">
495
7.1</A>&nbsp;&nbsp;Scripts, files and any other information</H3>
496
 
497
<TaBle border>
498
<tr><td>Core Files </td><td></td></tr>
499
<tr><td>tdm_cont.vhd </td><td>Serial Interface</td></tr>
500
<tr><td>RxTDMBuff.vhd </td><td>Rx Buffer</td></tr>
501
<tr><td>TxTDMBuffer.vhd </td><td>Tx Buffer</td></tr>
502
<tr><td>tdm_wb_if.vhd </td><td>Wish bone interface and registers</td></tr>
503
<tr><td>tdm_core_top.vhd </td><td>TDM top block</td></tr>
504
<tr><td>components_pkg.vhd </td><td>TDM core components</td></tr>
505
<tr><td>Script files </td><td></td></tr>
506
<tr><td>Build_TDM_cont.csh </td><td>NC-sim build all files script</td></tr>
507
<tr><td>cds.lib </td><td>NC-sim configuration file</td></tr>
508
<tr><td>hdl.var </td><td>NC-sim configuration file</td></tr>
509
<tr><td>Test Bench files </td><td></td></tr>
510
<tr><td>tdm_cont_top.vhd </td><td>TDM controller Top test bench</td></tr>
511
<tr><td>ISDN controller </td><td></td></tr>
512
<tr><td>ISDN_cont.vhd </td><td>Serial Interface</td></tr>
513
<tr><td>ISDN_cont_top.vhd </td><td>ISDN top block</td></tr></TaBle>
514
 
515
Notes: in order to implement the ISDN controller HDLC core files must be included.
516
The following memory cores files must be included to implement the buffers: tools_pkg.vhd , mem_pkg.vhd and spmem.vhd
517
 
518
<p>
519
        <H2><A NAME="tth_sEc8">
520
8</A>&nbsp;&nbsp;Reviews and comments</H2>
521
 
522
<p>
523
        <H2><A NAME="tth_sEc9">
524
9</A>&nbsp;&nbsp;References</H2>
525
 
526
<p>

powered by: WebSVN 2.1.0

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