;-ANFORD CS()
....
."Ethernet Interface Documentation Pacl{age
John Seamons and Andreas Bechtolsheim Computer Science Department
Stanford University
June 30, 1980
This ~ t of documents describes a 3 Megabit Ethernet Interface developed by the Computer Science Department at Stanford University. The interface is designed to interconnect host computers to the Ethernet via a 16-bit parallel port.
The package contains:
* Function and Interface Description * Logic Schematics
* Prototype Layout
* Timing Diagrams
* State Machine Graphs
* State Machine Code
PrOject Heferance File Designer Rev
SUNet Ethernet Interface Clocks ei.acover.sil ,Iohn Seamons 3
..
Date Page
3 Jul 1980 18: 11 E.DOC[SUN,AVB] COMMENT e VALID 90897 PAGES
C REC PAGE DESCRIPTION
C00991 00001 C09002 99992
coaoos
00003 C00908 09094 COOOIB 99995 C00012 80006 COB91S 99097 C99018 ENDMKCe; .
Ethernet Interface Documentation Ethernet Receiver
Ethernet Transmitter Ethernet Controller DMA Controller: Controller Function:
3 Jul 1989 18:11 E.DOC[SUN,AVB] PAGE 2-1
Ethernet Interface Documentation
The Ethernet interface described in the following connects an Ethernet transceiver to one of three system interfaces:
1) A 8/16 bits parallel port.
2) The GPIB General Purpose Interface Bus.
3) A RS-422 high-speed serial line.
The interface is designed for full-duplex operation.
Thus loopback (sending to oneself) is possible for diagnostic purposes.
The Ethernet interface itself consists of three parts: a Receiver, a Transmitter, and a Controller.
The receiver converts serial data from the Ethernet into IS-bit parallel words.
A
Bit-vector address filter, which is loaded from the controller.accepts only a selected set of destination addresses.
The receiver also straps the Ethernet leader bit and checks the CRee
The transmitter translates IS-bit parallel data into a serial data stream.
It prefixes the data stream with a leader bit and appends the CRC ,code
which it computes on the fly.
In addition, the transmitter jams the Ethernet if a collision is detected either by the transceiver or the receiver.
The controller performs the other functions necessary for a system level Ethernet interface: packet buffering, retransmission, and initialization.
The controller interfaces the Ethernet to either a 8/16 bit parallel port,
a GPIB port, or a high-speed serial line port.
These ports can be easily interfaced to almost any host computer.
The controller is implemented as a fast a-bit microcomputer system with
four DMA channels, Timer, and 4 kBytes of buffer memory.
If desired, the controller's·functionality can be replaced by a
"host" mini- or microcomputer system. However. the timing characteristics
of the Ethernet (one IS-bit word every 5.44 usee, retransmission within 37 usee)
3 Jul 1980 18: II
Ethernet Receiver
Receiver Interface:
R.Data <0:15) R.ReadO\ R.Readl\ R.Rcad\ R.Ready\ R.End\ R.Abort\ R.Ack\ R.Enable
R.FA <9:7)
R.FDin R.FWE\
Output Input Input Input Output Output Output Input Input
In/Out
Input" Input
Receiver Functions:
E.OOC[SUN,AVB] PAGE 3-1
Parallel Data.
Read Byte 0 (Bits <9:7». } Tie together for
Read Byte 1 (Bits <8:15». } 16 bit operatio~.
Clear flags. Tie to R.Read9/1. New data ready.
End of Message. Cleared by R.Ack.
Abort message in progress. Cleared by R.Ack. Clear R.End and R.Abort.
Initializes receiver state machine. Assert after initialization is complete. Fil ter Address.
Shift Register Output if R.Enable is asserted.
Fi lter Data In Filter Write Enable
If R.Enable non asserted, then receiver state machine is initialized. Address filter can be loaded via R.FA, R.FDin, and R.FWE\.
Address filter should be loaded before interface is enabled.
After R.Enable is asserted. receiver state machine wilJ enter flush state until carrier 1dle.
Receiver then listens continously to Ethernet. Phase Decoder acquires synchronization on Start Bit. Receiver state machine places data into shift register.
At the end of the first word it checks the address in the address vector. If Ethernet carrier drops, receive state machine checks
eRC and Bit-count. If both are correct. R.End flag is set. Otherwise and in the case of collision after the first R.Ready R.Abort is set.
Microcomputer system should throwaway aborted messages. (Number of aborted messages is expected to be very small.)
Response time requirements:
R.Ready to R.Read:
3 Jul 1989 18: 11
Ethernet Transmitter
Transmitter Interface:
T.Data (0:15)
T. Wr iteO\
T.Writel\ T.Write\ T.Ready\ T.Sent\ T.Abort\ T.Ack\ T.Enable
Input Input Input Input Output Output Output Input Input
Transmitter Functions:
LDOC[SUN,AVB] PAGE 4-1
Parallel Data.
Write Byte 9 (Bits <9:7». } Tie together for
Write Byte 1 (Bits (8:15». } 16 bit operation.
Clear flags. Tie to WriteS/l.
Ready to accept data. Cleared by T.Write. Message transmitted. Cleared by T.Ack. Message collided. Cleared by T.Ack. Clear T.Sent and T.Abort.
Enable transmit data driver to transceiver.
Can be used to terminate transmissions immediately. Should be held inactive after power-up to allow transmitter state machine to autoinitialize.
Transmitter is activated by writing first data word. Transmitter then attempts to aquire Ethernet.
Timeout function for aQuisition must be provided externally.
Transmission is terminated with CRe code if no more data is available.
Transmission is aborted upon collision reported by Transceiver or Phase Decoder. Retransmission function and algorithm must be provided externally.
Response time requirements:
T.Write to T.Ready: 5440 nsec (16 bit times).
3 Jul 1980 18:11 E.DOC[SUN,AVB] PAGE 5-1 Ethernet Controller
Controller Interface:
The controller supports one of three bidirectional data ports:
a parallel port, a
GPrs
port, and asro
port.For a particular system, only one of these ports can be used. The particular port in use will be called ·local port·.
The interface is implemented via messages consisting of one 16-blt
command word that is optionally followed by a fixed number of data words. The length of the data field is limited to 512 words (1924 bytes).
Message Summar~:
Host to EthernetjController: Initialize
Load Address Filter with <n> address What is your fixed address?
Send following packet with <n> words, <words>*n
Ethernet Controller to Host:
My fixed address is <n>
Timeout on network aQuisition
I failed to send a packet despite 8 retries
3 Jul 1989 18:11 E.OOC[SUN,AVB] PAGE 6-1 OMA Controller:
All data transfers are handled by the 9517 OMA Controller. This DMA chip has four channels allocated as follows: Channel 9 Receiver
Channel 1 Receiver EOP Pointer -Channel 2 Transmitter
Channel 3 local Port
Chan 9: Autoinitialization implements cyclical buffer.
Save all receiver data in buffer (including bad messages) Chan 1: Autoinitjalization implements cyclical buffer.
Save current address and R.Abort on R.End.
Chan 2: Transfer fixed number of data words from buffer to transmitter. Chan 3: Transfer fixed number of data words between local port and buffer. The first two channels allow to receive back-to-back packets while
the buffer memory can be simultaneously unloaded to the local port. Both the channel for Receiver Data and EOP Address perform their task without intervention of the microprocessor and deposit their data items
into cyclical Queues in buffer memory.
In contrast, the local port Read/Write and Transmitter Data channel
are explicitel~ started under microcomputer control with a
definite wordcount, which is the length of the packet to be transferred. The Microcomputer is interrupted on EOP of a local port transfer
and on SENT from the transmitter. Note that SENT is set whenever the transmitter terminated its transmission, which might be on
3 Jul 1989 18: 11 E.OOC[SUN,AVB] PAGE 7-1
Controller Function:
Upon initialization (either hardware or command), the 8685 controller:
1) reads the fixed address and loads it into the address filter.
2) initializes the Ports
3) initializes the OMA device
4) cnables the receiver and the transmitter
5) enables interrupts
6) halts.
All further functions are interrupt driven (described below).
Interrupt routines:
Trap (edge and level. non-maskable)
not used because of difficulty to synchronize DHA device manipulation.
RST 7.5 (edge level)
TO (Timer: Count=O)
Timer is started on network aQuisition for timeout and on collision for retransmission.
At other times timer is running continously for random number generation. RST 7.5 Interrupt is disabled then.
RST 6.5 (1 eve 1)
.RX: Message arrived (Pointer and Status was queued by Channell) Reset Interrupt request
Check DMA Channel 1 current address to see how many pointers are pending.
Note that if last interrupt was asynchronous. no new message arrived. , Future Interrupts wi 11 aga in be handl ed synchronous 1y.
If Abort then throw packet away else put on received Queue. Send message to host that packet arrived •
. RST 5.5 (l eve 1 )
INTR:
TX: Message sent.
Check Collision Status.
Check whether DMA controller terminated transmission. Clear request.
If Collision then if collision count
<
8 then retryelse send host message about failure.
If port idle then write message header to port else put on queue.
(level)
I f port idle, then Intr .. Write Interrupt request else
Intr .. EOP channel 3.
0
..
..-~~ ... ·~' .. I ... ,~'"" '"'.J
.
III Ill~ ,.. .. ' • ..-,~1
III
.... t.:.TA-l ? Ol Q)6 "II',t.:.T"l PC. co.'''' ., 03 Q) PC.CA1Q
~.~T~
B""
'.$"'.
04· It •. ClOT.;) pt',.~T"l a"" "S3'><o""
PO.t»T.;)""."V
~:
IlC0I os Il "".rt.)JT IJ os tEOI os '2 St".'CPS 06 ., "'''.~ •• 0. 06 .; R">(.~"O? O? •• ~.p..:e..r ., O?
0' 16 p.,.rl~
lellll~ ecce " "I('.(~~ .s C6~ ec oe 1~"".£N'B..Ee
C42.2'-.
"J
"J
-·--·---·---1
11 " 1...
1'"
>I: C£It". "'I AI
R-.I,,,-!
·
Qp".4,J ;
A3
...
•...
O)42';QMol
~.t#; •
...
Rot.~ I~
A6
... 4' II A?
~ '2 "8
ill
...
01 ... DOJTPO.Il«'''' ' " , OCI
~o.
O. PO. """'1[11 pt..o;:.nn l A.01 • III Co2 PC.OQT~
"1).""'''2 3
Q
III e , 1:>3 OJ pt'I.~11:"T
"1) . ..,.'<.:1 "A3 ?"S4~1 OJ ~I"" '.S]?
""
,:.0.(0-...1..,.
....
"'"
11 130; '1£11' Il PD. ~'QT[e0- os
~
...
os '2 ." r.. 06 .~ PC. S"QTEI,--!! ... "" Il ,,. 0' 0' I., pt,.$u·"'I"'El
f"i·
F
I."~":,
1
~
"1PO.S'~T!:-.3
1II.F"C1N
r'
r
....rooJT'tV."."
e
t.
, 0''''<» SOl 3 01 O. D.De
. , Orl. • III ell A,O'
.. 0" ' 03 OJ6 ".Ill
1. Of3 7"'~ e 04 7"". g.. D.Dl
IS 01. AOI 13 0Ii "f:ll os '2 ".C-.s Ol'i •• 06 06 .$ D.OS
.. Dr6 t? O? O? 16 Q.06
16 0"" ... Q"SeSI QICR GI GIl IS DeX « 0 9 •• R.O?
J:Jrr
-r-
I"
I'
•• q[~,F'O.CQIOCiIlf'Ct ' " , ClIO ~o. o. Ih(.~l'rt ~.[):.TQ l AI
O. ~Ill Col R.:.p.()
~.~ln
:Q
III ~Ol OJ A'-:.~, ttx.~JI7'.J0
<.:I '40SA'7t OJ ~,Oot 'ASPA 0- 1O'I(.Ct.E~,
~.~QS ~
...
A;ll AU''2 r;;,r.CPC{.L.1l
0- os os
rb\.[t~0
~:
:
Il " 06
"" 'S ~·.J"CE, .3
" 0" 0'1 '6 «01:, ~Tt..T£e .~
..
'9 06
'1\
O£ oe I. ~.STQ1'£'1Q?
is
i-~
"J
I
"1 Dre""'. P.'J<.A8 3 D' O. D.De
I'
on If.:.'" 402 'oi D.OO .. Dra RY..Q "1 OJ OJ6 R.Ole1· Dr,J ''''~ ~"."-l e 0-- ?4L.'$37. ()oc A,OII
, Or. " ,
..
.".eo. .3 OS "f:4. '1 R.Oll00;
Q.DIl
IS O~ I:h(.u;. •• D6
"" .$
.. Or6 ~"' .• c:.o 17 0" o~ " ~.Ol"
16 Of""~ 07$01 51 CPCIi Gl G2: P":.A? 'S
C6X
0£09,-
D.D'S PO.$loIIM.e,],J),
.J
~ Ilb( ... I'I1:I"
l'
R.~t()" ~C£F..41-e D'){.Pu "". E><AEU:~,
(AII;, ... q; IIN.PIIJ
Ilb(."V 2~~
.J(.~tT[ 3 ."S7"
II:;Q 0 • R.~'Oh
-+-
R.r£'(),""."V
RI(.E'lO
R.['toC),
•. '0<",
I'~.~, .e
R)(.(~
~.&e:m,
c
R.A:J(,
13
vee I
klll~ vee 2
e02.0·21
1l.~lIIl ~ "!DIP
'""Ii vee
vee OII>$W ~
T)(.1iIV l .'11 HI '8 )(.P(l(;:.T:. •
'A2 H2
••
h.C"-'''-, IiI<.C':'U,·,..
l&U, .. ~"" II'J ••
Ih.o.:.TQ )(.(tLL 1~1~ e
IW I f . '2 TI(.CCl...L,.,
'''2'.0·c1 II <GOI (4'?21·.
l'ol Ifl
~ 6
vee lJO C><1
T~.I'V
'
..
o=t ,. (.8';.02·. vee e" 8 os ., (."".£0;·0
(£0;,'2·. ' )
-"'"
, (1)C .• ·41( , . "
..
"".~ .5 2A)""
~ O".~·I"O~o(.r .. ~o I?
-IGIG ,,10 J~..:.rf~£~,
~ C '" '2 C~.l~~·e
~o co II ~
•• T CUI'Ir .s
~
'
..
""""
G><J
1
11 ••
Q ~()«)
(·Z.0·2' C ~OO<
••
,.,. OU
e III
T.De O. O. Z
DtcC" '"
T.Ot
.
Eli! Ci! 13 01"
T.r..? , 03 OJ6 ~ Of!
T.~' S 0-."s;p. c.- , .. 01'3 " s ; ! W
'.~ • os
...,.
os 'e ~ Df. A.T;II ,. .D'i." 06 ""
.; • 5 D~
'.~ ,., 07 Q? '0 • Dr.
T.O"
'6
OiA
0£06 •• •• 01'>s.. O?SOSI CI'CII /0. QT • .,ptT£e,
I"
l'
CJ rTl"lr
1'1( CRCOJT
.
09
..
0 IC~ . I 1')(,,,""4TJ(.~TA
,
O. f
h
Cl?f1.9r;·e 11 ?S".TJI(.PU Z ' "
~ :.,,'151 T)(.CRCtt.l - 08
~ 0- "fez •
f--!: OS 13
~ 06 PO.COL..L., •
~ 0' •
• t t T)(.PU ,,~ T)(.,,,,
rf
"~ Tx. CCl..L. , 3 ?4$?4 • TX.STAT£'6--0 • Tx.',",
Til(. lCU'
C3A0.I""-0 ~.GO ~
T.09 3 01
O. " ., orcC"tII T.OO "Eli! Q2 ' ; '3 on
".01121 ., 03 OJ" e 0101"
T .011 e 001 7',S:P" 04 ~ 14 0 1'3 " S l ! "
., .t,,~ 1:3 or; QGoo •
OS ." S pr .. A.T ••
,. .t'l:! I"'~
"" .5 15 p~ T.D'4 I?IO'"
0' I. .. or.
T.eIS .e 09]\
<£06 ," Ie Dl""Q., O~SI cPCIt 61 Q
T.~lTE\,
I"
l
T~ .• F\J1'6
'T rTf" I" I'
TJo":.L.CI'IO"
I
Oo'~. 0· ,?CO
""."""'1£1'! 00 O. i Tl(.GO
Tl(.'~ O. Co< T..:.GO,
T..:.~
oc9 c:.J0 Tx.t..C..:o
Tl(.P£;.t;Y0 "'.SA", OJ ~ ?!.3? c.-" T":.Lc.:G, Tx.PV HCN!' 04' 11 ~121
" TJ(.ll:r..£
OS
OS " Go ,~ T){.101-£ ...
c..
.,
I- T ... ~T~jE0•• T>.:.tT':'T[1
TI(.~Tc.
"".OU .e
s Co T .JI;£Q[)T TJ(.R£l:Ore
T ... 1'1'£ ~ •• .",-e
a&<Z 09 T .E&()l, ~
TX.LC"lth
TJ(.PU T)(.Pu TJ(.CACt ..
"0 ""<1.
~.:- C~.0.170 • (J> Q
'"
T ••'e Alii
'b':.GO,
QD 11 Tx. ST .. TEIP .e~ £1'! 'J T.'$t"Nf, c-r '5 ~."""" '1(. TtL[
.
to>.... I~ TIO'.PU
P
T.t.C.lh T)I(. Uk.£',
T)f.P\J \e C~.1?0·0 S0S'~ J
T){..,""
!l6<l Q e T.c:e::JIn,
•
T.A:J(,IJ
3 Jul 1988 12144 E.PRHSUN,AVBJ PACE 2-1
E.PRHSUN,AYBJ e3-JUL-at 1231
PART NUMBER DIPTVPE COUNT DESCRIPTION LOCATIONS
HIA 745163 2 AA82, AA22
KI114A I FREQ123.538 AA12
9491 2 AA32, AJ12
93425A 1 AA42
745374 5 AC81, AEal, AEU; AE21, AJ21
745471 3 ACII, AClI, AC21
74LS299 4 RC31, AC41, RJ31, AJ41
74L5374 4 RE31, AE41, RG31, AG41
745249 I AG81
74L5163 I RGll
74L5151 1 RJ92
74S74 1 BB82
74LS74 4 BB12, 8B22, BB32, BB42
DIPS" 1 BD82
SF -->:
BE-->: 'OIPSU '[1002
SD-->I ! 111
\---• \---• \---• \---• I • •
'74338
, 'BOI2
! 1 '114
*
\---I • • I • • I • I
• I
• I •
Be-->: '74574 '74LS74 1 !74lS74 I '74LS74 I !74LS74
'BB02 '1\812 'BB22 'BB32 !BB42
BB-->: , 212 , 212 ! 212 ! ' 212 ! , 212 !
• I
\---
\---
--\---BA-->: 174LSISl '9401 '745374 '74L5299 !74lS299
'AJ02 !AJI2 'AJ21 !AJ31 IAJ4I
AJ-->: , 111 ! ' III I ! III ! 111 I III
.
--\---
\---
\---AIl-->'745240 ! !74lS163 ! '745471 !74LS374 !74LS374
'RGOI , 'AGI2 , 'nG21 'AG31 IAG41
RG-->' 112 * ! ! III ! ! III , III ! III
\---
--\---
\---AF --> '745374 ! 745374 ! 745374 ! 74LS374 '74LS374
'REOI 'REll 'AE21 'nDl IRE41
RE-->' III , 111 ! 111 ! 111 , 111
\---
\--- \--- .\---
\---AD-->'745374 '745471 !745471 !74LS299 !74lS299
'nCOl 1I1e11 !ne21 ~nC31 !RC41
AC-->' 111 , 111 , 111 ! 111 , 111 '!
\---
\--- \--- \---
\---RB-->I '74S1G3 I : Irl114A I 1745163 ! I !9401 !93425A I I
'An1}2 ,!fH112 !nn22
,"m32
!Rn42 ,AR-->: ! 111 , 111 I ! 111. I I ! 111 ! 111 I I
\---C42.0·21 C42.21·0 C85.42-0
C85.0·42
C170.85-0
C'140.170-0
____
----Ir
IC340.0·170 L. ___ --'
---._
..
_---_.--
...
---.---
---
...
---~30-jun-80
Page
ANFOROi' Project
CSD SUNet Ethernet Interface Clocks
Designer Rev
ei .clocks.sil John Seamons 3
Date
1
42.5 nsec Clock
85 nsec Clock
t
Level 0
Rising
Edge
Falling
Edge
Level 1
0 0 - 0 0
0 0 - 01
0 0 - 1 0
0 0 - 11
0 1 - 00
0 1 - 01
0 1 - 10
0 1 - 11
1 0 - 00
1 0 - 01
1 0 - 1 0
1 0 - 11
1 1 - 00
1 1 - 01
1"\- 10
11 - 11
The Shift Register samples RX.Data every 42.5 nsec.
No Transition (0)
Gooel Transition (0-1), Start at 1
Bad Transition
Good Transition (0-1), Start at 2
Bad Transition
Bad Transition
Good Transition (1-0), Start at 1
No Transition (1)
No Transition (0)
Good Transition (0-1), Start at 1
Bad Transition
Bad Transition
Good Transition (1-0), Start at 2
Bad Transition
Good Transition ("I-a), Start at 1.
No Transition (1)
Since the Phase Decoder State Machine is clocl\ed at 85 nsec, each 85 nsec window has 4 possilJle cases (Level 0, Rising Edge, Failino Edge, Level 1). Thus there are 16 possible transitions between consecutive state machine states, which are shown above.
Data Transitions
~
[!)meoutI
Transitions
Windows Setup Data Window Too Few
Duration
[DJ1]2
13 T
4]~ ~
1
7
:ril
~ E9.FE2113114Ii~
State Case 1
[:<
1:3 ..
[5
J7
9 (11 ..
:1
13:J~
State Case 2
I
2 4 [ 6 8],10I
12r
14State 0 meuns no carrier.
State measures time between data transitions in 42.5 nsec units.
State starts at 1 if data tmnsition falls in between 85 nS8C clocll, starts on 2 if dala transition on 85 nsec boundary. Duration of pulse is computed from current state, adjusted by + 1 if transition falls into middle of 85 nsec cycle.
ANFORO!
?,ojo," - [ "'/0'""'0 . - Filo Dosiglk"ei.pdsr.sil John Seamons
GSD SUi'let Phase Decoder SR
_ - rq"o;_ ".. CICii....-,: .,,,.,
Rev 3
Date
30-jun-80
Page
I Transition No Transitions
State
>=
13?Y;Y
NoDataO
/~
CARRIER
=
1STATE
=
15COLLlSlON
Jam
CARRIER=O
STATE
=
0NOTHING
Em:J-Of-Packet
(0-0)
CARRIER = 0
STATE
=
0NOH-liNG
Idle
CARRIER
=
1STATE
=
+2NOTHING
Active
(0-1 ) all others
CARRIER
=
1 CARRIER=
0STATE
=
1,2 STATE=
0DATA ONE COLLISION
Start Bit Lost .~ync
Duration = If 85-Transition then State else State -I-1
Bad Transitions
~ARRIER
=
13TATE
=
+ 2';OLLISION
roo Many Transitions
ANFOHO Project Heference
2 .. 5 / .. 10
7000ci
TransitionsCARRIER
=
1 CARRIER=
1STATE
=
+ 2NOTHING
Setup
STATE = 1,2
I
DataO
7~
DATA ONE DATA ZERO
Data Transition
File
CARRIER
=
1STATE
=
1,2COLLISION
Too Few Transitions
CSD SUNet Phase Decoder FSM ei.pclfsm.sil
Designer
I
RevJohn Seamons 3
~~CiU~~ T~~
C85.0·42 Pd.Carrier Pd.Oata Pd. Shift Rx.Ctear Counter
State idte
C85.0-42 Pd.Data
Pd.Shift
-,
SR Data 14
Rx.Fce\ Rx.Fdoul RX.Adrs Rx.WordO RX.Write Counter State
14 first word
15
Start Bit
L
_ _ _ _ _ _
- - - I15
x=:x
x=:X
15
SR Full
o first word
o
o
other words
---.---.---
....
--
....
---~C85.0-42 Pd. Carrier
Pd.Data
-,
Pd.Sllift-,
SR Data 14 15
Hx.WordO
______________________ Jr
Rx.End
---~
Rx.Abort\Rx.Clear Rx.Write Rx.CrcClr
---~---~
Counter
State first word
Reference
Gsa SUNet Receiver Timing
"~ '-,ANFORD
I
Project
.---~---15
flush
End of Packet
File Designer Rev
ei.rxtiming_sil John Seamons 3
o
Dale Page
1E~;bl;?-1 y~~
=-c
woo
{Enable}
-I
Fce\I
no
Lost Sync
... I yes '-~ yes
'1
-I yes/~Carrier? J --9 Word? ~. Coli? I
\it
no noy
ClearI
End IdleIdle
L '"
r:=
d,~
'10I
no yes '-~ yesI
I-71
Carrier?~
>:
Event? ]>j
Fce\ I>1
Word? I /d Ad rs?1----71
Writeno no
Invisible
First Word
- *
-
-
lI_1IIoIL
Ino'71
ca~>l
Event? : do'" "0~:
Word? : '"~rW;i1e
]
collision
I
Endl
W
no VisibleI
Word?:>;
Abort\ II
yesOther Words
1 P
[l]rCClr
I~
no. ,Carner? .1-.... . 1....-I
yesFlush
ANFOHD Project Reference File
0."9""
~"
PdgeGSD SUNet Receiver FSM ei.rxfsm.sil John Seamons 3 . 30-jun-80 1
""---...--C340.170·0 C170.85·0 Tx.Ready Pd.Carrier Tx.Go Tx.Load Tx.ldle Tx.SrDala TX.Crcin Tx.Data Setup Tr's Counter State
C340.170·0 Tx.Ready Tx.Word Tx.Load Tx.ldle Tx.SrData TX.Crcin TX.Data Setup Tr's Counter Slate
C340.170·0 TX.Word Tx.Go Tx.ldle TX.SrData TX.Crcin TX.Data Setup Tr's Counter State
CJ\NFORD
csa
..J
idle
Project
SUNet
-+
start bit (1)J..
o o15 o 2 3 4 5
send
Idle
I send·sendCRC only
send·send only
Send / Send CRC
'--_ ... 1
I
I forced zero by Ix.end! (no glitches)
14 15 o
send CRC idle
Shut Down
Reference File Designer Rev Dale Page
.... 1 ayes ... i . I no
r---...;/~'~i Ready? I 71 Car,ner?
J I - - - ,
Id!e i /
~L-_ _
-.Jf'-I
no,Idle
yes
[
~--!~_,~"r-.
- - " ' " ' I IJ'
no yes yes,~
I-Jam? I--;?'~ G~ 1I---3>~~d? i~i Ready? 1'--7>; Load
I
yesI - - - l no
Send
no
[--rO
r
.'--7 '~ Go
-~-Send CRC
Oille
~..
I
OeS;!;lIer r-_c_'s_'o ____
~_S_u_N_e_t
__
~
____
T_r_a_ns_i_n_it_te_r_r-_-S_M ____~~_~_,m
__ .s_il __~I~J_~_h_n_S_:_a_m
__o_ns_.~~3
__ _L_3_0_-j_u_n_-8_0 __~
___ 1 __~
3 Jul 1989 18:Z4 PO.SAI[SUN,AVB]
begin "prmgen"
require "prom.sal" source!file; S256;
define
data9 datal dataZ data3 stateS statel stateZ state3
=[ a9],
=[al],.
=[aZ],
=[ a3],
=[ a4],
=[a5], =[a6],
=[ a 7],
$carrier=[d9],
Sdata =[dl],
Sshift =[d2], Scoll_i =[d3], Sstate8 =[d4], Sstatel =[d5], Sstate2 =[d6], $state3 =[d7],
3 Jul 1989
state active
onetransition zerotransition idl etransit ion goodtransition notransition
badtransition
85 transition
duration idle startbit lostsync -toomany setup datatrans toofew timeout jam eop
data zero data::::one collision start reset nextstate prombegin bit($carrier, bit($data, bit($shift, bit($coll_i, b1t($stateO, bi t( $statel, bit($state2, bit($state3,
18:24 PD.SAI[SUN,AVB] PAGE Z-1
=[«stateO + statel + stateZ + state3) div d4)], =[ (statetl!O)],
=[(~data2 A data9»), comment X9 ~ Xl;
=[(data2 A ~dataO)]. comment Xl ~ XO;
=[(~data3 A ~data2 A ~datal A ~dataO)], comment 99 ~ 00:
=[(onetransition v zerotransition»).
=[«~data2 A ~datal A ~dataO) comment XO ~ 00;
v (data2 A datal A dataO»]. comment Xl ~ 11;
=[(~goodtrans;tion A ~notransition»), comment all others;
=[(dataO A datal v ~dataO A ~datal)]. comment in sync with 85:
=[(if _85_transition then state else (state+1»),
=[(~active A idletransition)].
_ =[ (~act ive A onetransition
»).
=[(~active A ~(idletransition v onetransition»),
=[(attive A badtransition)],
=[(active A goodtransition A (2~duration~5»),
=[(active A goodtransition A (6~duration~19»],
=[(active A (goodtransition v badtransition) A (11~duration~15»],
=[(active A notransition A (13~state~15»),
=[(timeout A data9)].
=[(timeout A ~data9»),
=[(zerotransition A datatrans»).
=[«onetransition A datatrans) v startbit)],
=[(lostsync v jam v toomany v toofew)].
=[(startbit v lostsync v jam v datatrans v toofew)],
=[( idle V eop»),
=[(if reset then 9
else if (start A ~_85_transition) then 1
else if (start A _85_transition) then Z
else (state+2»];
(nextstate~O» ;
(collision v data_one»; (data_zero v data_one»;
( ~co 11 is i on» ;
(nextstate land dO»; (nextstate land dl»: (nextstate land d2»: (nextstate land d3»;
if (idle A (collision v data_zero v data_one»
then error ("illegal idle state!"):
if (collision A (idle v data_zero v data_one»
then error ("illegal collision state!");
if (data_zero A (idle v collision v data_one»
then error (";11ega1 data zero state!"):
if (data_one A (idle v collision
v
data_zero»then error (" i 11 ega 1 data_one state!");
promend:
3 Jul 1980 18:05 RX.SAI[SUN,AVB]
begin "prmgen"
require "prom.sai" source!file; $256;
define
carrier data shift word adrs enablo state9 statel
$write Send
$abort i
$clear-i $crcclr $fce i $state9 $statel
=[aO], =[al], =[ a2],
=[ a3],
=[ 04
J,
=[05], =[a6],
=[ a7],
=[ dO
J,
=[dl].
=[ d2
J,
=[ d3
J,
=[ d4
J,
=[d5J,
=[ d6
J,
=[ d7],
3 Jul 1989
init state idle first word other-words flush -event nil collision d_zero done datatr visible invisible
end idle lostsync nextstate prombegin b1t($write, bit($end, bit($abort_i, bit($clear_i, bit(Scrcclr, . b1t($fce i, bit($state9, bit(Sstatel,
18:05 RX.SAI[SUN,AVB]
=[(.,enable)],
=[«statel + stateO) d1v d6»),
=[(state=O)], =[(state=l) ], =[(state=Z)], =[(state=3)],
=[«shift + data) div dl»),
=[(event=O)], =[ (event=l)], =[(event=Z)], =[( event=3)],
PAGE 2-1
=[(carrier A (d_zero v d_one v nil»],
=[(other_words A «.,carrier A .,word) v (carrier A collision»)],
=[(first_word A «<arrier) v (carrier A collision) v
(datatr A word A .,adrs»)],
=[(idle A carrier A .,word)],
=[(i~le A carrier A collision)],
=[(
if ( ! idle:
(idle A .,carrier) v
(idle A carrier A .,(collision vend_idle» v
(flush A .,carrier)
) then 9 else
if ( ! first_word:
(first_word A datatr A .,word) v
(end_idle)
) then 1 else
if ( ! other_words;
(first_word A datatr A word A adrs) v
(other_words A datatr)
) then Z else
i f ( ! flush:
(flush A carrier) v
(lostsync) v
(visible) v
(invisible) v
(other_words A .,carrier A word)
) then 3 else
error(cvs($$adrs)&": didn't assign any statel")
») :
(.,init A «first_word A datatr A word A adrs) v
(other_words A datatr A word»»;
(.,init A «visible) v (other_words A .,carrier A word»»;
.,(init v (visible»);
.,(init v (idle A .,carrier»);
(init v (flush A .,carrier»):
.,(init v (first_word A carrier A (d_zero v d_one»»;
(init v (nextstate land dO»): (init v (nextstate land dill);
promend:
3 Ju 1 1989
spare state idle send sendere start r.eload nextstate
18:25 TX.SAI[SUN,AVB]
=[(sparcO A sparel)],
=[«statel + stateS) div d6)],
=[ (state=9)], =[(state=l)], =[ (state=2)],
=[(idle A ready A ~carrier)],
=[(send A ~jam A word A ready)],
=[(if (~spare v (state=3)) then 8
else if ( ! idle;
(idle A (~ready v carrier)} v
«send v sendere) A jam} v
(sendere A ~jam A word)
) then 8 else
if ( ! send;
(start) v (reload) v
(send A .,jam A .,word) ) then 1 else
if ( I senderc;
(send A ~jam A word A .. ready) v
(sendere A .,jam A .,word)
PAGE 2-1
} th.en 2 else
error(cvs($$adrs)&w: didn't assign any state!W)
prombegin
bit($go, bit($go_i, bit($load, bit($load_i, bit($idle, bit($idle_i, bit($stateO, bit($statel,
)]:
(spareA «send v sendere) A ~jam})};
(spareA ~«send v sendcrc) A ~jam»);
(spareA reload»:
(spareA ~reload»;
(sp~reA (idle A ~start»):
(spqreA ~(idle A ~start.»):
(SpareA (nextstate land dO»); (spareA (nextstate land dl»):
promend;
3 Jul 1989 18:25
TX.SAI[SUN,AVB]
begin "prmgen"
require "prom.sai" source!file;
$256;
define
carrier jam word ready spare9 sparel state9 statel
$go $go:,..1
$load $load i
$idle-Sidle i $state9 $statel
=[ a9],
=[ a 1],
=[ a2], =[ a3], =[a4], =[a5], =[a6], =[a7],
=[d9], =[d11, =[d2],
=[ d3],
=[ d4],
=[d5], =[d6], =[d7],