FREQUENTLY ASKED QUESTIONS - PROGETTO CRYPxx

Il canale trasmissivo che collega l'SVBS e i TRS è affetto da rumore?
No, potete assumere che il segnale in uscita da SVBS sia riprodotto fedelmente in ingresso a TRS, dunque non avete l'onere di introdurre sistemi di controllo e correzione degli errori.

Quanto deve essere grande il chip da progettare?
Nelle specifiche tecniche del progetto non ci sono vincoli fisici particolari ad esclusione della velocità del clock e del ritardo che è stato assunto per ciascuna porta.

Come sono fatti i 64 bit di ingresso a SVBS?
Si tratta di 64 linee ognuna delle quali trasmette un segnale di tipo C.

Quante chiavi di cifratura ho?
Per ognuno dei 64 canali c'è una chiave di cifratura diversa. Inoltre ogni ricevitore TRS possiede una chiave di messaggio distinta.

Se il messaggio che devo crittografare con la chiave di messaggio ha un numero di bit che non è multiplo di 128 come devo fare?
E' sufficiente aggiungere dei bit fittizi fino a raggiungere una lunghezza che sia multipla di 128.

Può succedere che un TRS diventi fuori uso e venga rimosso dall'elenco presente su SVBS?
Molto probabilmente in questo caso l'SVBS riceverà dall'esterno un messaggio DISABLE relativo al numero di serie da disabilitare. Non è comunque a carico vostro preoccuparsi di questo evento.

E' importante che tutti i messaggi siano criptati?
No, è importante che siano criptati i messaggi che trasmettono nuove chiavi per ciascun canale (nella fattispecie la ENABLE), mentre è facoltativo criptare tutti i messaggi.

Come fa a sapere il sistema SVBS che ho comprato un nuovo decoder TRS?
Molto probabilmente quando un nuovo TRS viene attivato, una serie di comandi ENABLE rivolti al nuovo TRS verranno ricevuti dall'SVBS tramite la linea SVC. Non è comunque a carico vostro preoccuparsi di questo evento.

Entro quando devo consegnare il progetto?
A differenza di come ha detto erroneamente il prof. Palopoli, entro un dei TRE appelli previsti tra Giugno e Luglio 2001.

Quando verrà attribuito il bonus?
Nel corso del terzo appello verrà comunicato il nome dei gruppi che hanno ottenuto il bonus, che andrà a completare il voto parziale (presumibilmente già noto) dei partecipanti.

Per trasmettere un segnale PkK a 64 canali devo elaborare circa 90 milioni di bit e il clock specificato è a 200Mhz. Temo che riusciremo ad elaborare complessivamente non più di un paio di fotogrammi al secondo.
Dato lo scopo didattico del progetto, questo non è importante. In caso di difficoltà siete liberi di pensare in termini di un clock differente, (il ritardo specificato per le porte resta però obbligatoriamente a 5ps). In ogni caso la qualità del progetto verrà misurata in base ai parametri x,y, r i quali sono espressi in colpi di clock.
Ad esempio un progetto con clock = 1 Ghz, con x = 10, y=0, r=0, sarà capace di 1'000'000'000/512*384*7 = circa 750 fotogrammi al secondo, mentre un progetto con x = 6, y=0, r=0, ma con clock a 200Mhz elabora circa 150 fotogrammi al secondo; tuttavia il secondo progetto verrà considerato migliore.
La motivazione che sta dietro a questa scelta risiede nel fatto che vogliamo preferire quei progetti meglio ingegnerizzati rispetto a quelli che puntano a migliorare la velocità semplicemente incrementando la velocità di clock.

Come devo misurare dunque la qualità del mio progetto?
Per i progetti TRS, i parametri x,y,r sono misurati sull'uscita O, e vanno calcolati ipotizzando che il segnale PkK sia idealmente velocissimo (es. minima distanza in colpi di clock tra i pixel, minimo intervallo tra una linea ed un altra, ecc.).
Per i progetti SVBS, i parametri x,y,r sono misurati su un generico ingresso I-n, mentre si deve ipotizzare che il segnale PkK in uscita sulla linea O da produrre sia idealmente velocissimo.

A quanti bit sono le linee I, O, SVC dei quattro chip?
Si tratta di linee a 1 BIT sincrone (il valore cambia potenzialmente ad ogni colpo di clock)

Posso prevedere altre linee che colleghino il trasmettitore al ricevitore?
NO

Posso impostare il progetto programmando un PIC a me noto, oppure usando un processore di architettura x86 opportunamente programmato in assembly?
No, lo scopo di questo progetto è quello di farvi progettare un hardware personalizzato che vi consenta di mettere in pratica le tecniche apprese a lezione.

