Achizitii de date cu ajutorul unei interfete SOUNDBLASTER
Intoducere
In acest document este descris un program in C/C++ de achizitii de date cu ajutorul unei interfete SOUNDBLASTER, si prelucrarea semnalelor care permit:
. calculul functiilor de autocorelatie
. calculul functiilor de intercorelatie
Principiul functionarii
Programul foloseste o placa SOUNDLBLASTER pentru achizitionarea semnalelor, semnalul analogic (continuu) este convertat in semnal digital (discret), care este prelucrat de program care realizeaza functiile cerute.
Cerinte
Calculator >386
OS: DOS >6.20 (Win9x,Win XP,NT,2000)
Placa SOUNDBLASTER
Monitor VGA
Programul a fost testat pe un sistem cu OS: Win98, SVGA, placa de sunet C-Media Inc.8330 (compatibil SB16), pe acest sistem programul functioneaza stabil.
Descriere program
Programul principal 123.exe,utilizeaza biblioteca grafica egavga.bgi.Are ca argument 0,1,2:
. 0 - doar osciloscop
. 1 - osciloscop + fct. de autocorelatie
. 2 - osciloscop +fct. de intercorelatie
In program sunt utilizate:
IRQ,DMA,VGAPAGEFLIP.etc
Programul foloseste o placa SOUNDBLASTER pentru achizitionarea semnalelor
Semnalul analogic este aplicat la intrarea de microfon a placii SOUNDBLASTER.
Semnalul analogic (continuu) este convertat in semnal digital (discret) de CAN din placa SOUNDBLASTER. Structura principial este reprezentat in Figura 1:
Programul foloseste acest convertor analog-digital pe 8 biti.(In cazul SB16 acest convertor este pe 16 biti dar se poate folosi si pe 8 biti)
Transferul de date se face prin DMA.
Pentru a functiona corect pentru placa SOUNDBLASTER trebuie sa fie setat urmatorii parametrii:
. Adresa de baza 0x220
. IRQ 5
. DMA 1
Programul nu detecteaza automat setarile, daca placa SOUNDBLASTER are alte parametrii trebuie modificat fisierul sbaster.h,dma_mem.c
Programarea unitatii DSP (Digital Signal Processor) din placa SOUNDBLASTER,se face prin porturi.
Porturile placii SOUDBLASTER
Tabel 1:
02x00h C/MS 1-6 - Data Port Write SB Only
02x00h FM Music - Left Status Port Read SBPro
02x00h FM Music - Left Register Port Write SBPro
02x01h C/MS 1-6 - Register Port Write SB Only
02x01h FM Music - Left Data Register Write SBPro
02x02h C/MS7-12 - Data Port Write SB Only
02x02h FM Music - Right Status Port Read SBPro
02x02h FM Music - Right Register Port Write SBPro
02x03h C/MS7-12 - Register Port Write SB Only
02x03h FM Music - Right Data Register Write SBPro
02x04h Mixer - Register Port Write SBPro
02x05h Mixer - Data Register Read/Write SBPro
02x06h DSP - Reset Write SB
02x08h FM Music - Compatible Status Port Read SB
02x08h FM Music - Compatible Register Port Write SB
02x09h FM Music - Compatible Data Register Write SB
02x0Ah DSP - Read Data Read SB
02x0Ch DSP - Write Data or Command Write SB
02x0Ch DSP - Write Buffer Status Read SB
02x0Dh DSP - Timer Interrupt Clear Read SB16???
02x0Eh DSP - Data Available Status Read SB
02x0Eh DSP - IRQ Acknowledge, 8-bit Read SB
02x0Fh DSP - IRQ Acknowledge, 16-bit Read SB16
02x10h CD-ROM - Data Register Read SBPro
02x10h CD-ROM - Command Port Write SBPro
02x11h CD-ROM - Status Port Read SBPro
02x12h CD-ROM - Reset Write SBPro
02x13h CD-ROM - Enable Write SBPro
0388h AdLib - Status Port Read SB
0388h AdLib - Register Port Write SB
0389h AdLib - Data Register Write SB
038Ah Advanced AdLib - Status Port Read SB16
038Ah Advanced AdLib - Register Port Write SB16
038Bh Advanced AdLib - Data Register Write SB16
03x00h MPU-401 - Data Port Read/Write SB16???
03x01h MPU-401 - Status Port Read SB16???
03x01h MPU-401 - Command Port Write SB16???
0200h-0207h Joystick Varies SB