MILC logo

IndexVorigeVolgendeLeeg

Muziekmodule: sampling
Arsoft, 01-09-94


    
   Digitale signaal-verwerking (sampling)
   ---------------------------------------------------------------------------
   Voor de volgende registers geldt dat het registernummer gelijk is aan het 
   adres. Aansturen dmv.: OUT &HC0,<adres>: OUT &HC1,<getal>.

   register 1: dit register is alleen voor fabricagetest bestemd. 
               Niet gebruiken!

   register 2: Timer-1 preset
               In dit register wordt de beginwaarde N1 voor timer-1 gezet.

   register 3: Timer-2 preset
               In dit register wordt de beginwaarde N2 voor timer-2 gezet.

   register 4: Timer en Flag control
               bit 0: "1" start en "0" stopt timer-1
               bit 1: "1" start en "0" stopt timer-2
               bit 2: is niet in gebruik
               bit 3: "1" maskeert de Buffer-Ready vlag
               bit 4: "1" maskeert de End Of Sample vlag
               bit 5: "1" maskeert de Timer-2 vlag
               bit 6: "1" maskeert de Timer-1 vlag
               bit 7: "1" reset alle vlaggen
               Bij inschakelen worden de Buffer Ready en de End of Sample vlag 
               al gemaskeerd.

   register 5 en 6: Keyboard. (zie externe keyboard aansluiting)

   register 7: ADPCM-besturing
               bit 0: RESET; "1" reset de gekozen ADPCM-functies
               bit 1,2 en 3 zijn niet in gebruik
               bit 4: REPEAT; "1" herhaalt weergave van begin- tot eindadres
               bit 5: MEMORY; "1" om gebruik te maken van het geheugen in de 
                      module.
               bit 6: RECORD; "1" voor opnemen, "0" voor weergeven
               bit 7: START; "1" start het opnemen of weergeven
               Een andere functie kan pas worden gekozen na een RESET

                Toepassingen:
                -----------------------------------------------
                R(7)  functie:
                -----------------------------------------------
                &H20  Samples van module naar computergeheugen
                &H60  Samples van computergeheugen naar module
                &H80  Weergave vanuit het computergeheugen
                &HA0  Weergave vanuit de module
                &HC0  Opname in het computergeheugen
                &HA0  Opname in module
                -----------------------------------------------

   register 8: diverse instellingen
               bit 0: ROM; "1" voor ROM en "0" voor RAM geheugen in de module
               bit 1: 64K; "1" voor 64kbit en "0" voor 256kbit RAM-chips
               bit 2: DA/AD; "1" voor DA conversie, "0" voor AD conversie
               bit 3: SAMPLE; "1" start en "0" stopt de AD/DA-conversie
               bit 4-6: niet in gebruik
               bit 7: CSM; "1" stelt de Composite Sinusoidal Mode in (?)
               De muziekmodule bevat een chip van 256kbit RAM, dus bit 0 en 1 
               moeten altijd op "0" worden gezet. Voor de ADPCM methode moet de 
               rest ook "0" zijn.

               Directe AD en DA-conversie, dus PCM kan als volgt ingesteld 
               worden:

               opname  :  OUT &HC0,8: OUT &HC1,8
               weergave:  OUT &HC0,8: OUT &HC1,12

               Deze methode kan alleen met opslag in het computergeheugen 
               gebruikt worden. Registers 9 tot 12 hoeven daarom niet te worden 
               ingesteld. Via registers 13 en 14 wordt de samplesnelheid 
               ingesteld, zowel voor opname als weergave. Registers 16 en 17 
               hoeven dan dus ook niet te worden ingesteld. Het bufferegister 
               voor transport van de gegevens in nu register 26. Bij weergave 
               kunnen de gegevens ook direct naar de DAC (register 21 tot 23) 
               gestuurd worden. Voor dit alles is dus wel een machinetaal 
               routine nodig die het transport tussen de module en de computer 
               verzorgd.

   register 9 en 10: startadres
               Deze registers stellen het beginadres in waar de gegevens staan 
               in het RAM-geheugen van de module. De 256kbit RAM wordt 
               geadresseerd in blokjes van 32 bits. Daar zijn er dus 256k/32 is 
               8K (&H2000) van. De adressen lopen daarom van &H0000 tot &H1FFF.
               In register 9 komt het lage byte (ADRES MOD 256) en in register 
               10 het hoge byte (ADRES\256).

   register 11 en 12: eindadres
               Deze registers geven het hoogste adres aan dat voor de conversie 
               gebruikt wordt, en wel op dezelfde manier als bij het 
               startadres. Register 11 is voor het lage byte en register 12 
               voor het hoge byte. Het eindadres moet altijd hoger zijn dan het 
               beginadres. 

   register 13 en 14: prescaler
               In deze registers wordt een getal N opgeslagen, waarmee de 
               samplefrequentie Fs wordt bepaald door de klokfrequentie van 
               3580 kHz te delen door N. Dit geldt zowel voor AD- en 
               DA-conversie als voor ADPCM-opname. (voor weergave zie verderop) 

                 Fs = 3580/N kHz  en  N=3580/Fs

               Voor het getal N zijn 11 bits beschikbaar. 8 bits voor N MOD 256 
               in register 13, plus 3 bits voor N\256 in register 14. De 
               maximum samplefrequentie is 16 kHz, het minimum is 1,8 kHz.

                 Tabel 5.  Opname frequenties & prescaler
                +-------------+-------+--------+---------+
                | Opnamefreq. |   N   |  R(13) |  R(14)  |
                +-------------+-------+--------+---------+
                |   1,8 kHz   | &H7FF |  &HFF  |    7    |
                |     3 kHz   | &H4A9 |  &HA9  |    4    |
                |     6 kHz   | &H254 |  &H54  |    2    |
                |    10 kHz   | &H166 |  &H66  |    1    |
                |    16 kHz   | &H0E1 |  &HE1  |    0    |
                +-------------+-------+--------+---------+

   Register 15: ADPCM-data
               Dit register wordt als buffer gebruikt voor overdracht van 
               ADPCM-data van en naar de computer. Het kan zowel gelezen als 
               beschreven worden. elke byte bevat twee ADPCM-samples, die 
               immers 4 bits bevatten. Als de vier hoge bits sample "n" 
               bevatten, dan staat in de vier lage bits sample "n+1".

   register 16 en 17: ADPCM-weergave
               De inhoud van de registers bepalen de snelheid van ADPCM 
               weergave. Die is op een wat andere manier gecodeerd dan bij 
               opname, wat te maken heeft met de hogere snelheden die bij 
               weergave mogelijk zijn en met de interpolatie naar 50kHz die bij 
               ADPCM-weergave wordt toegepast. De samplefrequentie volgt uit:

                 Fs=M/1311 kHz  en  M=1311*Fs

               Het getal M wordt als volgt in de register 16 en 17 opgeslagen:
               M MOD 256 in register 16 en M\256 in register 17. Enige 
               voorbeelden: 

                 Tabel 6.  ADPCM-weergave
                +----------+--------+-------+-------+
                | Weergave |    M   | R(16) | R(17) |
                +----------+--------+-------+-------+
                | 1,8 kHz  | &H08F4 | &HF4  | &H08  |
                |   3 kHz  | &H0F5D | &H5D  | &H0F  |
                |   6 kHz  | &H1EBA | &HBA  | &H1E  |
                |  10 kHz  | &H3336 | &H36  | &H33  |
                |  16 kHz  | &H51F0 | &HF0  | &H51  |
                |  50 kHz  | &HFFFF | &HFF  | &HFF  |
                +----------+--------+-------+-------+

   register 18: volume ADPCM-weergave
               Dit register bevat de geluidssterkte van de ADPCM-weergave, die 
               in 256 stappen geregeld kan worden. Maximum volume voor &HFF, 
               minimum voor 0. 

   register 19 en 20: ADPCM
               Deze twee registers bevatten tussenresultaten van de 
               ADPCM-codering en -decodering. Verder zijn er geen gegevens over 
               bekend. 

   register 21,22 en 23: DAC-data
               In deze registers moeten de gegevens gezet worden voor 13-bit 
               DA-conversie. Van register 21 worden alle 8 bits gebruikt, van 
               register 22 alleen de twee hoogste bits. Van register 23 worden 
               de drie laagste bits gebruikt als exponent. De uitgangsspanning 
               V wordt als volgt berekend:

                 V=((R(21)+R(22)/256)/256)/2^R(23))

               Register 21 moet als laatste gevuld worden. Start de 
               DA-conversie (met bit 3 van register 8) pas na het vullen van 
               deze registers! Om 8-bits data te converteren, hoeft alleen 
               register 21 gevuld te worden. Maar dan kan natuurlijk ook de 
               andere AD-converter gebruikt worden.  

   register 24 en 25: Outpout control
               Deze registers (&H18 en &H19) zijn al eerder ter sprake gekomen. 
               Ze dienen voor het aan- en uitzetten van de uitgangssignalen. De 
               uitgang van de DAC's is dezelfde als die voor de muziek, en wel 
               IO-3, te kiezen door het getal 8(=2^3) in register 24 te zetten. 
               Het in- en uitschakelen gaat via register 25. Bij opname moet 
               de uitgang uitgeschakeld zijn anders gaat de versterker 
               rondzingen. 
           
   register 26: PCM-data
               Dit is een bufferregister voor het transporteren van gegevens 
               voor DA- en AD-conversie, die hierin opgeslagen worden in 
               twee-complement vorm. In dit register kan zowel gelezen als 
               geschreven worden. 

    

Index

Vorige

Volgende