Dove posso trovare documentazione sui sistemi di pay-tv reali?
Tutto ciò che dovete sapere per realizzare il progetto e dunque superare l'esame è contenuto nelle specifiche a voi note. Il progetto CRYPxx è liberamente ispirato ai sistemi reali ma è comunque alquanto semplificato (per il vostro bene ^__^).

Visto che nei sistemi reali si adotta la compressione per migliorare il frame rate, e si proteggono ulteriormente le chiavi, come verrà valutato il mio progetto se aggiungo ulteriori meccanismi di protezione, o se adotto tecniche di compressione per le immagini?
L'aggiunta di funzioni non espressamente richieste non rappresenta ulteriore elemento di valutazione. Al fine di consentire una equa valutazione dei progetti, è fatto divieto di introdurre caratteristiche non originali e non espressamente richieste.

Cosa succede se il ricevitore inizia a captare il segnale in un punto non sincronizzato?
E' fatto carico al progettista di risolvere il problema della sincronizzazione. Non è importante se si perdono alcuni fotogrammi (o anche messaggi) in fase di sincronizzazione.

Posso prevedere più sottochip nel mio progetto?
Certamente sì. In tal caso il lavoro deve dettagliare i singoli chip, e il modo in cui questi comunicano tra loro.

Posso decidere l'unita di misura della distanza tra un messaggio ed un altro all'interno della stessa raffica?
Si può decidere liberamente questa unità di misura, e il numero massimo di messaggi per ogni raffica.

Che differenza c'è fra i progetti CRYPxT+ e CRYPxT?
Nei progetti CRYPxT, si può assumere che ci sia un'unica raffica di messaggi in corso, mentre i progetti CRYPxT+ devono prevedere la possibilità di un numero ragionevole (almeno 256) di raffiche contemporaneamente attive.

Si può interfacciare un CRYPxT+ con un CRYPxR?
Sì, poichè le caratteristiche aggiuntive di CRYPxT+ non hanno nessun effetto sul protocollo di comunicazione.

Che differenza c'è fra i progetti CRYPxR e CRYPxR-?
Per i progetti CRYPxR- non è richiesta la cifratura dei messaggi, mentre rimane obbligatoria la cifratura dei segnali televisivi.

Si può interfacciare un CRYPxT con un CRYPxR- ?
Sì, una volta concordato il protocollo di comunicazione tra i due, i progettisti CRYPxR- assumeranno che i messaggi viaggino interamente in chiaro. I progettisti CRYPxT dovranno invece individuare una parte del messaggio in chiaro e una parte criptata.

Poichè non sempre sul canale PkK viaggiano dei messaggi, come faccio a inframezzare i messaggi ai segnali televisivi mantenendo un frame rate costante?
Una possibile soluzione è quella di prevedere uno spazio fisso riservato ai messaggi, e trasmettere comunque dei valori fittizi nel caso in cui non ci siano messaggi da inviare.

Si possono inserire dei valori di controllo nel flusso PkK?
E' sicuramente impossibile poter fare a meno di valori di controllo necessari a discriminare ogni parte del flusso PkK.

Come mai il numero di serie S di ciascun TRS è di 128 bit?
In realtà sono necessari solo 16 bit. Potete prevedere di trasmettere solo 16 bit per il numero di serie.

CRYPxT: Come è possibile ricevere contemporaneamente 64 bit da 64 canali in ingresso ed emetterli sulla linea seriale O?
La cosa è evidentemente impossibile se i segnali di ingresso producono 1 bit per ogni colpo di clock (x=1). Come detto si è liberi di rallentare quanto si vuole i segnali di ingresso (aumentando il parametro x). Ciò consente di avere molto più tempo per predisporre il segnale di uscita.

CRYPxR: Se faccio uso di un segnale di controllo per sincronizzare il ricevitore, devo evitare che questo segnale di controllo occorra anche all'interno del segnale relativo a un fotogramma, confondendo così il ricevitore?
Il programmatore può scegliere se progettare i segnali di controllo in 3 modi:

  1. in maniera tale da rendere nulla la possibilità di errori di sincronizzazione.
  2. in maniera tale da avere un sistema con probabilità di errore infinitesima, ma in ogni caso bisogna prevedere il comportamento del processore al verificarsi dell'evento (il processore cessa di funzionare correttamente o ricomincia l'elaborazione dopo un momento di stallo?).
  3. con probabilità di errore consistente, ma il sistema è in grado di recuperare all'errore nell'arco di pochi fotogrammi (non devono essere eseguiti messaggi non voluti, ma è consentito emettere pixel errati sul canale di uscita)

