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

Subversion Repositories socgen

[/] [socgen/] [trunk/] [doc/] [src/] [guides/] [guide_names.html] - Blame information for rev 103

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

Line No. Rev Author Line
1 19 jt_eaton
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2
<html>
3
<head>
4 80 jt_eaton
  <meta http-equiv="CONTENT-TYPE" content="text/html; charset=UTF-8">
5 19 jt_eaton
  <title>signal,port and pad naming guidelines</title>
6
  <meta name="GENERATOR" content="OpenOffice.org 3.0  (Linux)">
7
  <meta name="CREATED" content="0;0">
8
  <meta name="CHANGED" content="20100309;9305300">
9
  <meta name="KEYWORDS" content="start">
10
  <meta name="Info 3" content="">
11
  <meta name="Info 4" content="">
12
  <meta name="date" content="2008-01-08T12:01:41-0500">
13
  <meta name="robots" content="index,follow">
14
  <style type="text/css">
15
        <!--
16
                H3.western { font-family: "Albany", sans-serif }
17
                H3.cjk { font-family: "HG Mincho Light J" }
18
                H3.ctl { font-family: "Arial Unicode MS" }
19
        -->
20
        </style>
21
</head>
22
<body dir="ltr" lang="en-US">
23
<div id="toc__header" dir="ltr">
24
<p><br>
25
<br>
26
</p>
27
</div>
28
<h1><a name="socgen_project"></a>SOCGEN Project</h1>
29
<h2>Signal,Port and Pad Naming Guidelines</h2>
30
<p><br>
31
<br>
32
</p>
33 80 jt_eaton
<p>As Digital&nbsp; designs and design teams continue to grow it is
34
mandatory
35
that all rtl code must follow an established name space guideline. The
36
days when designers could simply pull names out of thin air are fast
37 19 jt_eaton
disappearing. Naming guidelines have&nbsp; three functions. First they
38
ensure that no two designers select the same name for different objects
39
and have a name collision. The second function is to ensure that the
40
chosen names are meaningful to all of the design team. It is quite
41
common for designers to select names
42
that only make sense to themselves and no one else on the team. The
43
third function
44
is to ensure that all rtl code follows a consistent format so that it
45
may be parsed
46
by various eda tools.
47
</p>
48
<h3 class="western"><br>
49
</h3>
50
<h3 class="western"><br>
51
</h3>
52
<h3 class="western"><br>
53
</h3>
54
<h3 class="western">Signal ,Port and Pad Names<br>
55
</h3>
56
<p>Signals define the nodes inside of&nbsp; a component and each node
57
must have a unique name. That signal name becomes the port name when a
58
node is ported up the hierarchy. The port names become the pad names at
59
the top level.&nbsp; All of these exist in the same name space along
60
with other items such as instance names. Managing this name space is
61
crucial.<br>
62
</p>
63
<p><br>
64
There are two distinct groups that use these names. The IC design team
65
is one group and it will use all three. The other group consists
66
of&nbsp; System designers,PCB designers, Board Test engineers etc.<br>
67
They only access the chip via the pad names and never see the internal
68 80 jt_eaton
ones.&nbsp; These two groups often have incompatible objectives. The IC
69 19 jt_eaton
design team is dealing with millions of names and needs a naming scheme
70
that produces long descriptive names that won't collide and conveys
71
information about the signals function. <br>
72
</p>
73
<p>The rest of the world is only dealing with a few hundred or thousand
74 80 jt_eaton
names. They also have their own naming requirements as well. These
75
typically
76 19 jt_eaton
are:<br>
77
</p>
78
<p><br>
79
</p>
80
<ul>
81
  <li>Short Names that fit on a schematic graphic symbol.&nbsp; If you
82
have 99 short names and 1 long one then you have a long column and
83
wasted white space on your schematic.</li>
84
</ul>
85
<br>
86
<ul>
87
  <li>Capital Letters.&nbsp;&nbsp; They make a packed schematic
