• Non ci sono risultati.

Capitolo VI FPSLIC AT94K40 e Moduli di Rete IIM7010A

6.4 Software FPSLIC – Configurazione

6.4.3 Hardware Accessorio

Il modulo hardware accessorio svolge essenzialmente due funzioni: dividere la frequenza di clock in ingresso a 48MHz per ottenere quelle a 24MHz e a 12MHz e gestire i segnali ENDIAN e BUFFULL. A causa dei limitati I/O del dispositivo è necessario multiplexare in un unico pin il segnale ENDIAN/BUFFULL (Figura 6.11). ENDIAN si impiega soltanto nel power-up mentre BUFFULL in tutte le restanti fasi.

In fase di reset il microprocessore forza il vcalore ENDIAN e le due FPSLIC Master lo campionano (input). Una volta disattivato il reset le due FPSLIC utilizzano tale segnale come BUFFULL invertendone la direzione (output). Se anche nella seconda FPSLIC Master diventasse di output si avrebbe un conflitto elettrico sulla linea in quanto due sorgenti andrebbero a pilotare lo stesso segnale, ecco perché la seconda FPSLIC Master continua a tenerlo di input segnalando l’over-flow del buffer attraverso un altro pin alla prima FPSLIC Master che diventa l’unica in grado di pilotare la linea.

L’architettura per la generazione del segnale ENDIAN/BUFFULL è riportata in Figura 6.12. All’interno del modulo hardware accessorio è presente un divisore di frequenza per generare frequenze di 12MHz e 24MHz a partire da un clock a 48MHz. Al di sotto del divisore di frequenza si nota la presenza di un fip-flop di tipo D che campiona il valore di ENDIAN durante la fase di reset.

Durante la fase di reset il segnale DIR disabilita il driver ed evita i conflitti elettrici sulla linea. Il microcontrollore all’avvio porta a livello logico alto il segnale _RESET, corrispondente al reset della macchina a stati del FPSLIC Master (RESET MS MASTER sulla scheda), e all’istruzione successiva (250ns dopo) cambia direzione al pin ENDIAN/BUFFULL.

Al termine del reset un contatore a 4 bit incrementato da CLK24 che quando arriva a 15 (15×CLK24 = 625ns) attiva DIR passando il comando della linea alla prima FPSLIC Master. La linea ENDIAN/BUFFULL resta quindi flottante per un tempo pari a 375ns, sufficiente per evitare conflitti elettrici.

I buffer presenti sono in totale quattro, uno per la parte reale ed uno per la parte immaginaria di ognuno dei due ingressi e quindi mappati due per ogni FPSLIC. Ogni buffer ha un segnale di buffer-full che tramite l’OR logico sarà collegato al microprocessore. E’ infatti sufficiente l’over- flow di uno di essi per segnalare la situazione di anomalia e di perdita dei dati.

6.4.4 Interfaccia IIM7010A

Il modulo interfaccia IM7010A svolge la funzione di instaurare la connessione di rete con protocollo IEEE 802.3, programmando e controllando il modulo di rete IIM7010A, e di inviare i dati memorizzati al modulo buffer & controller. La comunicazione con II7010A avviene attraverso la MCU Interface del chip WIZnet W3100A che si occupa della gestione del protocollo a livello più alto. Tra le varie modalità di trasmissione sono state esaminate e approfondite principalmente quelle che non fanno uso del protocollo di hand-shake (tipico della connessione TCP):

• IP layer RAW Mode,

• MAC layer RAW Mode.

Si scegile di non utilizzare un protocollo hand-shake perchè ciò comporterebbe che ogni trasmissione fosse seguita da una risposta di acknoledge e quindi l’attesa di tale risposta non permetterebbe al sistema di raggiungere la velocità media di 80Mbps imposta dalle specifiche. Le due modalità differiscono tra loro nella presenza o meno dell’intestazione di pacchetto effettuata dal chip W3100A.

La MCU Interface ha tre diverse modalità di trasmissione selezionabili attraverso i tre pin di input M0, M1 ed M2:

• Clocked Mode,

• External Clocked Mode,

• Non Clocked Mode.

In modalità Clocked Mode la trasmissione è sincronizzata con l’oscillatore on-board dell’IIM7010A a 25MHz e raggiunge una velocità di 28Mbps.

In modalità External Mode, con un oscillatore esterno da 66MHz, si raggiunge una velocità di 40Mbps.

In modalità Non Clocked Mode non è previsto l’uso di clock ed il campionamento dei dati avviene in corrispondenza dei fronti di _CS e _WR permettendo di non essere vincolati alla sincronizzazione tra i vari circuiti.

Le figure 6.13 e 6.14 mostrano i diagrammi temporali dei cicli di lettura e scrittura del modulo di rete in modalità Non Clocked Mode, e in Tabella 6.1 sono riportati i valori caratteristici delle tempistiche da rispettare.

Figura 6.14: Ciclo di Scrittura Non Clocked Mode

Da prove relative alla scrittura di un pacchetto di dati sul buffer dell’IIM7010A e alla sua successiva trasmissione, si è verificato che, durante la fase di invio dati il dispositivo lavora a 100Mbps, durante la fase di scrittura sul buffer (più lunga di quella di trasmissione) si ha una perdita di tempo che fa scendere la velocità media sotto i 50Mbps.

Si ovvia al problema parallelizzando le due fasi, ovvero si unisce al trasferimento non clocked la contemporanea scrittura dei dati sul buffer, instaurando una sorta di pipeline. Per la gestione del buffer (Figura 6.15) si utilizzano due puntatori: C0_TW_PR (Stop Pointer) incrementato dal componente sulla MCU Interface durante la scrittura, C0_TR_PR (Start Pointer) incrementato internamente durante la lettura.

Figura 6.15: Struttura del Buffer IIM7010A

La prima colonna rappresenta il buffer vuoto con Stop Pointer e Start Pointer che puntano alla prima locazione. Nella seconda colonna è rappresentato il caso in cui nel buffer sono presenti 512byte da inviare (200h) e si nota come lo Stop Pointer punti all’ultima locazione contenente i dati, mentre lo Start Pointer punti alla locazione corrente di lettura. La terza ed ultima colonna rappresenta l’istante in cui il pacchetto è stato inviato ed i due puntatori si sono allineati alla fine del pacchetto.

Questo è il caso in cui scrittura e lettura del pacchetto sul buffer avvengano in due fasi distinte; per poter scrivere un pacchetto mentre si sta leggendo il precedente occorre far uso di due Stop Pointer e di una sequenza di inizializzazione tra l’invio di due pacchetti in modo da programmare lo Start Pointer sul nuovo indirizzo di inizio pacchetto. Con tale modifica si raggiunge la velocità media di trasmissione di circa 80Mbps.

Durante la fase di scrittura dei dati sul modulo di rete occorre generare solo la sequenza opportuna dei segnali _CS e _WR (tempo impiegato 4 periodi). Essendo tale operazione di semplice gestione, la si riesce a realizzare utilizzando una macchina a stati a 48MHz (CLK48) dimezzando quindi i tempi di comunicazione sulla MCU Interface e raggiungendo 98Mbps di velocità media globale.

6.5 Struttura Finale della Scheda

La struttura finale della scheda prevede quattro FPSLIC e cinque moduli di rete, quattro in trasmissione ed uno in ricezione.

La scelta di prevedere quattro AT94K40 è stata progressiva. Inizialmente se ne era presunta una per entrambe i canali, ma per problemi di occupazione d’area in termini di numero di gate disponibili e di numero di connessioni si è passati ad una soluzione caratterizzata da una FPSLIC Master ed una FPSLIC Slave con conseguente raddoppio d’area disponibile (comunque insufficiente), accompagnato però da un significativo aumento delle linee di connessione che in questo modo devono includere anche i collegamenti tra i due componenti. Così facendo non solo non si risolvono i problemi d’area, ma si aggiunge l’inevitabile inconveniente del numero di pin di I/O insufficiente.