Posso supporre che il trasmettitore ognittanto si spenga e dunque si riceva in input al ricevitore un valore "null"?
No, gli unici simboli accettabili sono 0 e 1. Il processore non è in grado di gestire ulteriori simboli.

CRYPxT: Devo preoccuparmi della sincronizzazione degli input?
No, devi solo preoccuparti della sincronizzazione dell'output, per il tuo ricevitore (il quale deve invece risolvere questo problema). Si assuma che il trasmettitore sia acceso 24 ore su 24 e sia dunque perennemente sincronizzato coi canali di input.

Se metto all'interno del mio chip dei processori con un clock più elevato rispetto al sistema complessivo come verranno valutate le prestazioni del mio sistema?
In tal caso, i tuoi parametri x,y ed r verranno misurati rispetto al clock più elevato presente nel progetto. Ad esempio, se x=10, con clock complessivo a 200Mhz, ma nel progetto si fa uso di un sottoprocessore M a 1Ghz, allora x=50 colpi di clock di M, e questo è il parametro che verrà preso in considerazione.

Cosa succede se il mio protocollo differisce da quello del mio gruppo omologo? Posso cambiare il protocollo in corso d'opera?
Fino al momento della consegna di uno dei due gruppi è possibile rinegoziare il protocollo di comunicazione quante volte si vuole. Siamo orientati a valutare negativamente quelle coppie di gruppi che dovessero presentare un protocollo differente rispetto a quello della parte omologa.

CRYPxR: quanti secondi possono passare prima che il dispositivo si sincronizzi?
Al massimo 4 o 5.

Devo scegliere un progetto con grado di errore 0 in sincronizzazione o un progetto con probabilità di errore molto bassa ma più performante?
E' lasciata libertà ai progettisti di fare e giustificare la scelta tecnica ritenuta più valida.

Se ci sono discrepanze di velocità tra trasmettitore e ricevitore, come ci dobbiamo comportare?
Poichè i due dispositivi rispettano lo stesso protocollo di comunicazione, è sufficiente inserire dei cicli di ritardo nel dispositivo più lento (o, al limite, in entrambi), per cui entrambi i gruppi omologhi possono lavorare indipendentemente, e cercando di dare il meglio, una volta fissato un protocollo comune.

Una porta a 20 ingressi è considerata della stessa complessità di una a 2 ingressi?
Per non vincolare eccessivamente la vostra fantasia, il limite sul numero di transistor del chip è fissato in 5'000'000 di transistor. Ogni porta logica impiega un numero di transistor pari al numero di ingressi (2 ingressi=2 transistor, 20 ingressi=20 transistor). Il limite sul fan-in di ciascuna porta è fissato a 32 ingressi, mentre assumeremo un fan-out massimo possibile di 64.

A quanti bit può essere il bus più grande usato nel progetto?
Il limite massimo di ampiezza per un bus è fissato in 128 bit. Sono consentite connessioni punto a punto fino a 512 bit in parallelo.

Ma x fa riferimento a bit per colpo di clock oppure ai bit per colpo di clock?
x = numero di colpi di clock necessari a trasmettere 1 bit. L'errore sul testo del progetto è stato corretto.

Quanta RAM posso utilizzare?
La RAM non rientra nel computo complessivo di 5 milioni di transistor. I ricevitori possono usare fino a 8Mbyte circa, mentre i trasmettitori fino a 128Mbyte.

La dimensione complessiva del chip sarà fattore di valutazione?
Oltre alle prestazioni in termini di velocità, è possibile scegliere di puntare alla compattezza del proprio chip, e quindi dichiarare questo aspetto nella lista dei 3 (o più) pregi che deve essere presentata.

Quanto è veloce la RAM a disposizione?
Si può supporre di avere a disposizione una RAM idealmente veloce, dunque i valori letti/scritti possono essere considerati tali a partire dal colpo di clock successivo all'operazione di lettura/scrittura
.

Quanti messaggi posso mandare potenzialmente al secondo?
L'unico vincolo da seguire è che la ECM può durare al massimo 12 ore, dunque è necessaria una cadenza adeguata per i messaggi.

Se la parte crittografabile di un messaggio è lunga 130 bit, devo comunque aggiungere ai 2 bit in più altri 126 bit fittizi?
Si.

Quando il mio ricevitore si spegne perdo tutte le informazioni circa i valori delle chiavi, ecc?
Potete assumere che alcune delle vostre RAM siano non volatili.

Devo esplicitamente progettare il circuito di refresh delle RAM dinamiche?
No.

