150 likes | 304 Views
Architettura progetto. Memoria PD32. PD32. VOXMSG. MDB. RAM 64Kx8. 8 Khz Clock. MAB. 12 bits DAC. MCB. I/ODB. I/OAB. I/OCB. Blocchi funzionali unita’ VOXMSG. INTERFACCIA I/O BUS PD32 => VOXMSG - Fornire il segnale di inizio riproduzione messaggio
E N D
Architettura progetto Memoria PD32 PD32 VOXMSG MDB RAM 64Kx8 8 Khz Clock MAB 12 bits DAC MCB I/ODB I/OAB I/OCB
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 R1 • MOV 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 • ........................................
ATTESA Protocollo VOXMSG START ? NO 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 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 LENGHT = 0 SI Interrupt Request
VOXMSG Schema a blocchi funzionale - prima approssimazione - Interfaccia I/O bus LENGHT 8Khz Clk SCO I/ODB(31:0) I/OWR Start I/OAB(7:0) Play /IRQ IACK ADD 8 Khz CLK MDB(31:0) Controllore RAM MWR Interfaccia DAC MAB(31:2) Mb0 RA(15:0) Mb1 Mb2 64Kx8 RAM RD(7:0) DAC Reg. (11:0) al DAC Mb3
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) CLK I/OAB(14:0) D(14:0) PLAY CE TC* alla SCO NAND 9 input I/OWR LOAD* I/OAB(7:0) Contatore 15 bit con caricamento parallelo asincrono decodifica accesso porta indirizzo 0xFF START
INTERFACCIA I/O BUS VOXMSG => PD32 • Generazione di un interrupt alla fine della riproduzione 1 D Q TC* CLK CL IRQ* 0 I/ODB(7:0) IVN IACK
timing per interfaccia DAC CLK (8 Khz) PLAY 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 CLKLSB CLKMSB conversione campione 0 conversione campione 1 conversione campione 2 conversione campione N-2 conversione campione N-1 Dato proveniente dalla RAM interna al VOXMSG (3:0) D(11:8) Q(11:0) RD(7:0) D(7:0) Q(7:0) D(7:0) Il campione a 12 bit viene tenuto stabile all’ingresso del DAC CLKLSB CLKMSB CLK CLK
SCO • Generazione dei clocks • Gestione interazione segnali START/PLAY • Generazione indirizzi RAM interna al VOXMSG 1 D Q D Q PLAY START CLK CLK CL* TC CLKMSB CLK 8 KHz NOT CLKLSB CLK PLAY CLEAR RA(0) Q(14:0) RA(15:1) 15 BIT COUNTER
Controllore RAM Memoria SRAM 64Kx8 RA(15:0) A (15:0) Blocco RD/WR MDB(31:0) MAB(15:2),A1,A0 D(7:0) D (7:0) PLAY RD(7:0) RD/WR* NOT PLAY* CE* NAND 3 inputs PLAY* MWR Decodifica memory mapping (0xFFF0XXXX) Mb0 Decodifica 32 to 8 bit A0 Mb1 Mb2 A1 MAB(31:16) Mb3 NOR 2 inputs PLAY
Blocco RD/WR PLAY* AND 2 inputs Mb0 MDB(7:0) x8 AND 2 inputs Mb1 MDB(15:8) x8 D(7:0) AND 2 inputs Mb2 MDB(23:16) x8 RD(7:0) AND 2 inputs Mb3 MDB(31:24) x8
“Memory Mapping” Spazio di indirizzamento PD32 Locazio ne 0x00000000 Spazio memoria programma PD32 Locazio ne 0x00FF0000 Spazio “DEVICE-0” Locazio ne 0x00FFFFFF 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