88 80 jt_eaton
readable. You don't want your board designers squinting at a sheet
89
trying to guess if it's a
90 19 jt_eaton
1 or a l.</li>
91
</ul>
92
<br>
93
<ul>
94
  <li>ATE naming requirements.&nbsp; Do you know what the IEEE 1149.1
95 80 jt_eaton
pad naming rules are? If not then you better not try to pick any pad
96
names.</li>
97 19 jt_eaton
</ul>
98
<br>
99
<br>
100
The guideline for selecting pad names is that the IC design team should
101
not attempt to pick pad names based on the internal signal names.&nbsp;
102
They should first meet all of the PCA customers requirements without
103
regard to what names are chosen for the internal signals.&nbsp; Name
104
collisions are avoided by ensuring that ALL pad names start with a
105
capital letter and that all internal names&nbsp; start with a small
106
one. <br>
107
<br>
108
<br>
109 80 jt_eaton
<br>
110
<br>
111 19 jt_eaton
For internal signal and port names you must first find the four pieces
112
of information that will uniquely identify every signal in the design.
113
These are:<br>
114
<br>
115
<br>
116
<ul>
117
  <li>Interface Name&nbsp;&nbsp; &nbsp; You don't want 5 different ways
118
to spell clock in a design.&nbsp; Each&nbsp; team must&nbsp; agree
119
on&nbsp; common signal names and everyone must follow the rules. These
120
are called standard interfaces. The team must create a document that
121
lists all the standard interfaces&nbsp; and their names. It is
122
ESSENTIAL that once a standard is chosen then all signals covered by
123
that standards MUST follow the naming rules and the no signals that are
124
not covered by the standard are allowed to use its name.<br>
125
  </li>
126
</ul>
127
<br>
128
<ul>
129
  <li>Sub_member &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; If the standard
130
interface has more than one signal&nbsp; then you must also define the
131
names for each sub_member as part of the standard <br>
132
  </li>
133
</ul>
134
<br>
135
<br>
136
<ul>
137 80 jt_eaton
  <li>Ad
138 19 jt_eaton
hoc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
139 80 jt_eaton
If
140
a signal is not defined by a standard interface then an ad hoc
141 19 jt_eaton
signal can be created based on the designers insight. If a module has 2
142
or more signals with the same standard interface then a ad hoc field is
143
needed to distinguish between them.</li>
144
</ul>
145
<br>
146
<ul>
147
  <li>Driving Instance&nbsp;&nbsp;&nbsp; This is the instance name that