Successivamente si è pensato di prevedere una FPSLIC Master a 208 pin, mentre fino ad ora si era sempre ragionato su quelle a 144, e due FPSLIC Slave a 144; questa soluzione, pur implementabile, è stata tralasciata poiché non lasciava tanto spazio ad eventuali sviluppi futuri.

Di conseguenza si è giunti alla struttura finale con due FPSLIC Master e due FPSLIC Slave da 144 pin. La divisione del software sulla piattaforma hardware è mostrata in Figura 6.8.

Il bus dati che connette le uscite dell’AD6634 con gli ingressi delle FPSLIC Master può essere “spezzabile” per permettere testing separati dei vari blocchi o per un eventuale adattamento dei segnali.

Facendo riferimento allo schema elettrico completo si esaminano di seguito tutte le connessioni. Una coppia Master-Slave controlla un singolo canale quindi le uscite PA sono connesse attraverso i jumper PCB agli ingressi della Master siglata U18 (PA[0:15]→PA_U[0:15]), le uscite PB sono invece connesse, sempre attraverso i jumper PCB, alla Master siglata U16 (PB[0:15]→PB_U[0:15]).

Ogni canale possiede i rispettivi segnali di controllo PxREQ e PxACK, mentre PCLK è comune ed eventualmente può essere ritardato per la sincronizzazione con una rete di Ex-Or come in Figura 5.12. Le FPSLIC Master ricevono il clock a 48MHz (CLOCK FPSLICM 48) e forniscono i due clock a 48MHz e a 24MHz per le Slave (CLOCK FPSLICS1,2 48 e CLOCK FPSLICS1,2 24). Inoltre ricevono il reset dalla macchina a stati per le Master (RESET MS MASTER) ed il segnale di sincronismo (PPS).

I canali di comunicazione con le rispettive Slave sono AI[0:9], AQ[0:9], BI[0:9], BQ[0:9], dove 8 dei 10bit sono di dato e 2 di controllo (in Figura 6.10 indicati come DATA[7:0], ACK e REQ).

Ogni Slave comanda due moduli IIM7010A, in particolare la Slave siglata U25 gestisce il modulo A (U24) tramite i segnali DATA A[0..7], CONTR A[0..3], ADDR A[0..14] ed il modulo B (U26) tramite DATA B[0..7], CONTR B[0..3], ADDR B[0..14]; la seconda Slave (U30) comanda i restanti due moduli C (U28) e D (U31) con i segnali DATA C[0..7], CONTR C[0..3], ADDR C[0..14], DATA D[0..7], CONTR D[0..3], ADDR D[0..14].

I reset dei moduli sono gestiti dal microcontrollore.

Ogni EEPROM siglata AT17LV010 (1Mbit), U15 U20 U23 e U27 sullo schematico, comunica con la rispettiva FPSLIC attraverso un protocollo seriale che permette di

scaricare i dati dalla memoria all’interno della FPSLIC ogni volta che è resettata la parte FPGA del dispositivo.

La EEPROM presenta un pin SER_EN# (Figura 6.16) che quando diviene attivo basso mantiene in reset la FPGA abilitando la propria scrittura. Terminata la scrittura della memoria viene abilitato il pin OE# che autorizza la FPGA a scaricarsi i dati per la propria programmazione. Oltre ai segnali esaminati sono state predisposte delle connessioni supplementari per eventuali sviluppi futuri:

Ø nelle Master entrano i segnali OVR# dei rispettivi AD6645 (OVR_A,B), Ø 3 linee per ogni coppia che connettono i pin di I/O della Master con i pin di

I/O dalla Slave (RET 10,11,12 e RET 20,21,22) abilitate tramite i jumper PCB (JP31,32,35,36),

Ø sdoppiamento delle linee PPS e RESET MS SLAVE sulle Slave selezionabili attraverso dei jumper PCB (JP29,30,33,34),

Ø 16 linee di connessione tra le due MASTER accessibili esternamente mediante due connettori SMD CN9 e CN10 per eventuali comunicazioni o per eventuali testing,

