Documente Academic
Documente Profesional
Documente Cultură
error DUT
reset
registers Out1 I/F Channel Out 1
clock
MAXPKTSIZE
ROUTER_EN
Host
Host I/F Out2 I/F Channel Out 2
8 8
in_data data_0
in_data_vld data_vld_0
In I/F Out0 I/F
in_suspend suspend_0
reset
DUT 8
data_1
data_vld_1
clock registers Out1 I/F
suspend_1
MAXPKTSIZE
ROUTER_EN
8 8
hdata data_2
8
haddr data_vld_2
Out2 I/F
hen
Host I/F
suspend_2
hwr_rd
error
Pachetul de date
Un pachet este o secven de octei dintre care primul este un antet (header), urmtorii
sunt octei de date(payload) iar ultimul octet conine paritatea calculat pentru antet i date
(parity).
YAPP Packet Structure
7 6 5 4 3 2 1 0
length addr byte 0 HEADER
payload[0] byte 1
payload[1]
PAYLOAD
payload[n-1] byte N
parity byte N+1 PARITY
Antetul const dintr-un cmp de adres (addr.) pe 2 bii i un cmp de lungime (length) 6
bii. Cmpul de adres este utilizat pentru a se determina ctre ce canal de ieire ar trebui
comutat pachetul; adresa 3 este ilegal. Cmpul lungime specific numrul de octei de date
(payload) ce vor urma n pachet. Un pachet poate avea payload de dimensiune cuprins ntre un
octet(minim) i 63 octei(maxim). Cmpul de paritate este de un octet, paritate impar bit cu bit,
calculat pentru octeii de antet i de date ai pachetului.
Protocolul magistralei de date (referitor la canalul de intrare)
Toate semnalele de intrare sunt active n 1 logic i trebuiesc s fie conduse pe frontul
negativ al semnalului de clock. Semnalul in_data_vld trebuie s fie meninut n 1 logic pe acelai
clock atunci cnd primul octet din pachet (octetul de antet) este plasat pe in_data. Fiecare octet
ulterior de date trebuie s fie plasat pe intrarea de date la fiecare front negativ al semnalului de
clock.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
clock
delay
data_vld
data H D D D P H D D D P
suspend
Figura 0.4: Secven pentru transmiterea a dou pachete de date: fr suspend (stnga) i cu suspend (dreapta)
Dup ce ultimul octet de date a fost transmis, la frontul negativ al semnalului de clock,
semnalul in_data_vld trebuie s mai fie trecut n 0 logic i trebuie plasat pe intrarea de date
octetul de paritate.
Datele de intrare nu se pot schimba cnd semnalul in_suspend este activ (indicnd FIFO
plin). Semnalul error este 1 logic atunci cnd a fost transmis un pachet cu o paritate greit i
este meninut asertat ntre 1 i 10 cicli.
Protocolul magistralei de date (referitor la un canal de ieire)
Toate porturile de ieire sunt active n 1 logic i trebuiesc urmrite pe frontul negativ al
semnalului de clock. Ruterul susine n 1 logic semnalul data_vld_x cnd sunt date valide pe
magistrala de ieire data_x. Semnalul de intrare suspend_x trebuie atunci s treac n 0 logic pe
frontul negativ al semnalului de clock, n care data este citit de la magistrala data_x. Att timp
ct semnalul suspend_x rmne inactiv, pe magistrala data_x este plasat un nou octet din pachet
la fiecare front pozitiv al semnalului de clock.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
clock
in_data_vld
in_data H D D D P H D D D P
data_vld_0
Response
delay
suspend_0
data_0 H D D D P
Figura 0.5: Secven pentru transmiterea unui pachet de date: legtura intrare-ieire
Setul de regitri
DUV conine doi regitri interni care memoreaz informaii despre configuraie:
MAXPKTSIZE 6 bii adresa 0 R/W reseteaz valoarea lui h3F
ROUTER_EN 1 bit adresa 1 R/W reseteaz valoarea lui 1
Registrii
7 6 5 4 3 2 1 0
MAXPKTSIZE 0
adresa
ROUTER_EN 1
Dac lungimea pachetului de intrare este mai mare dect valoarea registrului
MAXPKTSIZE, YAPPRouter abandoneaz ntreg pachetul i semnalul de eroare este asertat.
Registrul ROUTER_EN permite dezactivarea funciei de comutare de pachete a ruterului.
Activarea sau dezactivarea funcionrii ruterul n timpul transmisiei de pachete va conduce la un
comportament imprevizibil.
Protocolul magistralei de configurare (Host I/F)
Toate semnalele sunt active n 1 logic i sunt conduse pe frontul negativ al clock-ului.
Interfaa ofer acces sincronic citire/scriere pentru a programa ruterul prin operaii de citire
respectiv scriere la registrul specificat.
O operaie de scriere este cu durata unui ciclu de clock astfel:
hwr_rd i hen trebuie s fie 1 i vor fi meninute cel puin un ciclu de clock;
valoarea dorit a fi scris n registru este plasat pe hdata iar adresa registrului pe
haddr la frontul negativ al semnalului de colck. Operaia se realizeaza pe frontul
front pozitiv al semnalului de clock;
hen este pus n 0 n urmtorul ciclu de clock.
O operaie de citire este cu durata a doi cicli de clock astfel:
hwr_rd trebuie s fie 0 i hen trebuie s fie 1 si vor fi meninute cel puin doi cicli
de clock.
n primul ciclu de clock, adresa registrului de la care se citete este plasat pe
haddr la frontul negativ al semnalului de colck i este eantionat la frontul pozitiv
al semnalului de clock.
n al 2-lea ciclu de clock, pe linia hdata este plasat valoarea din registru;
hen este apoi pus n 0 dup terminarea ciclului 2.
Linia hdata este de tip input-output n interfa, ea putnd fi controlat de ctre DUV(n
operaiile de citire), din exteriorul DUV(n operaiile de scriere) sau trecut ntr-o stare de nalt
impedan.
1 2 3 4 5 6 7 8
clock
hen
hwr_rd
hdata D D
haddr A A
A = Address, D = Data