148
is driving the signal. Wired or tristate logic is not allowed. There
149
will&nbsp; be one and only one driver per node.</li>
150
</ul>
151
<br>
152
<br>
153
<br>
154 80 jt_eaton
You can create signal names by simply gathering akk this information
155
and
156
concatenating it into&nbsp; a valid signal name. While you can use all
157
four fields,it is acceptable to
158
drop any field(s) if they are not needed to <br>
159
uniquely identify a node. For example a IC design may have a signal
160
named "clk". Clk is the
161 19 jt_eaton
standard interface name for a clock signal so we know that it is a
162
clock. The clock interface has two sub_members - rising edge and
163
falling edge.&nbsp; If you have N sub_members then you only have to
164
identify N-1 of them. In this case the standard chooses _n for falling
165
edge clocks and nothing for rising edge. clk is a rising edge clock. An
166
ad hoc field is needed if the design has more than one clock and we
167
have several - 2x, 4x 1.5 x etc. But again we only have to add this to
168
all but one of the clocks. clk is a 1x clock. This design only has one
169
clock generator so we don't need to add the driving instance.&nbsp; If
170
a second clock generator is added then all of those clocks must include
171
the driving instance in their name.<br>
172
<br>
173
<br>
174
Besides defining all of the standard interfaces the design team must
175
also define a field separator such as _ (underscore) as the way to
176
separate the different fields that are combined to make a signal or
177
port name.&nbsp; But the most important decision of all is the order
178
that the fields are assembled to make up a name. This is like the Big
179
Endian/Little Endian issue. They both have their strengths and
180
weaknesses and it really doesn't matter which one you pick. BUT it is
181
essential that the design team picks one and everybody does it that
182
way. <br>
183
<br>
184
Signal and port names are even worse because with four fields you can
185
have 24 possible signal names for each node.&nbsp; Unless everyone on
186
the design team adheres to one order then it will be chaos when you try
187
to architect and synthesize a design.<br>
188
<br>
189
<br>
190
<br>
191
<br>
192
The recommended order for fields in a signal/port name is<br>
193
<br>
194
<br>
195
<br>
196
&nbsp;&nbsp; Driving_instance_(sep)_Ad
197
hoc_(sep)_Interface_(sep)_Sub_member<br>
198
<br>
199
<br>
200
<br>
201
This ordering gives us the ability to have our signal names follow
202
their function as the signals pass up and down the hierarchy. It also
203
gives us an easy rule to follow when we need to pick a signal name. All
204
that you need to do is find the instance name of the module that is
205
driving that signal and combine it with the port name from that
206
module.&nbsp; Since instance names are unique inside a design and port
207
names are unique inside of a module then this rule guarantees that no
208
other signal will use that name.<br>
209
<br>
210
By following this rule a signal name will grow as it progresses up the
211
hierarchy.&nbsp; At each new level&nbsp; a new instance name&nbsp; is
212
stuck on&nbsp; the front&nbsp; end and&nbsp; the&nbsp; instance name
213
from the lower level&nbsp; becomes part of the ad hoc field.&nbsp; Each
214
name contains a history&nbsp; of how it was created and what it does.<br>
215
<br>
216
<br>
217
There are some special cases that can occur and these rules should be
218
followed:<br>
219
<br>
220
<br>
221
<ul>
222
  <li>There is one sub_member that can be used on a&nbsp; ad hoc signal
223
that is not defined as a standard interface. That sub_member is active
224
low (_n).</li>
225
</ul>
226
<br>
227
<ul>
228
  <li>If a standard interface includes a signal that is itself defined
229
as another&nbsp; standard interface then the interface name of the
230
child becomes the sub member name for the parent. This usually occurs
231
when a clock or reset is included in a bus interface. This ensures that
232
when parsing the signal name it will match on both interfaces. If there
233
are multiples of this interface then a ad hoc field must be perpended
234
to the sub_member interface.</li>
235
</ul>
236
<br>
237
<ul>
238
  <li>If the driving instance is not known such as a module where the
239
signal is an input port then the instance and port of a receiving
240
instance may be used instead.</li>
241
</ul>
242
<br>
243
<br>
244
<br>
245
Again remember that any field may be dropped if it is not needed to
246
uniquely identify the node<br>
247
<br>
248
<br>
249
<br>
250
<img style="width: 800px; height: 600px;" alt=""
251 20 jt_eaton
 src="../png/naming_guide_1.png"><br>