Che vuol dire connessione "punto a punto"?
Connessioni che trasportano un segnale da un punto ad un altro del circuito, anzichè distribuirlo. I bus NON sono connessioni punto a punto. Due registri di cui l'uscita del primo finisce sull'entrata del secondo, sono in connessione punto a punto.

Insomma, quali sono questi componenti standard di cui non devo dare dettagli implementativi?
Registri contatori modulo 2^n (vanno altrimenti progettati se il valore non è potenza di 2), selettori, deselettori, ALU, coder, decoder, registri a shift con ingresso parallelo e uscita seriale, a incremento/decremento.

Che vuol dire di preciso "la ECM deve durare al massimo 12 ore"?
In 12 ore il sistema deve avere inviato il primo messaggio della raffica a ciascun ricevitore. Non c'è invece alcun limite per le sequenze di messaggi successive.

Ma quanto grande lo posso fare l'MBR delle mie RAM?
Considerati i limiti imposti sulla dimensione dei bus, 512bit se l'MBR è collegato con connessione dedicata, altrimenti 128 se l'MBR è collegato su un bus?

Posso fare un MBR da 112 bit o altri numeri esoterici?
Ci siamo da sempre posti nell'ottica di progettare un chip dedicato, senza fare uso di componenti discreti dunque, assumete di poter avere MBR con quanti bit volete (anche se non potenza di 2).

Come sono scambiate le linee per i progetti CRYP1x?
Sono invertite nell'ordine, ma NON SONO scambiate pixel per pixel. Esempio: se devo trasmettere prima la linea 3 e poi la 1 avrò la sequenza: <pixel 0 linea 3><pixel 1 linea 3><pixel 2 linea 3>...<pixel 511 linea 3><pixel 0 linea 1>.....

Mi devo preoccupare se uso poco RTL? (**NEW**)
Siete liberi di usare qualsiasi tecnica, ponendo bene attenzione al fatto che ci sono cose che sono molto più efficienti se fatte in RTL, ma ci sono cose per le quali l'uso del solo RTL diventa improponibile. Normalmente lo sviluppo di una parte operativa ad hoc, consente di poter programmare codice RTL molto succinto (o del tutto assente). In pratica la complessità si sposta sulla parte operativa anzichè sulla parte controllo o viceversa a seconda delle vostre scelte progettuali.

Sono un ricevitore. Devo mettere codici di sincronizzazione o qualsiasi altro segnale di controllo sull'uscita?
Considerate le sofferenze da voi patite nel sincronizzarvi con l'ingresso, siete esentati.

Posso assumere che il MAR sia un registro ad incremento?
Si. Potete dotarlo di tutte le funzioni speciali (eventualmente da progettare) che volete.

Bisogna disegnare appositamente le linee di clock negli schemi?
No, potete considerarle come implicitamente presenti.

Mi devo preoccupare se la mia macchina microprogrammata non ha l'IR?
NO! Come ricorderete abbiamo due modelli di macchina microprogrammata. La versione a programma memorizzato ha in ingresso alla ROM di controllo il registro IR (o meglio quello spezzone di IR contenente il codice operativo), tramite il quale si sceglie quale istruzione assembly eseguire; tuttavia sicuramente ricorderete la versione a programma cablato, dove in ingresso non c'è NESSUN IR, ma solo i segnali beta e il registro di stato. In questo caso la macchina esegue continuamente un unico e solo programma main. La scelta tra i due modelli è libera a seconda delle necessità.

Devo disegnare esplicitamente le linee di clock e il circuito di reset?
Potete considerare entrambi implicitamente presenti, a meno che questi non abbiano qualcosa di speciale da voi inventato (esempio: una linea di reset nella quale è importante l'ordine di azzeramento dei registri, un circuito con clock a velocità multiple).

Che succede se pongo una domanda già presente nelle FAQ?
Sarai sottoposto a fustigazione immediata.

Quant'è la dimensione massima del MAR?
La dimensione è fissata compatibilmente con i limiti di memoria imposti. Diminuirà di un bit ogni volta che qualcuno verrà a chiedermelo.

Come sono le modalità di esame?
Discussione progetto individuale, breve orale, esercizio su assembly x86 della durata di circa 1 ora. Si possono usare gli appunti durante l'esecuzione dell'esercizio.

Qual'è l'unità di misura di D?
Una qualsiasi unità di tempo che vi faccia comodo (fotogramma, pixel, linea, secondi, minuti, ore, nanosecondi, furlong al metro quadro).

QUALI SONO LE DIFFERENZE TRA le VERSIONE xT e xT+?
Le versioni xT possono assumere che contemporaneamente ci possa essere una sola raffica di messaggi in corso, e quindi non devono essere bufferizzati eventuali messaggi in arrivo durante la raffica.