Architettura progetto
Memoria
PD32
MDB
PD32
MAB
MCB
RAM
64Kx8
8 Khz
Clock
VOXMSG
I/ODB
I/OAB
I/OCB
12 bits
DAC
Blocchi funzionali unita’ VOXMSG
• INTERFACCIA I/O BUS
• PD32 => VOXMSG
- Fornire il segnale di inizio riproduzione messaggio
- Programmare la lunghezza della sequenza da riprodurre
• VOXMSG => PD32
•- Generazione di un interrupt alla fine della riproduzione
• CONTROLLORE RAM INTERNA (64Kx8)
- Gestione accessi PD32 in scrittura (memory mapped)
- Gestione accessi in lettura per riproduzione messaggio
• INTERFACCIA con il DAC
- Formattazione dei dati e presentazione ad 8 Khz
• SCO
- Gestione del Timing
Protocollo
PD32
VOXMSG
1) Caricamento nella RAM di VOXMSG
della sequenza di campioni
2) Caricamento in VOXMSG della lunghezza
della sequenza da riprodurre
3) Attivazione della riproduzione del
messaggio
4) Preleva i dati dalla RAM e li presenta in ingresso
la DAC in formato 12 bit alla frequenza di 8 Khz
5) Invia un Interrupt al PD32
Protocollo
PD32
Routine assembler
1) Caricamento nella RAM di VOXMSG
della sequenza di campioni
2) Caricamento in VOXMSG della lunghezza
della sequenza da riprodurre (LENGHT)
3) Attivazione della riproduzione del
messaggio
label1
.......................................
MOV 1 in registro R1
MOV da memoria a registro R2 valore LENGHT
MOV da memoria a registro R3 R1-campione
INC R1
JUMP labe11 se R1 < R2
MOV R2 nel registro di VOXMSG
........................................
Protocollo
ATTESA
VOXMSG
NO
START ?
SI
Per generare il segnale di start
utilizzo la scrittura della lunghezza
ADD = 0
Leggi MEM( ADD)
ADD = ADD + 1
Leggi MEM(ADD)
ADD = ADD + 1
LENGHT = LENGHT -1
LENGHT = 0
SI
Interrupt
Request
NO
4) Preleva i dati dalla RAM e li presenta in ingresso
la DAC in formato 12 bit alla frequenza di 8 Khz
5) Invia un Interrupt al PD32
VOXMSG Schema a blocchi funzionale
- prima approssimazione -
I/ODB(31:0)
I/OWR
I/OAB(7:0)
/IRQ
IACK
LENGHT
Interfaccia I/O bus
8Khz Clk
Start
Play
SCO
8 Khz
CLK
ADD
MDB(31:0)
MWR
MAB(31:2)
Mb0
Mb1
Mb2
Mb3
Controllore
RAM
RA(15:0)
64Kx8
RAM
RD(7:0)
Interfaccia DAC
DAC
Reg.
(11:0)
al DAC
primo timing
CLK (8 Khz)
START
PLAY
IRQ*
TC*
Fine della riproduzione
del messaggio
(LENGHT = 0)
INTERFACCIA I/O BUS
PD32 => VOXMSG
•Fornire il segnale di inizio riproduzione messaggio
•Programmare la lunghezza della sequenza da riprodurre
CLK (8Khz)
I/OAB(14:0)
CLK
D(14:0)
PLAY
CE
TC*
I/OWR
I/OAB(7:0)
NAND
9 input
decodifica
accesso porta
indirizzo 0xFF
alla SCO
LOAD*
Contatore 15 bit
con caricamento parallelo asincrono
START
INTERFACCIA I/O BUS
VOXMSG => PD32
• Generazione di un interrupt alla fine della riproduzione
1
TC*
D
Q
CLK
CL
0
IVN
IACK
IRQ*
I/ODB(7:0)
timing per interfaccia DAC
CLK (8 Khz)
PLAY
RA(15:0)
RD(7:0)
0
LSB0
1
2
3
MSB0 LSB1
4
MSB1 LSB2
5
6
2N-4
MSB2 LSB3
2N-3
2N-2
MSBN-2 LSBN-1
2N-1
MSBN-1
CLKLSB
CLKMSB
conversione
campione 0
Dato proveniente
dalla RAM interna
al VOXMSG
conversione
campione 1
conversione
campione 2
(3:0)
conversione
campione N-2
conversione
campione N-1
D(11:8)
Q(11:0)
RD(7:0)
D(7:0)
Q(7:0)
CLKLSB
CLK
D(7:0)
CLKMSB
CLK
Il campione a 12 bit
viene tenuto stabile
all’ingresso del DAC
SCO
•Generazione dei clocks
•Gestione interazione segnali START/PLAY
•Generazione indirizzi RAM interna al VOXMSG
1
START
D
Q
D
CLK
Q
PLAY
CLK
CL*
TC
CLKMSB
CLK
8 KHz
NOT
CLKLSB
CLK
PLAY
CLEAR
RA(0)
Q(14:0)
15 BIT
COUNTER
RA(15:1)
Controllore RAM
Memoria SRAM 64Kx8
RA(15:0)
A (15:0)
MDB(31:0)
MAB(15:2),A1,A0
D(7:0)
D (7:0)
PLAY
Blocco
RD/WR
RD(7:0)
RD/WR*
NOT
CE*
PLAY*
PLAY*
NAND
3 inputs
MWR
Decodifica
memory
mapping
MAB(31:16) (0xFFF0XXXX)
PLAY
A0
A1
NOR
2 inputs
Decodifica
32 to 8
bit
Mb0
Mb1
Mb2
Mb3
Blocco RD/WR
PLAY*
Mb0
AND
2 inputs
MDB(7:0)
Mb1
AND
2 inputs
MDB(15:8)
Mb2
x8
x8
D(7:0)
AND
2 inputs
MDB(23:16)
x8
RD(7:0)
Mb3
AND
2 inputs
MDB(31:24)
x8
“Memory Mapping”
Spazio di indirizzamento PD32
Locazio ne
0x00000000
Spazio memoria
programma PD32
Locazio ne
0x00FF0000
Locazio ne
0x00FFFFFF
Spazio “DEVICE-0”
Area inutilizzata
Locazio ne
0xF0000000
Spazio “DEVICE-N”
Locazio ne
0xFFFFFFFF
Quando e’ necessario si puo’ utilizzare una parte dello
spazio di indirizzamento del PD32 per “mappare”una
periferica sul bus dati invece che su quello di I/O
PD32
MAB(31:2),Mb0,Mb1,Mb2,Mb3
Decodifica address
< 0x00FF0000
Decodifica address
0x00FFXXXX
Decodifica address
0xFXXXXXXX
Memoria Programma
DEVICE-0
DEVICE-N
Scarica

Voxmsg