252 19 jt_eaton
<p><br>
253
<br>
254
<br>
255
Here is an example of how this works in a real design. A router IC has
256
24 instances of a ethernet interface. Each instance controls a transmit
257
sram buffer and a receive sram buffer. There are four instances in a
258
bank and the bank is instantiated six times. The&nbsp; receive write
259
data&nbsp; for the&nbsp; third interface in the second bank
260
originates&nbsp; in a register bank deep inside a submodule. The name
261
of this register is sram_wdata and that was chosen because the sram bus
262
is a standard interface and wdata is the sub_member for the wdata. As
263
it passes through the hierarchy the driving instance name is prepended
264
on the front. It always parses as a sram wdata signal but the ad hoc
265
field keeps growing.</p>
266
<p><br>
267
If the clock signal is also included in the sram interface then it's
268
name would be:</p>
269
<p>&nbsp;<br>
270
</p>
271
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
272
bank_2_eth_3_sram_clk<br>
273
<br>
274
</p>
275
<p>It would parse as both a clock signal and a sram signal. If this
276
were a dual port sram then the signal would be:</p>
277
<p><br>
278
</p>
279
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
280 80 jt_eaton
bank_2_eth_3_sram_a_clk&nbsp;&nbsp;
281
<br>
282 19 jt_eaton
</p>
283
<p><br>
284
</p>
285
<p>Notice that there is an ad hoc field both before and after the sram
286
interface name and it still parses as both a clock and a sram signal.<br>
287
</p>
288
<p><br>
289
</p>
290
<p>If you want to synthesize the bank of 4 controllers then you will
291
need to set an output delay on the sram outputs as a placeholder for
292
the setup and routing delays in the full chip. To do this you need the
293
full instance name of the source registers as seen from the top level.
294
Assuming you use the standard _reg convention it would be:<br>
295
</p>
296
<p><br>
297
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
298
eth_3/rx/sram_wdata_reg<br>
299
</p>
300
<p><br>
301
</p>
302
<p><br>
303
</p>
304
<p><br>
305
</p>
306
<p><br>
307
<br>
308
</p>
309
<p><br>
310
<br>
311
</p>
312
<p><br>
313
<br>
314
</p>
315
<p><br>
316
<br>
317
</p>
318
<p><br>
319
<br>
320
</p>
321
<p><br>
322
<br>
323
</p>
324
<p><br>
325
<br>
326
</p>
327
<p><br>
328
<br>
329
</p>
330
<p><br>
331
<br>
332
</p>
333
<p><br>
334
<br>
335
</p>
336
<p><br>
337
<br>
338
</p>
339
<p><br>
340
<br>
341
</p>
342
<p><br>
343
<br>
344
</p>
345
<p><br>
346
<br>
347
</p>
348
<br>
349
<p><br>
350
</p>
351
<h2>Standard Interfaces<br>
352
</h2>
353
<p></p>
354
<p><br>
355
</p>
356
<p><br>
357
</p>
358
<p><br>
359
</p>
360
<p><br>
361
</p>
362 80 jt_eaton
<h3 class="western">Clock <br>
363
</h3>
364 19 jt_eaton
<p><br>
365
A clock is a signal that drives the clock port of a flipflop.<br>
366
</p>
367
<br>
368 80 jt_eaton
<table style="text-align: left; width: 500px; height: 120px;" border="8"
369
 cellpadding="4" cellspacing="4">
370 19 jt_eaton
  <tbody>
371
    <tr>
372 80 jt_eaton
      <td style="vertical-align: top;">Interface<br>
373
      </td>
374
      <td style="vertical-align: top;">Clock<br>
375
      </td>
376
      <td style="vertical-align: top;">Name<br>
377
      </td>
378
      <td style="vertical-align: top;">Sub <br>
379
      </td>
380 19 jt_eaton
    </tr>
381
    <tr>
382 80 jt_eaton
      <td style="vertical-align: top;"> <br>
383
      </td>
384
      <td style="vertical-align: top;"> <br>
385
      </td>
386
      <td style="vertical-align: top;">CLK<br>
387
      </td>
388
      <td style="vertical-align: top;"> <br>
389
      </td>
390 19 jt_eaton
    </tr>
391
    <tr>
392 80 jt_eaton
      <td style="vertical-align: top;"> <br>
393
      </td>
394
      <td style="vertical-align: top;">Rising Edge<br>
395
      </td>
396
      <td style="vertical-align: top;">CLK<br>
397
      </td>
398
      <td style="vertical-align: top;"> <br>
399
      </td>
400 19 jt_eaton
    </tr>
401
    <tr>
402 80 jt_eaton
      <td style="vertical-align: top;"><br>
