convertitore analogico / digitale vin ~ v t1 v t2 v t4 v t3 v t6 v ref v t7 v t5 0 000 001 010 011...
TRANSCRIPT
Convertitore Analogico / Digitale
Vin ~VT1 VT2 VT4VT3 VT6 VREFVT7VT50
000
001
010
011
100
101
110
111
LSB= VREF/2N
Output
N bit-ADCVin ~
b0
b1
bN
VREF
ENCODE
b(N:0)
ENCODE
40 ns
LSB = risoluzione del convertitore < 0.1 %
risoluzione < (VREF /100)*0.1 LSB < VREF/1000
VREF/2N < VREF/1000 2N > 1000 N >= 10
Media Mobile ECOSCAN
Media mobile su 4 campioni => M(K) = i=0..3S(K+i)/4
Valore max. possibile della somma campioni = 1023(10 bit)*4 = 4092rappresentabile con 12 bit (e’ la dimensione dei sommatori)
Il risultato M(i) e’ ancora a 10 bit (i bit MSB della somma dei campioni)
M(0) = S(0) + S(1) + S(2) + S(3)] /4M(1) = S(1) + S(2) + S(3) + S(4)] /4M(2) = S(1) + S(2) + S(3) + S(4)] /4............................................................................................................................M(65535) = [S(65535) + S(65536) + S(65537) + S(65538)]/4
A(3:0)
B(3:0)
Cin Cout
4 bit addertpd =10 ns
A(10:0)
B(10:0)
C(3:0)
12 bit addertpd =30 ns
C(11:0)
Sommatori 12 bit
A(3:0)
B(3:0)
Cin Cout
C(3:0)A(3:0)
B(3:0)
Cin Cout
C(3:0)A(3:0)
B(3:0)
Cin Cout
C(3:0)S1(3:0)
S2(3:0)
0
R(3:0)S1(7:4)
S2(7:4)
R(7:4)0,S1(10:8)
0,S2(10:8)
R(11:0) = S1(10:0) + S2(10:0)
R(11:8)
S1(10:0)
S2(10:0)R(11:0)
ROM1K*16
ADD(9:0)
CE*
OE*
DATA(15:0)
ECOSCAN - Read Only Memory
OE*
ADD(9:0)
DATA(15:0)Alta impedenza
A
DATO(A)Alta impedenza
CE*
Tempo accesso = 70 ns
RAM64K*16
ADD(15:0)
CE*
OE*
DATA(15:0)
ECOSCAN - Random Access Memory
OE*
ADD(9:0)
DATA(15:0)
A
DATO(A)
CE*
Tempo scrittura = 25 ns
WE*
WE*
ECOSCANinternal RAM(256 Kbytes)
ECOSCAN Memory Mapping
Spazio di indirizzamento PD32 (byte)
Locazio ne0x00000000
Locazio ne0xFFFFFFFF
Spazio memoriaprogramma PD32
Locazio ne0x80000000
Locazio ne0x8003FFFF
Affinche’ il PD32 acceda in lettura la RAM internaECOSCAN deve “tradurre” gli indirizzi del MAB PD32
in indirizzi validi per la RAM interna
MAB(31:2) => ADD(15:0)0x20000000 0x00000x20000001 0x0001................................................................................................0x2000FFFF 0xFFFF
Poiche’ l’accesso e’ permesso solo a longword(32 bit)posso trascurare il valore dei segnali Mb(3:0)
ECOSCAN
ADC10 bit
PD32
MDB
MAB
MCB
I/ODB
I/OCB
MemoriaPD32
Architettura progetto ECOSCAN
20MhzClk
Vin ~RAM64Kx16
ROM1Kx16
Blocchi funzionali unita’ ECOSCAN
• PIPELINE- conversione segnale analogico (20 Mhz)- calcolo media mobile- calcolo logaritmo
• RAM INTERFACE- gestione segnali RAM interna (ADD,DATA,WE*,OE*,CS*)
• PD32 INTERFACE- decodifica “memory mapping” in lettura (MAB,MWR)- produzione segnale inizio acquisizione (SCANREQ*)- generazione IVN durante la fase di richiesta interrupt
• SCO - gestione timing acquisizione (SCANREQ*)- generazione address e segnali di controllo per scritture valori calcolati- gestione dei segnali di clock- gestione Interrupt Request (IRQ*,IACK)
Protocollo ECOSCAN
PD32 ECOSCAN
1) Generazione via software del segnale di inizio acquisizione:
OUTB S,0xFF
2) Generazione segnale inizio acquisizioneSCANREQ*
3) Processamento campioni (uno ogni 50 ns):- Conversione A/D- Calcolo media mobile- Calcolo logaritmo- Scrittura in memoria
4) Invia un Interrupt al PD32 dopo 65536 scritture
5) Serve la richiesta di interruzione
6) Puo’ accedere ai dati in memoria ECOSCAN
RAMInterface
64Kx16RAM
SCO
20 MHzCLK
ADD
PD32 Interface
PIPELINE
ECOSCAN Schema a blocchi funzionale- prima approssimazione -
MRD
MAB(31:2)
I/ODB(7:0)
I/OWR
I/OAB(7:0)
IRQ*
IACK
/4 Vin ~
RA
(15:
0)
MDB(15:0)
10 bitADC
LOGROM
RD(15:0)Mem MapDec.
I/O BusDec.
SCANREQ*
RA
ME
NB
*
Il segnale RAMENB* sara’ attivo (0) solo durante la fase 3 del protocollocioe’ quando la memoria interna e’ controllata dalla SCO di ECOSCAN
ECOSCAN - SCO (RAMENB* timing)
CLK (20 Mhz)
SCANREQ*
RAMENB*
IRQ*
TC*
Scrittura ultimalocazione memoria interna
(ADD = 0xFFFF)
D Q
Clk@20 MHZ CLK
SCANREQ*
PR*
RAMENB*
ADD = 0xFFFF or RESET
AND
ECOSCAN - PipelineConversione A/D
10 bit-ADC
ENCODE
Clk@20Mhz
Vin ~
+
12 bit adder (4 bit adder)
Campione precedente
40 ns + 30 ns > 50 ns (20MHz)
10 bit-ADC
ENCODE
ADC(9:0)
Pipeline register
CLK
Vin ~
All’ingresso dell’addizionatoreD(9:0)
Q(9:0)
Clk@20Mhz
Tempo pipe = Tencode + Tsu,R = 45 ns
ECOSCAN - PipelineCalcolo Media mobile
S(i+3) S(i)S(i+1)S(i+2)
+ +
+
Prendo i 10 bit MSB del risultato per effettuare la divisione per 4
10 10 10 10
1111
12
10 ns
30 ns
30 ns
70 ns > 50 ns !!
ECOSCAN - PipelineCalcolo Media mobile
S(i+3) S(i)S(i+1)S(i+2)
+ +
+
10 10 10 10
11
10 (MSB)
10 ns
30 ns
30 ns
Per entrambe le pipe si ha Tpipe = Tpd,R + Tpd,Adder(12) + Tsu.R = 45 ns
M(i)
S(i+2)+S(i+3)
11
S(i+1)+S(i)5 ns
5 ns
10 ns
ECOSCAN - PipelineCalcolo Media mobile
S(i+3) S(i)S(i+1)S(i+2)
+ +
+
10 10 10 10
11
10 (MSB)
Il tempo di pipe rimane invariato mail tempo di latenza di questo blocco e’ pari
a 6 cicli del CLK dei registri
M(i)
S(i+2)+S(i+3)
11
S(i+1)+S(i)
Uscita ADC
Ingresso alla LOG-ROM
ECOSCAN - PipelineCalcolo Logaritmo
ROM
10 ns
70 ns
M(i)
10
LOG(i)
16
105 ns
85 ns > 50 ns !!
Due soluzioni:• Ridurre la frequenza di clock (non per noi)• Buffer Multipli a frequenza ridotta!!
Poiche’ il tempo di pipe e’ Tclk < tpipe < 2*Tclkintroduciamo due buffer a frequenza CLK/2 = 10Mhz
all’uscita dell’ultimo addizionatore ed utilizziamo due ROM in parallelo
ECOSCAN - PipelineCalcolo Logaritmo
ROM 1
10 ns
70 ns
M(i)
10
LOG(i)
16
105 ns
ROM 2
M(i+1)
10
10
Clk@20mhz
Clk@10mhz
NOT
OE OE
10 ns
Tpipe(max) = Tpd,NOT + Tpd,R + Ta,ROM + Tsu.R = 95 ns
La latenza e’ pari a 2 cicli del CLK@20Mhz
Valore Medio uno ogni 50 ns
L’uscita va connessa al bus bidirezionaledella memoria interna e quindi il registrodeve essere dotato di uscite TRISTATE
OE*RAMENB*
ECOSCAN - RAM Interface
• Gestione segnali SRAM
STATO ADD CE* OE* WE*
RAMENB* = 0 ADD(SCO) 0 1 RAM WE*
RAMENB* = 1 M AB(17:0) RAM RD*(0) RAM RD* 1
• Segnale RAMRD* = Il PD32 ha indirizzato ECOSCAN ( MAB(31:18) = 0x2000 e MRD = 1) Proviene dal blocco “PD32 Interface”
• Segnale RAMWE* = ha la stessa temporizzazione di un clk 20 Mhz ma si deve attivare solo dopo che il tempo di latenza della PIPELINE e’ finito ( 8 cicli da RAMENB* = 0) Proviene dalla SCO.
ECOSCAN - SCO
• Generazione Clk (CLK@10Mhz)• Generazione segnale RAMWE* (Clk@20Mhz ma dopo 8 cicli inizio acquisizione)
Q0
3 BITCOUNTER
Q1
Q2
CLK
CL
Clk@20mhz
RAMENB*
Clk@10mhz
D Q
CLK*PR
Q*
0 ORClk@20mhz RAMWE*
CLK@20MHZ
0
0 1 2 3 4 5 6 7 8
Q(3:0)
9 10 11 12 13 14
1 2 3 4 5 6 7 0 1 2
WRENB*
CLK@10MHZ
Q2
WRENB*
RAMWE*
ECOSCAN - SCO
• Generazione Address memoria interna (0x0000 a 0xFFFF)• Generazione segnale “fine acquisizione” ( ADD = 0xFFFF) per preset RAMENB*)
Q(15:0)
16 BITCOUNTER
CLK
CL
RANWE*
RAMENB*
Address per RAM
D Q
CLK*PR
Q*
0
CLK@20MHZ
0
0 1 2 3 4 5 6 7 8
Q(3:0)
9 10 11 12 13 14
1 2 3 4 5 6 7 0 1 2
WRENB*
CLK@10MHZ
Q2
“fine acquisizione” agisce sul preset del DFF che genera RAMENB*
RAMWE*
0RA(15:0) 1 2 3 4 5 6 7 8 9 10
Q(15)
D Q
CLKCL
Q*RAMENB*
1
IRQ*
IACK
0
ECOSCAN - SCO
• Generazione segnale IRQ* per richiesta interrupt a fine acquisizione
CLK (20 Mhz)
SCANREQ*
RAMENB*
IRQ*
“fine acquisizione”