VOXMSG
description
Transcript of VOXMSG
VOXMSG
12 bitsDAC
RAM64Kx8
PD32
MDB
MAB
MCB
I/ODB
I/OAB
I/OCB
MemoriaPD32
Architettura progetto
8 KhzClock
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
.......................................MOV 1 in registro R1MOV da memoria a registro R2 valore LENGHT
label1 MOV da memoria a registro R3 R1-campione INC R1 JUMP labe11 se R1 < R2 MOV R2 nel registro di VOXMSG ........................................
Protocollo
VOXMSG
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
ATTESA
START ?NO
ADD = 0
Leggi MEM( ADD)ADD = ADD + 1Leggi MEM(ADD)
ADD = ADD + 1LENGHT = LENGHT -1
LENGHT = 0
NO
SI
InterruptRequest
SI
Per generare il segnale di startutilizzo la scrittura della lunghezza
ControlloreRAM64Kx8RAM
SCO
8 KhzCLK
ADD
Interfaccia I/O bus
LENGHT
Interfaccia DAC
VOXMSG Schema a blocchi funzionale- prima approssimazione -
MDB(31:0)
MWR
MAB(31:2)
Mb0
Mb1
Mb2
Mb3
I/ODB(31:0)
I/OWR
I/OAB(7:0)
/IRQ
IACK
RD(7:0) DACReg.
(11:0) al DAC
Play
RA(15:0)
8Khz Clk
Start
primo timing
CLK (8 Khz)
START
PLAY
IRQ*
TC*
Fine della riproduzionedel messaggio(LENGHT = 0)
INTERFACCIA I/O BUSPD32 => VOXMSG
•Fornire il segnale di inizio riproduzione messaggio•Programmare la lunghezza della sequenza da riprodurre
NAND9 input
I/OWR
I/OAB(7:0)
decodificaaccesso porta indirizzo 0xFF
START
LOAD*
D(14:0)I/OAB(14:0)
CEPLAY
CLKCLK (8Khz)
TC*alla SCO
Contatore 15 bit con caricamento parallelo asincrono
INTERFACCIA I/O BUS VOXMSG => PD32
• Generazione di un interrupt alla fine della riproduzione
D Q
TC* CLK
1
CL
0
IVN
IACK
I/ODB(7:0)
IRQ*
timing per interfaccia DAC
CLK (8 Khz)
RA(15:0) 0 1 2 3 4 5 6 2N-4 2N-3 2N-2 2N-1
RD(7:0) LSB0 MSB0 LSB1 MSB1 LSB2 MSB2 LSB3 MSBN-2 LSBN-1 MSBN-1
CLKMSB
CLKLSB
PLAY
conversione campione 0
conversione campione 1
conversione campione 2
conversione campione N-2
conversione campione N-1
D(11:8)
CLK
Q(11:0)
D(7:0)
CLK
Q(7:0)
D(7:0)
CLKMSBCLKLSB
RD(7:0)
(3:0)
Dato proveniente dalla RAM interna
al VOXMSG
Il campione a 12 bit viene tenuto stabileall’ingresso del DAC
SCO
•Generazione dei clocks•Gestione interazione segnali START/PLAY•Generazione indirizzi RAM interna al VOXMSG
START
CLEARPLAY
CLK
Q(14:0)
D Q
CLK
CL*
1 D Q
CLK
PLAY
CLK 8 KHz
TC
15 BITCOUNTER
RA(15:1)
NOT CLKLSB
CLKMSB
RA(0)
Controllore RAM
BloccoRD/WR
RD/WR*
A (15:0)
D (7:0)
RD(7:0)
MDB(31:0)
RA(15:0)
MAB(15:2),A1,A0
PLAY
CE*
NAND3 inputs
NOR2 inputs
Decodificamemory mapping
(0xFFF0XXXX)MAB(31:16)
NOT
MWR
PLAY
Mb0
Mb1
Mb2
Mb3
Decodifica32 to 8
bit
A0
A1
PLAY* PLAY*
D(7:0)
Memoria SRAM 64Kx8
Blocco RD/WR
RD(7:0)AND
2 inputs
Mb0
Mb1
Mb2
Mb3
AND2 inputs
AND2 inputs
AND2 inputs
PLAY*
x8
D(7:0)x8
x8
x8
MDB(7:0)
MDB(15:8)
MDB(23:16)
MDB(31:24)
“Memory Mapping”
Spazio di indirizzamento PD32
Locazio ne0x00000000
Locazio ne0xFFFFFFFF
Spazio memoriaprogramma PD32
Spazio “DEVICE-0”
Area inutilizzata
Spazio “DEVICE-N”
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
Locazio ne0x00FF0000
Locazio ne0x00FFFFFF
Locazio ne0xF0000000
MAB(31:2),Mb0,Mb1,Mb2,Mb3
PD32
DEVICE-0
Decodifica address0x00FFXXXX
DEVICE-N
Decodifica address0xFXXXXXXX
Memoria Programma
Decodifica address< 0x00FF0000