403
      </td>
404
      <td style="vertical-align: top;">Falling Edge<br>
405
      </td>
406
      <td style="vertical-align: top;">CLK<br>
407
      </td>
408
      <td style="vertical-align: top;">_N<br>
409
      </td>
410 19 jt_eaton
    </tr>
411
  </tbody>
412
</table>
413
<br>
414
<br>
415
<br>
416 80 jt_eaton
<h3 class="western">Reset <br>
417
</h3>
418 19 jt_eaton
<p><br>
419
A reset is a signal forces nodes into a known safe state<br>
420
</p>
421
<br>
422 80 jt_eaton
<table style="text-align: left; width: 500px; height: 120px;" border="8"
423
 cellpadding="4" cellspacing="4">
424 19 jt_eaton
  <tbody>
425
    <tr>
426 80 jt_eaton
      <td style="vertical-align: top;">Interface<br>
427
      </td>
428
      <td style="vertical-align: top;">Reset<br>
429
      </td>
430
      <td style="vertical-align: top;">Name<br>
431
      </td>
432
      <td style="vertical-align: top;">Sub <br>
433
      </td>
434 19 jt_eaton
    </tr>
435
    <tr>
436 80 jt_eaton
      <td style="vertical-align: top;"> <br>
437
      </td>
438
      <td style="vertical-align: top;"> <br>
439
      </td>
440
      <td style="vertical-align: top;">RESET<br>
441
      </td>
442
      <td style="vertical-align: top;"> <br>
443
      </td>
444 19 jt_eaton
    </tr>
445
    <tr>
446 80 jt_eaton
      <td style="vertical-align: top;"> <br>
447
      </td>
448
      <td style="vertical-align: top;">Active high sync<br>
449
      </td>
450
      <td style="vertical-align: top;">RESET<br>
451
      </td>
452
      <td style="vertical-align: top;"> <br>
453
      </td>
454 19 jt_eaton
    </tr>
455
    <tr>
456 80 jt_eaton
      <td style="vertical-align: top;"><br>
457
      </td>
458
      <td style="vertical-align: top;">Active Low async<br>
459
      </td>
460
      <td style="vertical-align: top;">RESET<br>
461
      </td>
462
      <td style="vertical-align: top;">_N<br>
463
      </td>
464 19 jt_eaton
    </tr>
465
  </tbody>
466
</table>
467
<br>
468
<br>
469
<br>
470 80 jt_eaton
<h3 class="western">Pads <br>
471
</h3>
472 19 jt_eaton
<p><br>
473
Pads are the connections made between the pad_ring and the core.<br>
474
</p>
475
<br>
476 80 jt_eaton
<table style="text-align: left; width: 500px; height: 120px;" border="8"
477
 cellpadding="4" cellspacing="4">
478 19 jt_eaton
  <tbody>
479
    <tr>
480 80 jt_eaton
      <td style="vertical-align: top;">Interface<br>
481
      </td>
482
      <td style="vertical-align: top;">Pads<br>
483
      </td>
484
      <td style="vertical-align: top;">Name<br>
485
      </td>
486
      <td style="vertical-align: top;">Sub <br>
487
      </td>
488 19 jt_eaton
    </tr>
489
    <tr>
490 80 jt_eaton
      <td style="vertical-align: top;"> <br>
491
      </td>
492
      <td style="vertical-align: top;"> <br>
493
      </td>
494
      <td style="vertical-align: top;">PAD<br>
495
      </td>
496
      <td style="vertical-align: top;"> <br>
497
      </td>
498 19 jt_eaton
    </tr>
499
    <tr>
500 80 jt_eaton
      <td style="vertical-align: top;"> <br>
501
      </td>
502
      <td style="vertical-align: top;">output<br>
503
      </td>
504
      <td style="vertical-align: top;">PAD<br>
505
      </td>
506
      <td style="vertical-align: top;">_OUT <br>