Ø 6 linee di test dal microcontrollore alla parte AVR delle FPSLIC, 2 per ogni Slave ed una per ogni Master (TEST10,20,30,31,40,41),

Ø la FPSLIC1 (U16) può controllare i pin di sincronismo dell’AD6634 (SYNC0,1,2,3),

Ø il clock dell’AD6634 è fornito in ingresso alle due Master (CLK 6634).

CAPITOLO VII

Microcontrollore AT90S8515

e

IIM7010A in Ricezione

Spiegato il funzionamento della parte inerente l’acquisizione dei segnali, la loro gestione trattamento e la trasmissione dei dati digitali in pacchetti Ethernet 802.3, è necessario considerare gli aspetti inerenti la ricezione dei comandi dalla postazione remota e alla procedura di inizializzazione della scheda. A tale scopo viene inserito nel circuito stampato un microcontrollore (AT90S8515) ed un ulteriore modulo IIM7010A.

7.1 Microcontrollore AT90S8515

La presenza di un microcontrollore supplementare esterno si rende indispensabile per il fatto che il mocrocontrollore integrato nella FPSLIC non possiede abbastanza pin di I/O. I pin di I/O della parte AVR della FPSLIC sono solo 16 (8 per la PORTD e 8 per la PORTE), mentre per svolgere tutte le funzioni ne servono 26:

• 15 per la gestione della Microport dell’AD6634,

• + 8 per la gestione dei reset dei vari componenti,

• + 2 per la comunicazone I2C col modulo di ricezione,

Ecco la necessità di utilizzare un microprocessore supplementare con un numero di pin sufficiente a controllare tutti i segnali. Inoltre sarà possibile utilizzare le linee rimaste libere per testing generici, realizzati attraverso la comunicazione tra micro e parte AVR delle FPSLIC.

La scelta del microprocessore si è orientata verso il modello AT90S8515 prodotto dall’Atmel che, con i suoi 32 pin di I/O garantisce il controllo di tutti i segnali sopra menzionati.

