ࡱ> 5@ bjbj22 `.XXl    dkkk@l4m,d|TnTn(|n|nn{.{{ $RR 5{Py{|{{  |nn >|||{@ "|nLn|{|j|&}.rnHn pkfk |@k$T0`|@4dd     {{|{{{{{ ddDgk|ddkAchizicii de date cu ajutorul unei interfece SOUNDBLASTER   Intoducere n acest document este descris un program n C/C++ de achizicii de date cu ajutorul unei interfece SOUNDBLASTER, _i prelucrarea semnalelor care permit: calculul funcciilor de autocorelacie calculul funcciilor de intercorelacie Principiul funccionrii Programul folose_te o placa SOUNDLBLASTER pentru achizicionarea semnalelor, semnalul analogic (continuu) este convertat n semnal digital (discret), care este prelucrat de program care realizeaz funcciile cerute. Cerince 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 funccioneaz stabil. Descriere program Programul principal 123.exe,utilizeaz biblioteca grafic egavga.bgi.Are ca argument 0,1,2: 0  doar osciloscop 1  osciloscop + fct. de autocorelacie 2  osciloscop +fct. de intercorelacie n program sunt utilizate: IRQ,DMA,VGAPAGEFLIP.etc Programul folose_te o placa SOUNDBLASTER pentru achizicionarea semnalelor Semnalul analogic este aplicat la intrarea de microfon a plcii SOUNDBLASTER. Semnalul analogic (continuu) este convertat n semnal digital (discret) de CAN din placa SOUNDBLASTER. Structura principial este reprezentat n Figura 1: Programul folose_te acest convertor analog-digital pe 8 biti.(n cazul SB16 acest convertor este pe 16 bici dar se poate folosi _i pe 8 bici) Transferul de date se face prin DMA. Pentru a funcciona corect pentru placa SOUNDBLASTER trebuie s fie setat urmtorii parametrii: Adresa de baz 0x220 IRQ 5 DMA 1 Programul nu detecteaz automat setrile, dac placa SOUNDBLASTER are alte parametrii trebuie modificat fi_ierul sbaster.h,dma_mem.c Programarea unitcii DSP (Digital Signal Processor) din placa SOUNDBLASTER,se face prin porturi.  Porturile plcii 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 Comenzi DSP Tabel 2: 003h ASP Status SB16ASP 004h DSP Status (Obsolete) SB2.0-Pro2 004h ASP ??? SB16ASP 005h ASP ??? SB16ASP 010h Direct DAC, 8-bit SB 014h DMA DAC, 8-bit SB 016h DMA DAC, 2-bit ADPCM SB 017h DMA DAC, 2-bit ADPCM Reference SB 01Ch Auto-Initialize DMA DAC, 8-bit SB2.0 01Fh Auto-Initialize DMA DAC, 2-bit ADPCM Reference SB2.0 020h Direct ADC, 8-bit SB 024h DMA ADC, 8-bit SB 028h Direct ADC, 8-bit (Burst) SB-Pro2 02Ch Auto-Initialize DMA ADC, 8-bit SB2.0 030h MIDI Read Poll SB 031h MIDI Read Interrupt SB 032h MIDI Read Timestamp Poll SB??? 033h MIDI Read Timestamp Interrupt SB??? 034h MIDI Read Poll + Write Poll (UART) SB2.0 035h MIDI Read Interrupt + Write Poll (UART) SB2.0??? 037h MIDI Read Timestamp Interrupt + Write Poll (UART) SB2.0??? 038h MIDI Write Poll SB 040h Set Time Constant SB 041h Set Sample Rate SB16 045h Continue Auto-Initialize DMA, 8-bit SB16 047h Continue Auto-Initialize DMA, 16-bit SB16 048h Set DMA Block Size SB2.0 074h DMA DAC, 4-bit ADPCM SB 075h DMA DAC, 4-bit ADPCM Reference SB 076h DMA DAC, 2.6-bit ADPCM SB 077h DMA DAC, 2.6-bit ADPCM Reference SB 07Dh Auto-Initialize DMA DAC, 4-bit ADPCM Reference SB2.0 07Fh Auto-Initialize DMA DAC, 2.6-bit ADPCM Reference SB2.0 080h Silence DAC SB 090h Auto-Initialize DMA DAC, 8-bit (High Speed) SB2.0-Pro2 098h Auto-Initialize DMA ADC, 8-bit (High Speed) SB2.0-Pro2 0A0h Disable Stereo Input Mode SBPro Only 0A8h Enable Stereo Input Mode SBPro Only 0Bxh/0Cxh Generic DAC/ADC DMA (16-bit, 8-bit) SB16 0D0h Halt DMA Operation, 8-bit SB 0D1h Enable Speaker SB 0D3h Disable Speaker SB 0D4h Continue DMA Operation, 8-bit SB 0D5h Halt DMA Operation, 16-bit SB16 0D6h Continue DMA Operation, 16-bit SB16 0D8h Speaker Status SB 0D9h Exit Auto-Initialize DMA Operation, 16-bit SB16 0DAh Exit Auto-Initialize DMA Operation, 8-bit SB2.0 0E0h DSP Identification SB2.0 0E1h DSP Version SB 0E3h DSP Copyright SBPro2??? 0E4h Write Test Register SB2.0 0E8h Read Test Register SB2.0 0F0h Sine Generator SB 0F1h DSP Auxiliary Status (Obsolete) SB-Pro2 0F2h IRQ Request, 8-bit SB 0F3h IRQ Request, 16-bit SB16 0FBh DSP Status SB16 0FCh DSP Auxiliary Status SB16 0FDh DSP Command Status SB16 Programul folose_te urmtoarele registre: 02x06h DSP  Reset 02x0Ah DSP - Read Data 02x0Ch DSP - Write Data or Command 02x0Ch DSP - Write Buffer Status 02x0Dh DSP - Timer Interrupt Clear 02x0Eh DSP - Data Available Status Comenzi DSP: 014h DMA DAC, 8-bit 024h DMA ADC, 8-bit 040h Set Time Constant 0D1h Enable Speaker 0D3h Disable Speaker 02x06h DSP - Reset Descriere Reseteaz DSPul, terminnd toate operaciile anterioare. Procedura Scrie 001h A_teapt 3.3us minimum Scrie 000h _teapt 100us maximum pentru DSP Data Available(02x0Eh) Citire 0xAA de la DSP Read Data (02x0Ah) 02x0Ah DSP - Read Data Descriere Portul de intrare pentru citirea DSP octet. Procedura A_teapta pn cnd bitul 7=1 de la DSP Data Abailable Status(02x0Eh read) Citire octet de pe DSP Read Data port (02x0Ah read) 02x0Ch DSP - Write Data or Command Descriere Portul de iesire pentru comenzi DSP si pentru date. Procedura A_teapt pn cnd bitul 7=1 de la DSP Write Buffer Status (02x0Ch read) Scriere octet la DSP Write Data or Command port (02x0Ch write) 02x0Ch DSP - Write Buffer Status Descriere Indic dac DSPul poate s prime_te date prin DSP Write Data or Command port (02x0Ch write). Procedura A_teapt pn cnd bitul 7=1 de la DSP Write Buffer Status (02x0Ch read) Scriere octet la DSP Write Data or Command port (02x0Ch write) 02x0Eh DSP - Data Available Status Descriere Indic dac DSPul are date disponibile pe portul DSP Read Data port (02x0Ah read). Procedura A_teapta pn cnd bitul 7=1 de la DSP Data Abailable Status(02x0Eh read) Citire octet de pe DSP Read Data port (02x0Ah read) Comenzi DSP 014h DMA DAC, 8-bit COMMAND->LENGTHLOBYTE->LENGTHHIBYTE Descriere Inicializeaz transfer DMA pe 8 bici. Procedura Instalare procedura de ntrerupere,actualizare masca pic. Setare constanta de timp,sau timpul de e_antionare (Set Time Constant(040h)) Comanda Enable Speaker (0D1h) Setare controlerul DMA (mode = 048h + channel) Comanda DMA DAC,8-bit (014h) Acknowledge IRQ PIC & SB Comanda Disable Speaker (0D3h) LENGTH = SAMPLES - 1 040h Set Time Constant COMMAND->TIMEBYTE Descriere Setez rate de e_antionare Formula TimeConstant = 256 - (1000000 / (SampleChannels * SampleRate)) 0D1h Enable Speaker COMMAND Descriere Activeaz ie_irea 0D3h Disable Speaker COMMAND Descriere Dezactiveaz ie_irea Funccii legate de placa SOUNDBLASTER se gsesc n fi_ierul sblaster.c #ifndef SBH #include "sblaste.h" #endif unsigned char sbdmaon; void interrupt(*oldintvector)(void); void interrupt SB_Handler(void); void interrupt SB_Handler(void){ sbdmaon=0; inp(DSP_IRQAck8); outp(INT_Controller,PIC_IRQAck); } void DSP_Write(unsigned char a){ while (inp(DSP_WriteBufferStatus) & 0x80); //bit7=0 ->ready; outp(DSP_WriteDataOrCommand,a); } unsigned char DSP_Read(void){ long timeout=10000L; //bit 7=1->ready while( (!inp(DSP_DataAvailableStatus)&0x80) && (timeout--) ); return inp(DSP_ReadData); } unsigned char DSP_Reset(void){ unsigned char i=100; outp(DSP_ResetPort,1); outp(DSP_ResetPort,0); while((DSP_Read()!=0xAA) && (i--) ); return i; } void SB_InstallHandler(void){ disable(); outp(PIC_Maskport, (inp(PIC_Maskport)|IRQ_Stop)); oldintvector = getvect(IRQ_Intvector); setvect(IRQ_Intvector, SB_Handler); outp(PIC_Maskport, (inp(PIC_Maskport)&IRQ_Start)); enable(); } void SB_UninstallHandler(void){ disable(); outp(PIC_Maskport, (inp(PIC_Maskport)|IRQ_Stop)); setvect(IRQ_Intvector, oldintvector); enable(); } Controlerul DMA Controlerul DMA este folosit pentru transfer de date ntre echipamente de intrare/iesire (porturi I/O) _i memorie, fr intervencia procesorului. Este folosit n general de catre unitci de disk, hard diskuri, dar poate fi folosit pentru orice port I/O ct timp nu interfereaz cu alte unitci standard. Setarea controlerului DMA pentru transfer DMA Activare masca canal Stergere byte pointer Configurare modul de transfer Scriere adresa de pagina Scriere adresa de deplasament (offset) Scriere lungime-1 Deactivare masca canal Adresa DMA este pe 20 bici, aceast adres este calculat n program.Registrul de adresa de pagina este setat cu o valoare pe 4 bici care reprezint bicii 16-19 din adresa DMA de 20 bici.Memoria alocata transferului DMA trebuie s ncap pe o pagina de 64Koctet. n program aceast condicie este satisfcut alocnd de dou ori mai mult memorie(n total max 64Koctet ), pentru transferul DMA, iar dac aceasta zom de memorie nu ncap pe o pagin de 64Kocteci.Adresa de nceput este mrit pn la nceputul paginii 2. Astfel zona de memorie sigur, ncap pe pagina aceasta. Despre controlerul DMA The original PC supports four 8-bit DMA channels, across a 20-bit address space, using an Intel 8237A DMA controller chip. The AT supports seven DMA channels by cascading a second 8237A DMA controller. The differences between PC and AT DMA are covered at the end of this section. Channel Usage in PC and XT _______ ____________________________________ 0 memory refresh (highest priority) 1 not used 2 diskette adapter 3 hard disk adapter (lowest priority) Note: All PC-compatibles use DMA channel 0 for memory refresh. If memory is not refreshed as set by the BIOS, data in RAM will degrade within a few hundredths of a second. It is wise to avoid monkeying with DMA port settings. Port Description ____ ______________________________________________________________________ 000H-007H DMA base address an offset registers All are 16-bit registers: read/write the low byte, then the high byte at the same I/O port. Base addresses are offsets from a DMA Page (see below). 000H Write: DMA channel 0 base address (also sets current address) Read: DMA channel 0 current address 001H Write: DMA channel 0 base address and word count Read: DMA channel 0 current word count 002H Write: DMA channel 1 base address Read: DMA channel 1 current address 003H Write: DMA channel 1 base address and word count Read: DMA channel 1 current word count 004H Write: DMA channel 2 base address (diskette adapter) Read: DMA channel 2 current address " 005H Write: DMA channel 2 base address and word count " Read: DMA channel 2 current word count " 006H Write: DMA channel 3 base address (hard disk adapter) Read: DMA channel 3 current address " 007H Write: DMA channel 3 base address and word count " Read: DMA channel 3 current word count " ---- ----------------------------------------------------------------------- 008H-00fH DMA control/status registers 008H Write: DMA command register +7-6-5-4-3-2-1-0+ +---------------+ bit +- 0: 1=enable memory-to-memory DMA (ch0-ch1) +--- 1: 1=enable Ch0 address hold +----- 2: 1=disable controller +------- 3: 1=select compressed timing mode +--------- 4: 1=enable rotating priority +----------- 5: 1=select extended write mode; 0=late write +------------- 6: 1=select DRQ sensing as active high; 0=low +--------------- 7: 1=select DACK sensing as active high; 0=low Read: DMA status register +7-6-5-4-3-2-1-0+ +---------------+ bit +-----+ +------- 0-3: channel 0-3 has reached terminal count +------------ 4-7: channel 0-3 has a request pending 009H Write: request register +7-6-5-4-3-2-1-0+ unused +---------------+ bit +--- 0-1: select channel (00=0; 01=1; 10=2; 11=3) +----- 2: 1=set request bit for channel; 0=reset request 00aH Write: single mask bit register +7-6-5-4-3-2-1-0+ unused +---------------+ bit +--- 0-1: select channel (00=0; 01=1; 10=2; 11=3) +----- 2: 1=set mask for channel; 0=clear mask (enable) 00bH Write: mode register +7-6-5-4-3-2-1-0+ +---------------+ bit +-+ +-+ +--- 0-1: select channel (00=0; 01=1; 10=2; 11=3) +------ 2-3: xfer type: 00=verify (nop); 01=write; 10=read +--------- 4: 1=enable auto-initialization +----------- 5: 1=select addr increment; 0=address decrement +-------------- 6-7: 00=demand mode; 01=single 10=block; 11=cascade 00cH Write: clear byte pointer flip-flop. Any write clears the flip-flop so that the next write to any of the 16-bit registers is decoded as the low byte. The next is the high byte, then next is low, etc. 00dH Write: master clear. Any OUT clears the ctrlr (must be re-init'd) Read: temporary reg. Last byte in memory-to-memory xfer (not used) 00eH Write: Clear mask registers. Any OUT enables all 4 channels. 00fH Write: master clear. Clear or mask any or all of the channels. +7-6-5-4-3-2-1-0+ +---------------+ bit +- 0: 1=mask channel 0; 0=enable +--- 1: 1=mask channel 1; +----- 2: 1=mask channel 2; +------- 3: 1=mask channel 3; Read: temporary reg. Last byte in memory-to-memory xfer (not used) 081H-08fH DMA page registers. To select a starting address for a DMA operation, do an OUT to the page register (ports 81H-83H) for the selected channel then set the base address (ports 00H-07H) for the channel. A page register is set with a 4-bit value that represents bits 16-19 of the 20-bit DMA address. Since the current address is a 16-bit value, it is not possible to cross a 64K boundary (e.g., address 1000:0, 2000:0, etc.) with a DMA operation. 081H Channel 2 page register (diskette DMA) 082H Channel 3 page register (hard disk DMA) 083H Channel 1 page register ____________________________________________________________________________ _AT DMA__ The DMA system on the AT is basically upwardly-compatible with PC and XT DMA. In addition to the four 8-bit channels of the PC, the AT adds a second 8237A-5 DMA controller which supports channels 4-7. Channel Usage in AT _______ ________________________________________________________________ 0 spare -+ 1 SDLC (Synchronous Data Link Control) - 8-bit DMA channels 2 diskette adapter 3 hard disk adapter -+ 4 (controller 2) cascade for controller 1 -+ 5 spare - 16-bit DMA channels 6 spare 7 spare -+ ---- ----------------------------------------------------------------------- 081H-08fH DMA page registers. On the AT, all 8 bits of the Page registers are used. They become the high 8-bits of a 24-bit address space (with the low 16-bits being set in a channel's base/current address register). The page size is 128K (64K words) so DMA transfers must not cross a 128K boundary (e.g., address 2000:0, 4000:0, 6000:0, etc.) 081H Channel 2 page register (diskette DMA) (address bits 16-23) 082H Channel 3 page register (hard disk DMA) (address bits 16-23) 083H Channel 1 page register (address bits 16-23) 087H Channel 0 page register (address bits 16-23) 089H Channel 6 page register (address bits 17-23) 08bH Channel 5 page register (address bits 17-23) 08aH Channel 7 page register (address bits 17-23) 08fH refresh ---- ----------------------------------------------------------------------- 0c0H-0dfH AT DMA controller registers for 16-bit DMA I/O. Channels 0-3 work with 8-bit I/O as in the PC. Additional channels 4-7 support 16-bit device-to-memory and memory-to-device transfers. Transfers for these channels always start on a word boundary and all addresses and counts are for 16-bit words (e.g., a base address of 123H actually refers to offset 246H from the page for that channel). 0c0H Channel 4 base and current address (bits 1-16; bit 0 assumed 0) 0c2H Channel 4 current word count 0c4H Channel 5 base and current address (bits 1-16) 0c6H Channel 5 current word count 0c8H Channel 6 base and current address (bits 1-16) 0caH Channel 6 current word count 0ccH Channel 7 base and current address (bits 1-16) 0ceH Channel 7 current word count ---- ----------------------------------------------------------------------- 0d0H-0dfH AT DMA control/status registers 0d0H Writ tv~f F V DVXj~Fp$&0BDͼygy^VhTOJQJhT5OJQJ"jhTOJQJUmHnHuhTOJQJhTCJOJQJhTCJOJQJhTCJOJQJhTCJOJQJmHsHhT5CJOJQJmHsH!jhT5CJUmHnHuhT5CJ OJQJmHsH!jhT5CJ UmHnHuhT5CJ mHsH hT5CJ txz|~  d f D F V X $ !h^ha$$ & F h!^a$ $ !@&a$ $ !a$ ! $ !a$ $ !@&a$X x   :<>@BDhj"JN~ $ !h^ha$$ & F h!^a$ $ !a$ $ !@&a$&0BD8#$d%d&d'dNOPQ ! !@&$ & F h!^a$ $ !a$dD"i>_6^#$d%d&d'dNOPQ6 } !X!!!<"""""""~#$d%d&d'dNOPQ@& !@& !( !$d%d&d'dNOPQ#$d%d&d'dNOPQD"""""""3333@4l77h99;l;=Z=R??nAAE>ERFFFGGGµ~p~p~p~p~p~p~p~p~p~pbhTCJOJQJmHsHhTCJOJQJmHsHhT5CJOJQJmHsHhTCJOJQJmHsHhTCJOJQJmHsHhTOJQJmHsHhT5OJQJmHsHhTOJQJmHsHhTOJQJmHsHhTCJ OJQJmHsHhTCJOJQJmHsHhTCJOJQJ "7###$]$$$5%%% &Y&&&1'{''(\(((7)))*#$d%d&d'dNOPQ*\***1+x++ ,S,,,@---.f...=///0`000?1#$d%d&d'dNOPQ?1112f222?333333@4B4x445$a$ $ !@&a$ $ !a$ !( !$d%d&d'dNOPQ#$d%d&d'dNOPQ5b5566,6h666&7d7f777,8.8J8`8889f9h999$h^ha$$ & F h^a$$@&a$ $ !a$$a$9 : : ::;;l;;;;;<==Z=n=(>,>@>>P?$ & F h88^8a$$ & F h88^8a$$ & F h88^8a$ $h@&^ha$$h^ha$P?R???Z@\@p@AlAnAAAA B BlBnBBBCC*D$ & F h^a$$a$$@&a$$^a$$ & F h88^8a$ $h@&^ha$$h^ha$*DdDDDDEE>EjE~EEEEPFRFFFFFFG&G:GdGfGGG$@&a$$a$$ & F h^a$GGHH#H$H;Hfjlֶǥ||nnǐhTCJOJQJmHsH&jhTCJOJQJUmHnHu)jhT5CJOJQJUmHnHu hT5CJOJQJmHnHujhT5UmHnHuUhT5CJOJQJmHsHhTCJOJQJmHsHhTCJOJQJmHsHhTCJOJQJmHsH+IIIJJJ3JIJJJbJzJ{JJJJJJ#$d%d&d'dNOPQ#$d%d&d'dNOPQ%$d%d&d'd@&NOPQJJJJK@KmKKKKKK&L'L\LLLLLLLLLOO#$d%d&d'dNOPQOPFPPPQ&QTQVQUUVVMVVV W!W>WmWWWW#$d%d&d'dNOPQh^h & F h^WWW@XXXXYY_YYY"Z5Z6ZzZZZ [2[][[[\A\{\#$d%d&d'dNOPQ{\\\4]n]]]^>^V^n^^^_7_s___8``````2ara#$d%d&d'dNOPQrasaaaaa#bpbqbbbbb)cucvccccc#doddd-e`e#$d%d&d'dNOPQ`eaeee>fXfYffff2g3gyggggg*hXhhhhh9iii#$d%d&d'dNOPQij\jjjjjj#k$kBkCkkkk.lkllllllHm|mmm.n#$d%d&d'dNOPQ.nbnnnn/ovoo pVpWppp#qgqqqrr^rrrBsss t#$d%d&d'dNOPQ ttTtwtttu'u\uuuu1Nsʬ'tu#$d%d&d'dNOPQe: command register Read: status register 0d2H Write request register 0d4H Write single mask register bit 0d6H Write Mode register 0d8H Clear byte pointer flip-flop 0daH Write: master clear Read: temporary register 0dcH Clear mask register 0deH Write all mask register bits ---- ----------------------------------------------------------------------- Funccii legate de controlerul DMA se gsesc n fi_ierul dma_mem.c. //all functions for 8 bit dma #define getlinearaddr(p) ((unsigned long)FP_SEG(p)*16 + (unsigned long)FP_OFF(p)) int DMA_AllocMem(unsigned long size){ unsigned long ap; dmabuffer=farmalloc(2*size); if(dmabuffer==NULL)return 0; dmaptr = (unsigned char far *)dmabuffer; if( (( getlinearaddr(dmaptr) % 65536L) + size )> 65536L) { //dma 64k block override // dmaptr +=size; buf_addr=getlinearaddr(dmaptr); buf_addr+=0x0FFFFL; buf_addr&=0xF0000L; ap=(buf_addr>>16)&15; dmaptr=MK_FP(((unsigned short)ap<<12)&0xF000,0); printf("->Second DMA buf choosed<-"); } else printf("->FIRST DMA buf choosed<-"); dmaptr1=dmaptr; buf_addr = getlinearaddr(dmaptr); buf_page = (unsigned char)((buf_addr >> 16)&0x000F); buf_ofs = (unsigned int)((buf_addr) % 65536L); printf("\nDMA buf size: %8.0f",(float)size); printf("\nbuf_adr %8.0f",(float)buf_addr); printf("\nbuf_page %8.0f",(float)buf_page); printf("\nbuf_ofs %8.0f",(float)buf_ofs); return 1; } void DMA_DAC8Start(void){ sbdmaon=1; /* Program DMA controller */ outp(DMA_MaskPort, SB_DMA+4); //sn dma 0..3 outp(DMA_ClearFlipFlop, 0x00); // -lo -hi outp(DMA_ModePort, DMA_WantedMode); outp(DMA_BaseAddrPort, LO(buf_ofs)); outp(DMA_BaseAddrPort, HI(buf_ofs)); outp(DMA_CountPort, LO(DMA_Length-1)); outp(DMA_CountPort, HI(DMA_Length-1)); outp(DMA_PagePort, buf_page); outp(DMA_MaskPort, SB_DMA); //Program the SB //set time constant DSP_Write(DSPcm_SetTimeConstant); DSP_Write(245);//165 //245 //210 //use 8 bit mono no aoutoinit DSP_Write(DSPcm_DMADAC8); DSP_Write(LO(DMA_Length-1)); DSP_Write(HI(DMA_Length-1)); //!! TRANSFER STARTS NOW !! -------------------------- } void DMA_ADC8Start ( unsigned short len ) // len = number of bytes to record to unsigned char *aligned (<=65000) { len--; sbdmaon=1; // tc = time constant = 256L - (1000000UL/samples per second) // inp(0x022E); // DSP_Write(0x40); // DSP_Write(245); DSP_Write(DSPcm_SetTimeConstant); DSP_Write(245);//165 //245 //210 outp(DMA_MaskPort, 5); //sn dma 0..3 outp(DMA_ClearFlipFlop, 0x00); // -lo -hi outp(DMA_ModePort, 0x45); outp(DMA_BaseAddrPort, LO(buf_ofs)); outp(DMA_BaseAddrPort, HI(buf_ofs)); outp(DMA_CountPort, LO(len)); outp(DMA_CountPort, HI(len)); outp(DMA_PagePort, buf_page); outp(DMA_MaskPort, 1); //sn dma 0..3 DSP_Write(0x24); DSP_Write(LO(len)); DSP_Write(HI(len)); } void DMA_FreeMem(void){ farfree(dmabuffer); } Funcciile de intercorelacie _i de autocorelacie Funccia de autocorelacie Funccia de intercorelacie   n program sunt implementate funcciile (2) _i (4) pentru n>=0. Funcciile legate de analiza semnalelor ( funccia de autocorelacie _i intercorelacie ) se afl n fi_ierul analysis.c void Autocorrelation(unsigned char *adat, unsigned int nn, int x, int y, char param){ unsigned char b; unsigned char *ptr,*pxn,*pxn2; unsigned char xk,xn; double suma=0; const per=2; int maxim=0; int vx=x,vy=y,vy_o=0; int k,n; if(param) {fliprectangle(x-1-1,y-127/per-1,x+nn+1,y+128/per+1);return;} ptr=adat; pxn=adat; for(n=0;n127/per)vy=127/per; if(vy<-127/per)vy=-127/per; if(vy>maxim)maxim=vy; // putpixel(vx,y+vy,15); setcolor(15); line(vx,-vy+y,vx-1,-vy_o+y); vy_o=vy; }//n } void Intercorrelation(unsigned char *adat, unsigned int nn, int x, int y, char param){ unsigned char b; unsigned char *ptr,*pxn,*pxn2; unsigned char xk,xn; double suma=0; const per=2; int maxim=0; int vx=x,vy=y,vy_o=0; int k,n; double t=0; double f=200; double A=80; double jel; ptr=adat; pxn=adat; if(param) {fliprectangle(x-1-1,y-127/per-1,x+nn+1,y+128/per+1);return;} for(n=0;n127/per)vy=127/per; if(vy<-127/per)vy=-127/per; if(vy>maxim)maxim=vy; setcolor(15); line(vx,-vy+y,vx-1,-vy_o+y); vy_o=vy; }//n } ĮƮjlnޯ +,VW°-bcd#$d%d&d'dNOPQʱ˱$UVIJ56@BC]i 2XY#$d%d&d'dNOPQYҴӴ>a׵ص>#$d%d&d'dNOPQ%&Mpqrŷ 01Rsθ#$d%d&d'dNOPQ+-.`bdԺܺ`bdhRT̼ܼ#$d%d&d'dNOPQ,lԽcdeoz{+ 2 $d%d&d'dNOPQ#$d%d&d'dNOPQ{ƾھ"#=CNOc- @ $d%d&d'dNOPQϿ޿wwwww+ 2 $d%d&d'dNOPQ- @ $d%d&d'dNOPQ. @ $d%d&d'dNOPQ =Q[eu )7DEP[* 2 $d%d&d'dNOPQ,Gq, 2 jV@$d%d&d'dNOPQ* 2 $d%d&d'dNOPQ/GHWuv* 2 $d%d&d'dNOPQ, 2 jV@$d%d&d'dNOPQ,.`v<>+ 2 $d%d&d'dNOPQ* 2 $d%d&d'dNOPQFi_ierele programului 123.c  program principal sblaster.h sblaster.c mt.c analysis.c dma_mem.c fileio.c Nu toate fi_ierele _i funcciile sunt folosite de programul final din aceste fi_iere. Unele funccii au fost folosite n etapa scrierii, testrii programului. Variabile din program VGAFLIPPAGE  afi_are folosind dou pagini VGA (se poate s nu funccioneze la unele placi VGA) DRAFTMODE  afi_are simplificat pentru imprimant Imagini din program Len=14 Lungimea semnalului din grafic n milisecunde.n acest caz 14ms. 5 -Cadre afi_ate pe secund (fps)  Bibliografie [1] Cursuri [2] Internet [3] TechHelp SOUNDBLASTER  SOUNDBLASTER   2003 UPM AII 1531 Dosa Sandor page  PAGE 2  2003 UPM AII 1531 Dosa Sandor page  PAGE 1 Autor: sani  EMBED Equation.3   EMBED Equation.3   EMBED Equation.3   EMBED Equation.3  (1) (2) (3) (4) Figura 1: bdfj(n  |)$a$^l(*nprtn⠕uqf]qS?S&jhTCJOJQJUmHnHuhTCJOJQJhT5OJQJhT5CJOJQJhThT5OJQJmHsH%jhT5OJQJUmHnHuhT6CJOJQJhT6CJOJQJmHsH)jhT5CJOJQJUmHnHu *hTCJOJQJmHsH *hTCJOJQJmHsHhTCJOJQJmHsHhT5CJOJQJmHsHnp|~ 68:<@BhjlnrtȰĨĔăyĔh^ĔjhTEHU jB hTUVmHnHujhTEHU jB hTUVmHnHujhTUhTmHsHh(hTmHsH&jhTCJOJQJUmHnHuhThTCJOJQJ!h(0JCJOJQJmHnHuhT0JCJOJQJjhT0JCJOJQJU# >@pr^Ⱦٶٶٶٮ٣hT6CJOJQJhTOJQJhTmHsHjhTEHU jB hTUVmHnHuhTjhTUj]hTEHU jB hTUVmHnHu(&P/ =!"#`$ %A 0&P/ =!"#`$ % P03 0&P/ =!"#`$ %00*+ 0&P/ =!"#`$ %A 0&P/ =!"#`$ % P0HH+ 0&P/ =!"#`$ %A 0&P/ =!"#`$ % P0+ 0&P/ =!"#`$ %A 0&P/ =!"#`$ % P0+ 0&P/ =!"#`$ %A 0&P/ =!"#`$ % P0+ 0&P/ =!"#`$ %`!H9=!@H `\xSKPw/6EJQB;ZP1V`NJGqrrpskA.GBݗ{b2@WD=1P +])1+(8~ٴz0. SBɊ5 (֚k{NMxEAW;N O}xbRQEyj;U&UsQĩ <<ޏ`qJ g}O}~NƨLcxN(I_iPu+wsK px/j%7t^/ MNor2CaR$a[`| fs{SL,d4d|Gܰi:?Hm[q. k)~qΪA< 7ϖGLA/+>1_wu <%u `!` dsm|K  `\xSJA]brD,H[}A H#H ?h8;}PFsg1ͷ37s "J 2@#gRD C۶,+ydntZIrk2q:OrJkݩQ^ àsQOc4RܺRZN!ы]t [("[XTaCo({ ^-pNA}ZU~n֚rm46ϕًye5#ܐnC?̰L=Yxðu4Z? ܑ8b'D #N_)'&SDQT6%i?߱kQY d\*^*: t^x^ݠOMܻ'Z!$POX-v "ৎ[`!t}eq7$ @hxSNAsXPP$c &BHd+ YX ZX] +#a9̙aA@ #-TxCDCuE=idƞ.95ͫE= b7yu[7k'z)oZ:($Ō)&gg?Uq^ebCr(7!2'ԙ:sz$;zTzD]O%PVffV*TnNցXYKz-rN:y4y4LH=|e 7t?83:L {xO{.ĿكqN{#ъŚ=\ǍSe6/+s~ u qBg =9V/Zk (ȍ`!)؛r4̨@YxS=O@~m)Ђc*1hBDaqCW0pQW~ :`{W*#z͵sRCQ5HS p.){37|;Z.>c_ct=IGiڃQN{3I|RϟMV(a~%\?KgwJN,4!*Н 1Spꍊ 0fE>n$*8)+3GPNG  IHDR_-gAMA pHYs.#.#x?vYIDATxIr8PdE>"# U+iN!E,S$8cU J)???b44mG^D=tkrbeuy$DgN=6NU&;Sܻb.x|`zbγ\WζIs7_༲2=a<sVΖD|15NSq8>_7^f5\37G{+ٰ^;s꺽&z[wƕ'1Wg6VmԎIn v~u.9q-oDŬzex*O-+l +UXtwgSKxnn\?py\}cxzn-liy!ڝJ;x" mNr"et/N=;\KrYr=-ݑy9۝G6 k;h/Lu[}݋[/g:/yX|{jTo>-݁Zep>.l_V%%i?xWBo޺i4?sS[Y^\L\0\+-ݮ'.ǻl&x6{v̪3& ]Krz~UЋ3K+Ch.]pfá1 pf?M`Ȑ! C@   22d0d`Ȑ! C@   22d0d`Ȑ! C@   22d0d`Ȑ! C@   22d0d`Ȑ! C@   22d0d`Ȑ! C@   22d0d`hjc)c,2~??۶]YpЁ. @asFf۶C;=z rQ? KޗWZCOpgPfg,z%gBmmjf\cK_YG/3csHo;SbDN1dUW%I^W[1A|^]s :\ëET*V/nUժv+3sjrvc^͢s-`06>ip= F~C)4MӶ_Mݶ_?v<^_n6 =sxi-!plQ+XZnsF p|`VN74t"M ٞcr͸沕؇|| wv2Wij;]V{3xt}X~kʄpj85[Ul5vFnem\V =v{ZX^0Wuvk2s02p[ge誧+̕F+JFDjZà<_>@Rެ{{||0;;:1\7=Pm'koSRK 7% C@   22d0d`Ȑ! C@   22d0d`Ȑ! C@   22d0d`Ȑ! C@   22d0d`Ȑ! C@   22d0d`Ȑ! C@   22d0d`Ȑ! C@   22d0d`hjc)c,2d0d`Ȑ! C@   22d0d`Ȑ! C@   22d0d`Ȑ! C@   22d0d`Ȑ! C@   22d0d`Ȑ! C@   22d0d`& /XIENDB`n4)xER_1PNG  IHDR^{4gAMA pHYs.#.#x?v?IDATxIP=K|)%ݏ{U F(!!"|}}5@imﯾȍm.6M/=ށgb4MsEQ[3$8S[.`M|/eIӗ)ɗ./[ڶog:~}s4߆r;MHӷ_~{y}.d|s,t cm5̓HwLc2[nUYNV?x$4-})/iˋžt,zwpA)Wg>C&!vd熅YdaQ+Ŭl ky9/DqB,O;=3DM@ok5 Ѥ/DM@4 Ѥ/DM@4 Ѥ/DM@4 Ѥ/DM@4 Ѥ/DM@4 Ѥ/DM@4 Ѥ/DM@4 Ѥ/DM@4 Ѥ/DM@4 Ѥ/Dm۫wN/{]"8ϪfCs$}2u]' h۶Y[pO22} %`%6PNZ^?d&@]lmֶHҗYʔf:zH^WgOoֶYڧ:f\>OJj@lܸmX  %k>q+qX{^;t5a`êKm9}e_ 1[ߔ U~ ]Jn^ص&Thm]l[ʛ}_-5KpmϼeAnx &ػZҗ`oPɭWN"LATZ@"?U6(y{W M*Yrl]۴;^;g玻8!ڇzs={؎߃9{i7뛭M縋~\ꤕ7ߟQOZ]V)cwҮnؽ1me6v|NZ邳h*߫ Vռ˽Sֶ}iv3iӈR5_f-lk1J.Nj.E+ MN`9uqgߊ{iٰqQ/er+ܿYtq@@ɖ0^UWNs܆f d-U5wӻ^&7:L E00gBjUEom_HCZN-&#v7N^n;[&%ݒH+D۽a0)N,k,d횻٧Mҏn&,)ۇ?'Mzm4yeٗ&QurlUԜ[]8Y3)̡Mu`ū]nWq7BKg¬q _˛[Ekm&o~vf}D}ʊ9Hk})ȪR"TecjuÇj2Wu[n<2w:| }A0~mu> }???&Y^a/8Qh[+I@Z,|*">g|P_JG۶f>2%kiׂ}ɿ};9___Ủ"1x`xI-5ؙN&23G&} jw:H׮C36@e&yZl v qK??_fqҕ,NI5uC^'Amm"?Ux *Nݿ&7='?FHk+x*lWpB՞ܠwgӶx8o~zbzɞKXuj/' ϰ~|c,Z;e:`fޕyc@3{ҩ,*K۫[|aT-{e"?2{`;(>|R?I[ 6gc;wr7\^#yrh\&oluNm9\Viw6Ό~KU9+qwꅷ:Dw868dCmxxN&/,^f߷dԠ(4 HFL2Ņ _]6vn>H J#uy9r~;V67AJV/n8W ,37: K:g<M>ikϕ\ܨ9f! oߌY>{#5+ishnL4:sEy\8r;^&5/;x5. S&{ȓ7z& 3k 6 hI_&} hI_&} hI_&} hI_&} hI_6MӶջu]s;pAG3DM@4 Ѥ/DM@4 Ѥ/DM@4 Ѥ/DM@4 Ѥ/DM@4 Ѥ/DM@4 Ѥ/DM@4 Ѥ/DM@4 Ѥ/DM@4 Ѥ/DzѶu]BJ>tK5MhI ޒ(]s2C<6}W 2QsVn" f7NKBw k_Vu P6[a vaf8&FMNnj0@Y.YxJֹ;0%Z:XPcmVi47N^9*եSӷpܫT"gtN=#cxZ]92*Ut.Ux*WfTRE=q}VҮUovU {<pqU0 i ]yV T7je5m4 eut,)Ę\wi:pڟ.I_{;7z닆+^<\=j̝jlO_ bjpUk`cj :vZZ7aDZMlEj _hf_mäz"xasÏjtoX^{rxa6?dx-a#҃1p/%yH_&} hI_&} hI_&} hI_&} hI_&} hI_&} hI_&} hI_&} hI_&} hI__^?x#M@4 Ѥ/DM@4 Ѥ/DM@4 Ѥ/DM@4 Ѥ/DM@4 Ѥ/DM@4 Ѥ/DM@4 Ѥ/DM@4 Ѥ/DM@4 Ѥ/DM@4 Ѥ/DM@4 IENDB`n c .Gv@b0ԜSPNG  IHDR~]b2gAMA pHYs.#.#x?v -IDATxK8P% KA-Ny}$e B w||~~6Ms۶-n=;^o6Msw~x Tzz΢}&9gB._g>sT)=Sp=pLT>Y-3|Sw;aD4q&vK h0GpQ?ZުWZ>֪_[.މ4?FwaڽTr./oglV]gt0 )e9ι<p6E%_uWfd礧;Sӛ2eyVz\@m~o/c'2unp<|"6RܾSg,<{lEދol׺E g`s830ν^2 QD/DOO ?#{~[Ѐ3D^%z J@( QD/D^%z J@( QD/D^%z J@( QD/D^%z J@( QD/D^%z J@( Qkh"lCpڶv{/5#&ڶZ]v`k={@SvtY2PZ6n]swFO^[WS:6E8uZ5RyrӌkyؽZ#qCUƓds]ci0ucǮ^9{ƢDU7[sY/V;91}B,YǖXc;V ;\t ]no85'qoC:{F]-)vmuJ \ ;=PLl+`~uTWH`Tr^3Yᕪߟ[Y$0Nj/{B^'xن?~#/l̽IK*,Uzgne|xK(a?t|E/ful榗Y6o5ʹe>qs/ʃb:Q_qڼ_۳^ّƺ9<g)GG5ᱪ{:cp=!z?+鎭m[?f*6Q9`q9:gfyuo+ jw7'1&u%P?Վ\XdLxV@ ~ J/>jxu's'=vqCYM\,XD{:ʣlX=}T -HVujէVns]w7WU2p:=[/^IQ_۲]+\ZD~n_m)ϔn9ϗEzigfɻJۯ3]nҖ.6`q٤ zj`m]fe%jyF:Յv;U䂩mWojQŸwgwY]y8[ %tmk^IcM? qrs<#cu-@;g?ݬ0s+KK/ܽ~u3f¯wS3ZΞeGYz&=jme\:K3~NT5<: cg\\E|V7w]jmܢ9l".=UM?8LwEI;ՖMNmDZVsy]̝̻j>Ax/o{6sfd>`cUN?z.ԂruL3-hDo{ ~f2˦qVkps/=‡˔jn{wǚn7>JLQ߲iWUg66u\٬MҼn1OM*g .pO>Wz֏}X$o^o/='1s6Mj*Lw|r 68~ d.;YQo6t}b8%zޏ`d:1/c\CxU!k OO, QD/D^%z J@( QD/D^%z J@( QD/D^%z J@( QD/D^%z J@( QD/D^%z J@( QD/D^6MӶwoĀ3D^%z J@( QD/D^%z J@( QD/D^%z J@( QD/D^%z J@( QD/D^%z J@( QD/D^%z J@( QD/D^%z J@( QD/D^%z J@( QD/D^%z J@( QD/D^%z J@( QD/D^%z J@( QD/D^%z J@( QD/D^%z J@( QD/D^%z J@( QD/D^%z J@( QD/D^%z J@( QD/D^%z J@( QD/D^%z J@( QD/D^%z J@( QD/D^%z J@( QD/D^%z J@( QD/D^%z J@( QD/D^%z J@( QD/D^%z J@( QD/D^%z J@( QD/D^G;IENDB`ncR%&9ވPNG  IHDRn^gAMAPLTEٟ pHYs&?hIDATxݱn6p*EE87l}"@t+ rA= ޠy.[ vT4 GX|IRʿ{8%"KD#]4{)6Jn_/n @ @!TZ[3%c<^͇Ձ,-vy)́;*Iɸ.{~'_.".{$ލ[S7 SuKl%Z! $ r)`8|(,W#DhG:`[4n`YJ< (  nzk(@Vݒ)9|T]Yn;@T*߫b|KXҀm@@[4b9@d  TF :n7$wB|r$h@>  yHD#>]h(WF @`@k  @ "h }Sib́:@pk#>qkf#aЩU }H]:L+}o?0U 9JSHX].w;~4:99uUi:^wtO烙svrU5`} |/wú`foW& :mO[en lK4#(6z@~jcn/ؗ#>}@.|Nj0.9:4%`NP3.6{ i1V;;4`N @ N5`XD^[0jnu2r#X,W^HV(@gK" <ِc6t@n Ѐ)(K*_w ǞaBcPe?(WF !g݇k`j̚c@Vʁj i8@58@m*[aeop0{q+ E + ` 4b  6϶ߜqC\IENDB`Dd3 <  C A? 2 ` dsm|KDn`!` dsm|K  `\xSJA]brD,H[}A H#H ?h8;}PFsg1ͷ37s "J 2@#gRD C۶,+ydntZIrk2q:OrJkݩQ^ àsQOc4RܺRZN!ы]t [("[XTaCo({ ^-pNA}ZU~n֚rm46ϕًye5#ܐnC?̰L=Yxðu4Z? ܑ8b'D #N_)'&SDQT6%i?߱kQY d\*^*: t^x^ݠOMܻ'Z!$POX-v "ৎ[DdH <  C A? 2H9=!n`!H9=!@H `\xSKPw/6EJQB;ZP1V`NJGqrrpskA.GBݗ{b2@WD=1P +])1+(8~ٴz0. SBɊ5 (֚k{NMxEAW;N O}xbRQEyj;U&UsQĩ <<ޏ`qJ g}O}~NƨLcxN(I_iPu+wsK px/j%7t^/ MNor2CaR$a[`| fs{SL,d4d|Gܰi:?Hm[q. k)~qΪA< 7ϖGLA/+>1_wu <%u Dd < b C A? 2)؛r4̨n`!)؛r4̨@YxS=O@~m)Ђc*1hBDaqCW0pQW~ :`{W*#z͵sRCQ5HS p.){37|;Z.>c_ct=IGiڃQN{3I|RϟMV(a~%\?KgwJN,4!*Н 1Spꍊ 0fE>ҕDd < i C A? 2t}eq7$ 5n`!t}eq7$ @hxSNAsXPP$c &BHd+ YX ZX] +#a9̙aA@ #-TxCDCuE=idƞ.95ͫE= b7yu[7k'z)oZ:($Ō)&gg?Uq^ebCr(7!2'ԙ:sz$;zTzD]O%PVffV*TnNցXYKz-rN:y4y4LH=|e 7t?83:L {xO{.ĿكqN{#ъŚ=\ǍSe6/+s~ u qBg =9V/Zk (ȍ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root Entry F0nf Data WordDocument`.ObjectPoolgf0nf_1119092118 FgfgfOle CompObjfObjInfo  !"#$%'()*+- FMicrosoft Equation 3.0 DS Equation Equation.39qӨmIyI xx()=lim T">" 1Tx(t)x(t+)dt oT +"Equation Native _1119091993 FgfgfOle CompObj f FMicrosoft Equation 3.0 DS Equation Equation.39qӨIXoI xy()=lim T">" 1Tx(t)y(t+)dt oT +"ObjInfo Equation Native  _1119092178FgfgfOle  FMicrosoft Equation 3.0 DS Equation Equation.39qӀmIyI xx(n)=1Nx(k)x(k+n) k=1N "CompObjfObjInfoEquation Native _1119092366FgfgfOle CompObjfObjInfoEquation Native  FMicrosoft Equation 3.0 DS Equation Equation.39qӀLII xy(n)=1Nx(k)y(k+n) k=1N "Oh+'0 (1Table.SummaryInformation(DocumentSummaryInformation8&\CompObj,j D P \ ht|<Achiziţii de date cu ajutorul unei interfeţe SOUNDBLASTERchi*****Normal***2*Microsoft Word 10.0@F#@lD@iN@iN9y\՜.+,0, hp   home user 7{lA <Achiziţii de date cu ajutorul unei interfeţe SOUNDBLASTER Title  FMicrosoft Word Document MSWordDocWord.Document.89q8@8 Normal_HmH sH tH DA@D Default Paragraph FontVi@V  Table Normal :V 44 la (k@(No List 4@4 Header  !4 @4 Footer  !.)@. Page Number@Y"@  Document Map-D OJQJ &?Xqv{m      &?Xqv{ @x#-27bhcEjkm*m?b:<=>?@BCNO 23KL"#+,<at !"45'qZ mtuvwx8 d D " i >  _ 6^6}X<7]5 Y1{\7\1x S@f= ` ?!!!"f"""?########$9$e$$$$$$%0%Q%q%%%%%%%&&%&0&h&&&&&&&&8'l'm''''''&(e(f((((((G))))) * **`********+++Y++++,),H,I,_,`,},,,,,,--!---7-I-J-e-q-{--------....?.`.a.b.........'/H/J/K/i///////0'0(0@0X0Y00000000001K11111122:2i222222223 4!474U4n444446677a7774858R88888 9 9T999::&:s:::6;I;J;;;;<F<q<<<=U===>H>>> ?0?R?j????@K@@@ALAAAAABFBBBBBBB7CCCCCCC=DDDDDDD7EEE FAFtFuFFGRGlGmGGHHFHGHHHHHI>IlIIIIJMJJJ)KpKKKKLL7L8LVLWLLLLBMMMMMN\NNNNBOvOOOOCPPP!QjQkQQQ7R{RRRS%SrSS TVTTT!U"UhUUUUV;VpVVV W(WEWbWWWWWWX;XXXXXXX>Y?Y@YfYxYYYYYYZZ7ZJZKZlZZZZZZZ[[B[S[T[w[[[[\M\\\\\\\\\]?]l]]]]] ^8^[^\^}^^^^^ _$_B_`_a______```+`m`n`````````!aNamaaaaaaabDbEbWblbbbbbbbbbbbbbbcc!c%cgchcickccc dd%d-d;dMdmddddddddeee&e1e2eDeGeOeWebemete}eeeeeeeeeeeefff6fTflfffffffffffggg,g>g^gtgggggggggggggghh[h\h]hphsh{hhhhhhhhhh(iEi[i_ilimiiiiiiiiiiiij,j-j7j8j9j@jBjCjDjEj[j\jujjjjjjjjLkMkckdkkkkkkllYl|lllllllllllllmm m m=m>m?mKmLmdmem}m~mmmmmmmmmmmmmmmm0000000000C0C 0C 0C0C003030300#00,0,0,0,0,0,0,0,0,0,00"0" 0" 0" 0"0"0"0"0"0"0"0"0"0"0" 0" 0" 0"0"0"0"0"0"0"0"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0 0% 0% 0% 0% 0%0%0%0%0%0%0 0& 0&0&0&0&0&0&0 0' 0'0'0'0'0'0'0 0( 0(0(0(0(0(0(0 0 * 0 *0 *00*0*000*0*0 0+ 0+ 0+ 0+ 0+ 0+ 0+0+00I,0I,000,0,00,0,0,000--0--0--000q-0q-0q-0q-0q-0q-0q-0q-0q-0q-0q-0q-0q-0q-0q-0q-0q-0q-0q-0q-0q-0q-0q-0q-0q-0q-0q-0q-0q-00/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/ 0/ 0/ 0/ 0/ 0/ 0/ 0/0000M90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000M9000000M90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000M900000000000000000M900000000000@0@0My0@0@0My0@0@0@0My0@0@0@0My0  0M90M90M90M90M90M90M90M90M900M900M900M900M900pM90M90 VDGln;BKstvX "*?159P?*DGIJOW{\ra`ei.n tY{<>?@ACDEFGHIJLMNOPQRSTUbcdefghijklmru=JQS!t!t !#&:<?SUXln::::  b$S潲 Xragp2$H9=!2$` dsm|K2$t}eq7$2$)؛r4̨eb$$*8)+3GEb$4)xER_1b$VFXqJM b$cR%&9ވo(@ (  bB  c $D>" bB  c $D>"bB  c $D>" bB  c $D>"H(  bB  c $D>" P   " \  S A ?" \  S A ?"V  C A ?" \   S  A ?" h   C  #"  \   3 "  \   3 " \   3  "   r  C 4Aautocorelatie" t  C 6Aintercorelatie" h  C *Awaveform"^  C A can"\  3  "  B S  ?:@xybcc!c"c#c%c&ck|l~lm0*t$TP")~ t. 4 .P`0l3 4z#r4 pt 4!r4 4 0t t)w4)g.4)4 !W:0*:u:0*:uP0*PuP0*Pu OLE_LINK1 OLE_LINK2ammmbmmmlllm2mm?mm****************************** 2! H)<, CKF/ /B wF ~rW ?k oo T"w "@z  hh^h`OJQJo(hh^h`.hh^h`.hh^h`. hh^h`OJQJo(hh^h`.hh^h`. hh^h`OJQJo(hh^h`.hh^h`. oowF2!/B~rW"@zH)<,T"wCKF/?k (Tl>m?mm@<<<<0#$&()*+,-347WXYbdEjmPPPPPPP0@P4P6P:P>P@PBPDPFP@PNPPP@PX@PP`@PP|@PUnknownGz Times New Roman5Symbol3& z Arial?5 z Courier NewO1 CourierCourier New5& z!Tahoma#1hm|m|;w&9y\79y\7"4d{l{l3H(?(9Achizicii de date cu ajutorul unei interfece SOUNDBLASTER******4