507
      </td>
508 19 jt_eaton
    </tr>
509
    <tr>
510 80 jt_eaton
      <td style="vertical-align: top;"><br>
511
      </td>
512
      <td style="vertical-align: top;">Input<br>
513
      </td>
514
      <td style="vertical-align: top;">PAD<br>
515
      </td>
516
      <td style="vertical-align: top;">_IN<br>
517
      </td>
518 19 jt_eaton
    </tr>
519
    <tr>
520 80 jt_eaton
      <td style="vertical-align: top;"><br>
521
      </td>
522
      <td style="vertical-align: top;">Enable<br>
523
      </td>
524
      <td style="vertical-align: top;">PAD<br>
525
      </td>
526
      <td style="vertical-align: top;">_OE<br>
527
      </td>
528 19 jt_eaton
    </tr>
529
  </tbody>
530
</table>
531
<br>
532
<br>
533
<br>
534 80 jt_eaton
<h3 class="western">Sram <br>
535
</h3>
536 19 jt_eaton
<p><br>
537
Sram signals connect between the core and an instantiated memory cell.<br>
538
</p>
539
<br>
540 80 jt_eaton
<table style="text-align: left; width: 500px; height: 120px;" border="8"
541
 cellpadding="4" cellspacing="4">
542 19 jt_eaton
  <tbody>
543
    <tr>
544 80 jt_eaton
      <td style="vertical-align: top;">Interface<br>
545
      </td>
546
      <td style="vertical-align: top;">SRAM<br>
547
      </td>
548
      <td style="vertical-align: top;">Name<br>
549
      </td>
550
      <td style="vertical-align: top;">Sub <br>
551
      </td>
552 19 jt_eaton
    </tr>
553
    <tr>
554 80 jt_eaton
      <td style="vertical-align: top;"> <br>
555
      </td>
556
      <td style="vertical-align: top;"> <br>
557
      </td>
558
      <td style="vertical-align: top;">SRAM<br>
559
      </td>
560
      <td style="vertical-align: top;"> <br>
561
      </td>
562 19 jt_eaton
    </tr>
563
    <tr>
564 80 jt_eaton
      <td style="vertical-align: top;"> <br>
565
      </td>
566
      <td style="vertical-align: top;">RW Address<br>
567
      </td>
568
      <td style="vertical-align: top;">SRAM<br>
569
      </td>
570
      <td style="vertical-align: top;">_ADDR <br>
571
      </td>
572 19 jt_eaton
    </tr>
573
    <tr>
574 80 jt_eaton
      <td style="vertical-align: top;"> <br>
575
      </td>
576
      <td style="vertical-align: top;">Read Address<br>
577
      </td>
578
      <td style="vertical-align: top;">SRAM<br>
579
      </td>
580
      <td style="vertical-align: top;">_RADDR <br>
581
      </td>
582 19 jt_eaton
    </tr>
583
    <tr>
584 80 jt_eaton
      <td style="vertical-align: top;"> <br>
585
      </td>
586
      <td style="vertical-align: top;">Write Address<br>
587
      </td>
588
      <td style="vertical-align: top;">SRAM<br>
589
      </td>
590
      <td style="vertical-align: top;">_WADDR <br>
591
      </td>
592 19 jt_eaton
    </tr>
593
    <tr>
594 80 jt_eaton
      <td style="vertical-align: top;"><br>
595
      </td>
596
      <td style="vertical-align: top;">Write Data<br>
597
      </td>
598
      <td style="vertical-align: top;">SRAM<br>
599
      </td>
600
      <td style="vertical-align: top;">_WDATA<br>
601
      </td>
602 19 jt_eaton
    </tr>
603
    <tr>
604 80 jt_eaton
      <td style="vertical-align: top;"><br>
605
      </td>
606
      <td style="vertical-align: top;">Read Data<br>
607
      </td>
608
      <td style="vertical-align: top;">SRAM<br>
