Cap resum de modificació |
|||
| Línia 6: | Línia 6: | ||
=== Elèctric === | === Elèctric === | ||
<graphviz renderer="neato" caption="Graph for example no. 2"> | |||
graph example2 { | |||
run -- intr; | |||
intr -- runbl; | |||
runbl -- run; | |||
run -- kernel; | |||
kernel -- zombie; | |||
kernel -- sleep; | |||
kernel -- runmem; | |||
sleep -- swap; | |||
swap -- runswap; | |||
runswap -- new; | |||
runswap -- runmem; | |||
new -- runmem; | |||
sleep -- runmem; | |||
} | |||
</graphviz> | |||
<mscgen caption="Message sequence chart for example no. 4"> | <mscgen caption="Message sequence chart for example no. 4"> | ||
| Línia 27: | Línia 45: | ||
} | } | ||
</mscgen> | </mscgen> | ||
S'utilitza un sol parell diferencial tan per la recepció com la transmissió. | S'utilitza un sol parell diferencial tan per la recepció com la transmissió. | ||
Revisió del 12:46, 27 jul 2016
Aquest protocol l'utilitzen les màquines mayer relativament recents per comunicar-se amb la unitat de dades. Està basat en el SDLC/HDLC d'IBM tot i que el format de paquet és diferent.
Elèctric
<graphviz renderer="neato" caption="Graph for example no. 2"> graph example2 {
run -- intr; intr -- runbl; runbl -- run; run -- kernel; kernel -- zombie; kernel -- sleep; kernel -- runmem; sleep -- swap; swap -- runswap; runswap -- new; runswap -- runmem; new -- runmem; sleep -- runmem;
} </graphviz>
<mscgen caption="Message sequence chart for example no. 4"> msc {
a,b,c;
a->b [label="ab()"]; b->c [label="bc(TRUE)"]; c=>c [label="process(1)"]; c=>c [label="process(2)"]; ...; c=>c [label="process(n)"]; c=>c [label="process(END)"]; a<<=c [label="callback()"]; --- [label="If more to run", ID="*"]; a->a [label="next()"]; a->c [label="ac()"]; b<-c [label="cb(TRUE)"]; b->b [label="stalled(...)"]; a<-b [label="ab() = FALSE"];
} </mscgen>
S'utilitza un sol parell diferencial tan per la recepció com la transmissió. Els transceptors s'acoplen al la linia de transmissió via un transformador. Amb un Vdiff entre +5V i -5V. La impedància de la línia és de 120 Ohms.
Codificació de bits
S'utilitza una codificació AMI. És a dir:
| Vdiff | Bit |
|---|---|
| +5V o -5V | 0 |
| 0V | 1 |
S'utilitza el mateix bit-stuffing que el HDLC. És a dir: s'inserta un '0' cada cop que es troben 5 '1' seguits. També, al igual que el HDLC s'utilitza els patró de bits '01111110' (7E) per delimitar els paquets i sincronitzar els rellotges del transmisor i el receptor Finalment, el patró de bits '1111111' està prohibit. Si es troba dins d'un paquet es considera error de transmissió.
La velocitat de transmissió és de 1024Kbits/s
Control de flux
El canal és Half-Duplex i el teler controla la direcció de transmissió. La unitat de dades només pot transmetre com a resposta a una peteció i s'ha d'esperar a que la línia quedi inactiva (0V)
Paquets
Els paquets tenen l'estructura:
| Camp | Tamany (bytes) | Descripció |
|---|---|---|
| FLAG | n | Sync-in normalment de 220 a 250 repeticions del patró '01111110' (7E) |
| Dest Addr | 1 | Addreça de desti Maquina=0x01 Unitiat=0x02 |
| Seq No | 1 | Numero de seqüència del paquet del (0x01 al 0xff) |
| Src Addr | 1 | Addreça d'origen |
| Op Code | 1 | Tipus de paquet |
| Data | n | Dades de 0 a n bytes. Sembla que el limit és de 642 bytes en el nostre cas |
| FCS | 2 | Frame Check Sequence. A.k.a. Codi de verificació del paquet. |
| FLAG | n | Sync-out normalment de 30 a 40 repeticions del patró '01111110' (7E) |
Frame Check Sequence
És un CRC amb els paràmetres següents:
- polinomi: x^16+x^12+x^5+1
- xor final:0xffff
- init-val:0x84cf
Protocol
| Comandaments/Respostes | |||
|---|---|---|---|
| OP_CODE | Data | Nom | Descripció |
| 0x00 | - | PING | es respon amb ACK per indicar recepcio correcte |
| 0x01 | - | SC_START | es respon amb ACK si es pot escriure en el disc. En altre cas ERR_ACK (0x80) |
| 0x02 | - | LA_START | es respon amb ACK si es pot llegir el disc. En altre cas ERR_ACK (0x80) |
| 0x03 | - | REQUEST_DATA | Demana següent block de dades |
| 0x04 | dt_len_hi,dt_len_lo,dt0,dt1,...,dtdt_len-1 | DATA_BLK | Block de dades, 0<=dt_len<=0x280 |
| 0x05 | <track_no> | FMT_TRACK | Formateja pista <track_no>=[0..79] |
| 0x06 | - | ACK | Ack pkt |
| 0x80 | - | RESET_COMMS | Error ACK: últim comandament ha fallat |
| 0x81 | - | ABORT | Aborta operació en curs |