AT90S8515 ha un’architettura RISC, può funzionare a 4MHz o a 8MHz a seconda dell’oscillatore che gli viene collegato e può essere programmato in codice C o assembler con un protocollo seriale (MISO, MOSI, SCK, RESET# sono i segnali utilizzati) attraverso un connettore “vasca”. Dispone di una memoria Flash interna a 8KB, una SRAM da 512 byte e di una EEPROM anch’essa da 512 byte. Lo schema a blocchi di questo stadio è mostrato in Figura 7.1.

7.2 Trasmissione dei Comandi dalla Postazione Centrale e Comunicazione tra AT90S8515↔IIM7010A

Le specifiche di progetto richiedono la possibilità di poter variare la configurazione dell’AD6634 in qualunque momento. La soluzione adottata si basa sull’inserimento di un quinto modulo di rete IIM7010A usato per la ricezione dei pacchetti di dati contenenti i comandi inviati dalla postazione centrale remota. I comandi ricevuti dal modulo della Wiznet sono trasmessi al micro che gestisce la riprogrammazione dell’AD6634.

La comunicazione tra modulo di rete e AT90S8515 avviene su standard I2C con solo due linee di I/O (PD0 e PD1 sullo schema elettrico). Si tratta di uno standard sostenuto da due linee bidirezionali (SCL: segnale di clock e SDA: segnale di dato) che hanno particolari specifiche per la trasmissione dei dati e per il riconoscimento dell’istante di inizio e fine trasmissione. Le due linee sono in pull-up con delle resistenze da 4.7KΩ, in modo che quando il bus è libero i due segnali siano attivi alti. La velocità raggiunta da questo tipo di trasmissione seriale è di 100Kbit/s nello

standard mode, fino a 400Kbit/s in fast mode e fino a 3.4Mbit/s in high speed mode.

Tali velocità sono sufficienti per gestire i segnali di comando e controllo della scheda in quanto viaggiano a velocità decisamente inferiori rispetto a quelle dei dati.

Essendo il bus bidirezionale, qualunque componente connesso vi può diventare master o slave; in particolare diventa dispositivo master quello che inizia una procedura di start. Sulla scheda AT90S8515 fungerà in linea di massima da ricevitore mentre il modulo IIM7010A da trasmettitore.

Nella Figura 7.2 vengono mostrate le condizioni delle forme d’onda richieste ai due segnali per la trasmissione dei bit, mentre in Figura 7.3 sono mostrate le condizioni di start e stop.

Il trasferimento dei dati si compie a pacchetti di 8 bit dopo i quali il dispositivo slave manda un acknowledge al master in modo da segnalare che è in ascolto ed ha ricevuto correttamente gli 8 bit (Figura 7.4).

Figura 7.2: Trasferimento dei bit sul bus in standard I2C

Figura 7.3: Condizioni di Start e di Stop

Quando il master segnala che si opera una lettura, esso diventa ricevitore (quindi lo slave sarà il trasmettitore).

L’indirizzo trasmesso subito dopo lo start ha lo scopo di selezionare il dispositivo con il quale il master vuole comunicare. Ogni dispositivo possiede un proprio indirizzo caratteristico ottenuto connettendo i pin di indirizzamento all’alimentazione o alla massa in funzione dell’indirizzo che gli si vuole assegnare.

Il comando ricevuto dal modulo di rete in protocollo Ethernet per riprogrammare l’AD6634, consiste nel file di configurazione prodotto dal tool di Analog Device che contiene i settaggi di tutti i registri con i relativi indirizzamenti.

Tale file (che una volta tradotto in esadecimale ha un’occupazione indicativa di qualche decina di Kbyte) non può essere tutto memorizzato all’interno del micro (memoria disponibile 8Kbyte) quindi, attraverso I2C il micro riceve i byte di programmazione per il registro “x” dell’AD6634, li memorizza e poi li passa al componente mediante la MICROPORT. Una volta terminata questa procedura il micro è pronto a ricevere altri byte di programmazione e quindi effettuare la scrittura di un altero registro dell’AD6634.

Se si volesse leggere la configurazione interna dell’AD6634 si dovrebbe operare in modo duale, ovvero, sempre attraverso la MICROPORT accedere con il micro al registro dell’ADS6634, leggerne il contenuto e trasmetterlo su I2C al modulo di rete che attraverso pacchetti Ethernet lo invierà alla stanza di controllo.

Nel micro dovranno essere realizzate le funzioni basilari microwrite e microread che implementano i cicli di scrittura e di lettura dei registri interni del DDC. Tali funzioni saranno poi richiamate dal software in modo opportuno tutte le volte che si intenderà attuare un accesso ai registri dell’AD6634.

La MICROPORT è connessa ad una strip esterna 2×11 in modo da poter visualizzare i segnali in fase di testing. Inoltre rende possibile la programmazione dell’AD6634 anche da un dispositivo esterno.

Dei jumper “a saldare” permettono di isolare i bus (DM[0..7] e CONTRM[0..6] sullo schema elettrico) in modo da testare per gradi la scheda in varie sezioni.

7.3 Reset Globale della Scheda

Il reset viene fornito alla scheda in due diversi casi: mediante l’apposito pulsante RESET_HW o a causa dello scendere di una delle alimentazioni al di sotto del 90% del proprio valore nominale (POWER OFF).

Il pulsante di reset, come da specifica, è posto sul front-plane ed il suo azionamento provoca anche la riprogrammazione delle FPGA all’interno delle FPSLIC.

Nel secondo caso, il reset è ottenuto con l’ausilio di un componente prodotto dalla Dallas Semiconductor e distribuito anche da Maxim con la sigla DS1831B (Figura 7.5) in grado di monitorare le alimentazioni e fornire un impulso qualora una di loro scendesse al di sotto di una certa soglia.

Figura 7.5: Descrizione dei pin dell’integrato DS1831B

I pin IN5V e IN3.3V sono gli ingressi ai quali sono connesse le alimentazioni 5V e 3.3V in modo che possano essere monitorate e che quindi, quando scendono al di sotto di un certo livello rispetto al valore nominale, i segnali RST#5V o RST#3.3V siano attivi bassi. Il livello al di sotto del quale deve essere emesso l’impulso su RST#n è determinato da come è connesso il pin TOLn:

TOL5V = 5V e VCC ≤ 4.75V ⇒ RST#5V

TOL5V = GND e VCC ≤ 4.5V ⇒ RST#5V

TOL3.3V = 3.3V e VCC ≤ 3.14V ⇒ RST#3.3V TOL3.3V = GND e VCC ≤ 2.97V ⇒ RST#3.3V

Sulla scheda è stata impostata una soglia del 10% di VCC. I segnali TDn servono ad impostare il Reset Time Delay; sulla scheda sono stati connessi entrambi a GND permettendo un ritardo pari a 16ms nel suo valore tipico (Tabella 7.1).

Tabella 7.1: Reset Time-Delay

In Figura 7.6 si riporta un tipico esempio di utilizzo del DS1831B, molto simile all’implementazione realizzata sulla scheda, in cui oltre a monitorare le due alimentazioni 3.3V e 5V, si controllano anche due tensioni generiche VSENSE1 e VSENSE2.

Si può vedere che le due tensioni aggiuntive sono controllate attraverso il sistema IN1,2 → NMI1,2# → PBRST#5V nel seguente modo: gli ingressi IN1 e IN2 hanno un comparatore interno con riferimento 1.25V per cui se la tensione su tali ingressi scende al di sotto di questo valore forniscono un Not Maskable Interrupt sulle rispettive uscite NMI1#, NMI2# (Figura 7.7).

Figura 7.6: Esempio di applicazione tipica per DS1831B

Figura 7.7: Diagramma temporale Not Maskable Interrupt

Il PBRST#5V fornisce l’impulso su RST#5V quando il pulsante che gli si è connesso viene premuto oppure, se gli è collegato NMI#, quando il segnale in questione diventa attivo basso. E’ in questo modo possibile controllare qualunque tensione impostando una rete di resistenze calibrate che forniscono 1.25V nel punto medio del partitore, in corrispondenza della condizione di “alimentazione caduta”.

Sulla scheda oltre alla 3.3V e alla 5V è presente un’ulteriore alimentazione a 2.5V. Le prime due sono controllate direttamente dai pin del DS1831B, mentre per l’ultima si utilizza IN1 → NMI1 → PBRST#5V nella procedura sopra descritta.

VSENSE1 assume il valore di 2.5V (VSENSE2 è collegato a massa) ed il partitore resistivo dovrà essere dimensionato in maniera da fare scattare il reset quando tale alimentazione scenderà sotto soglia del 10% per cui:

VTP = 2.5 – (0.1×2.5) = 2.25V; VTP ; 25 . 2 25 . 1 ; 25 . 1 2 1 2 2 1 2 = + = + R R R R R R R2 = 100KΩ ⇒ R1 = 80KΩ

In questo modo il segnale di reset globale viene abilitato ogni qual volta si verifichi una delle seguenti quattro condizioni:

Ø l’alimentazione da 5V scende al di sotto di 4.5V; Ø l’alimentazione da 3.3V scende al di sotto di 2.97V; Ø l’alimentazione da 2.5V scende al di sotto dei 2.25V; Ø il pulsante di RESET della scheda viene premuto.

Il pin RST# del DS1831B, che come abbiamo visto fornisce l’impulso di reset globale, è connesso al pin di RESET# dell’AT90S8515 e quindi il compito di gestire questa condizione in maniera opportuna viene affidato ad una procedura software interna al microprocessore.

CAPITOLO VIII

TEST ESEGUITI SULLA BOARD

8.1 Testing AD6645-AD6634

I primi testing effettuati sono stati quelli realizzati con l’ausilio delle Evaluation Board, prodotte da Analog Device, sul convertitore analogico digitale AD6645 e sull’AD6634 allo scopo di individuare una configurazione implementabile sul DDC che garantisse le migliori prestazioni in termini di larghezza di banda, elevata

Documenti correlati