609
      </td>
610
      <td style="vertical-align: top;">_RDATA<br>
611
      </td>
612 19 jt_eaton
    </tr>
613
    <tr>
614 80 jt_eaton
      <td style="vertical-align: top;"><br>
615
      </td>
616
      <td style="vertical-align: top;">Ram Select<br>
617
      </td>
618
      <td style="vertical-align: top;">SRAM<br>
619
      </td>
620
      <td style="vertical-align: top;">_CS<br>
621
      </td>
622 19 jt_eaton
    </tr>
623
    <tr>
624 80 jt_eaton
      <td style="vertical-align: top;"><br>
625
      </td>
626
      <td style="vertical-align: top;">Write Enable<br>
627
      </td>
628
      <td style="vertical-align: top;">SRAM<br>
629
      </td>
630
      <td style="vertical-align: top;">_WR<br>
631
      </td>
632 19 jt_eaton
    </tr>
633
    <tr>
634 80 jt_eaton
      <td style="vertical-align: top;"><br>
635
      </td>
636
      <td style="vertical-align: top;">Read Enable<br>
637
      </td>
638
      <td style="vertical-align: top;">SRAM<br>
639
      </td>
640
      <td style="vertical-align: top;">_RD<br>
641
      </td>
642 19 jt_eaton
    </tr>
643
    <tr>
644 80 jt_eaton
      <td style="vertical-align: top;"><br>
645
      </td>
646
      <td style="vertical-align: top;">Bit Write Enable<br>
647
      </td>
648
      <td style="vertical-align: top;">SRAM<br>
649
      </td>
650
      <td style="vertical-align: top;">_BE<br>
651
      </td>
652 19 jt_eaton
    </tr>
653
    <tr>
654 80 jt_eaton
      <td style="vertical-align: top;"><br>
655
      </td>
656
      <td style="vertical-align: top;">Clock<br>
657
      </td>
658
      <td style="vertical-align: top;">SRAM<br>
659
      </td>
660
      <td style="vertical-align: top;">_CLK<br>
661
      </td>
662 19 jt_eaton
    </tr>
663
  </tbody>
664
</table>
665
<br>
666
<br>
667
<br>
668 80 jt_eaton
<h3 class="western">Wishbone Bus <br>
669
</h3>
670 19 jt_eaton
<p><br>
671
The wishbone bus provides microprocessor interconnection .<br>
672
</p>
673
<br>
674 80 jt_eaton
<table style="text-align: left; width: 500px; height: 120px;" border="8"
675
 cellpadding="4" cellspacing="4">
676 19 jt_eaton
  <tbody>
677
    <tr>
678 80 jt_eaton
      <td style="vertical-align: top;">Interface<br>
679
      </td>
680
      <td style="vertical-align: top;">Wishbone<br>
681
      </td>
682
      <td style="vertical-align: top;">Name<br>
683
      </td>
684
      <td style="vertical-align: top;">Sub <br>
685
      </td>
686 19 jt_eaton
    </tr>
687
    <tr>
688 80 jt_eaton
      <td style="vertical-align: top;"> <br>
689
      </td>
690
      <td style="vertical-align: top;">Address<br>
691
      </td>
692
      <td style="vertical-align: top;">WB<br>
693
      </td>
694
      <td style="vertical-align: top;">_ADR<br>
695
      </td>
696 19 jt_eaton
    </tr>
697
    <tr>
698 80 jt_eaton
      <td style="vertical-align: top;"> <br>
699
      </td>
700
      <td style="vertical-align: top;">Write Data<br>
701
      </td>
702
      <td style="vertical-align: top;">WB<br>
703
      </td>
704
      <td style="vertical-align: top;"> _WDAT<br>
705
      </td>
706 19 jt_eaton
    </tr>
707
    <tr>
708 80 jt_eaton
      <td style="vertical-align: top;"><br>
709
      </td>
710
      <td style="vertical-align: top;">Read Data<br>
711
      </td>
712
      <td style="vertical-align: top;">WB<br>
713
      </td>
714
      <td style="vertical-align: top;">_RDAT<br>
715
      </td>
716 19 jt_eaton
    </tr>
717
    <tr>
718 80 jt_eaton
      <td style="vertical-align: top;"><br>
719
      </td>
720
      <td style="vertical-align: top;">Write Enable<br>
721
      </td>
722
      <td style="vertical-align: top;">WB<br>
723
      </td>
724
      <td style="vertical-align: top;">_WE<br>
725
      </td>
726 19 jt_eaton
    </tr>
727
    <tr>
728 80 jt_eaton
      <td style="vertical-align: top;"><br>
729
      </td>
730
      <td style="vertical-align: top;">Byte Select<br>
731
      </td>
732
      <td style="vertical-align: top;">WB<br>
733
      </td>
734
      <td style="vertical-align: top;">_SEL<br>
735
      </td>
736 19 jt_eaton
    </tr>
737
    <tr>
738 80 jt_eaton
      <td style="vertical-align: top;"><br>
739
      </td>
740
      <td style="vertical-align: top;">Cycle<br>
741
      </td>
742
      <td style="vertical-align: top;">WB<br>
743
      </td>
744
      <td style="vertical-align: top;">_CYC<br>
745
      </td>
746 19 jt_eaton
    </tr>
747
    <tr>
748 80 jt_eaton
      <td style="vertical-align: top;"><br>
749
      </td>
750
      <td style="vertical-align: top;">Data Strobe<br>
751
      </td>
752
      <td style="vertical-align: top;">WB<br>
753
      </td>
754
      <td style="vertical-align: top;">_STB<br>
755
      </td>
756 19 jt_eaton
    </tr>
757
    <tr>
758 80 jt_eaton
      <td style="vertical-align: top;"><br>
759
      </td>
760
      <td style="vertical-align: top;">Acknowledge<br>
761
      </td>
762
      <td style="vertical-align: top;">WB<br>
763
      </td>
764
      <td style="vertical-align: top;">_ACK<br>
765
      </td>
766 19 jt_eaton
    </tr>
767
    <tr>
768 80 jt_eaton
      <td style="vertical-align: top;"><br>
769
      </td>
770
      <td style="vertical-align: top;">CTI<br>
771
      </td>
772
      <td style="vertical-align: top;">WB<br>
773
      </td>
774
      <td style="vertical-align: top;">_CTI<br>
775
      </td>
776 19 jt_eaton
    </tr>
777
  </tbody>
778
</table>
779
<br>
780
<br>
781
<br>
782
<p></p>
783
<br>
784
<br>
785
<p><br>
786
</p>
787
<p><br>
788
<br>
789
</p>
790
<p><br>
791
<br>
792
</p>
793
<p><br>
794
<br>
795
</p>
796
<p><br>
797
<br>
798
</p>
799
<p><br>
800
<br>
801
</p>
802
<p><br>
803
<br>
804
</p>
805
<p><br>
806
<br>
807
</p>
808
<p><br>
809
<br>
810
</p>
811
<p><br>
812
<br>
813
</p>
814
<p><br>
815
<br>
816
</p>
817
<p><br>
818
<br>
819
</p>
820
<p><br>
821
<br>
822
</p>
823
<p><br>
824
<br>
825
</p>
826
<p><br>
827
<br>
828
</p>
829
<p><br>
830
<br>
831
</p>
832
<p><br>
833
<br>
834
</p>
835
<p><br>
836
<br>
837
</p>
838
<p><br>
839
<br>
840
</p>
841
<p><br>
842
<br>
843
</p>
844
<p><br>
845
<br>
846
</p>
847
<p><br>
848
<br>
849
</p>
850
</body>
851
</html>

powered by: WebSVN 2.1.0

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