Introduction
La carte de son Sound Blaster 16 du fabricant Creative Labs est la carte succédant à la carte de son Sound Blaster Pro.
Fiche technique
Voici les caractéristiques de la carte de son «Sound Blaster 16» de Creative Labs :
Spécification | Description |
---|---|
Fabricant | Creative Labs |
Date de conception | 1992 |
Modèle | CT2940 |
Nombre de transistors | 100 000 |
Sortie | 16 bits stéréo, 44,1 kHz |
Architecture | ISA |
Les ports d'entrée/sortie
Le DSP intégré à la carte de son Sound Blaster 16 prend en charge la lecture et l'enregistrement audio dans des échantillons codés PCM en 8 bits et 16 bits, ainsi que la lecture de plusieurs autres formats (ADPCM,...). L'adresse de port d'entrée/sortie de base peut être trouvée à l'aide du bus PCI pour les modèles PCI ou en détectant la présence d'une Sound Blaster dans une architecture ISA plus ancien en émettant une commande de demande de version vers l'une des adresses de port d'entrée/sortie courantes (0220h, 0240h, 0260h ou 0280h) et en attentant une réponse.
Port | Description |
---|---|
0226h, 0246h, 0266h ou 0286h | Ce port permet de réinitialiser le DSP. |
022Ah, 024Ah, 026Ah ou 028Ah | Ce port permet d'effectuer une lecture dans le DSP. |
022Ch, 024Ch, 026Ch ou 028Ch | Ce port permet d'effectuer une écriture dans le DSP. On peut également écrire dans ce port pour demander l'état d'écriture. |
022Eh, 024Eh, 026Eh ou 028Eh | Ce port permet d'effectuer une lecture d'état du DSP. |
022Fh, 024Fh, 026Fh ou 028Fh | Ce port permet d'effectuer un accusé de réception d'interruption DSP en 16 bits. |
Remarques
- Adresse de base : Comme pour les autres modèles, l'adresse de base par défaut est souvent 220h, mais cela peut être configuré à d'autres valeurs comme 240h ou 260h. Vous pouvez ajuster cela si nécessaire.
- Ports : La Sound Blaster 16 utilise toujours les mêmes ports de base que ses prédécesseurs pour la réinitialisation et la lecture du DSP.
- Version DSP : La version DSP est une bonne indication que vous travaillez avec une Sound Blaster 16, car les versions antérieures de Sound Blaster (1.0 à 2.x) n'auront pas la même version DSP. Par exemple, une SB16 typique pourrait avoir un DSP en version 4.xx.
Programmation
La détection d'une Sound Blaster 16 en Turbo Pascal peut être réalisée de manière similaire à celle des versions antérieures de Sound Blaster, mais il y a quelques éléments spécifiques à prendre en compte, notamment le port d'identification de la SB16.
Pour détecter une Sound Blaster 16, il faut toujours suivre les étapes de base :
- Envoyer une commande de réinitialisation à l'adresse de base.
- Vérifier le port d'état pour voir si la carte répond avec la bonne signature (habituellement $AA après la réinitialisation).
- Vérifier la version DSP pour confirmer qu'il s'agit bien d'une Sound Blaster 16.
Voici un exemple en Turbo Pascal pour détecter la Sound Blaster 16 :
- Program ISSB16;
-
- Uses Crt;
-
- Const
- SB_BASE=$220; { Adresse de base par défaut pour Sound Blaster }
- DSP_RESET_PORT=SB_BASE+$06; { Port de reset du DSP }
- DSP_READ_PORT=SB_BASE+$0A; { Port de lecture du DSP }
- DSP_WRITE_PORT=SB_BASE+$0C; { Port d'écriture du DSP }
- DSP_STATUS_PORT=SB_BASE+$0E; { Port de statut du DSP }
-
- { Envoie un reset à la carte Sound Blaster }
- Procedure ResetSB16;Begin
- Port[DSP_RESET_PORT]:=1; { Envoi du signal de reset }
- Delay(10); { Petit délai }
- Port[DSP_RESET_PORT]:=0; { Fin du reset }
- Delay(10);
- End;
-
- { Lit un octet depuis le port du DSP (Digital Signal Processor) }
- Function ReadDSP:Byte;Begin
- While(port[DSP_STATUS_PORT] and $80)=0 do; { Attente que le DSP soit prêt }
- ReadDSP:=Port[DSP_READ_PORT];
- End;
-
- { Vérifie si une Sound Blaster est présente en envoyant un reset et en vérifiant la réponse }
- Function DetectSB16:Boolean;Begin
- ResetSB16;
- If ReadDSP=$AA Then { $AA est la réponse typique d'une Sound Blaster après un reset }
- DetectSB16:=True
- Else
- DetectSB16:=False;
- End;
-
- { Lit la version DSP de la Sound Blaster }
- Function GetDSPVersion:Word;
- Var
- VersionMajor,VersionMinor:Byte;
- Begin
- port[DSP_WRITE_PORT]:=$E1; { Commande pour obtenir la version DSP }
- VersionMajor:=ReadDSP;
- VersionMinor:=ReadDSP;
- GetDSPVersion:=(VersionMajor shl 8) or VersionMinor; { Version en format majeur.minor }
- End;
-
- BEGIN
- If DetectSB16 Then Begin
- WriteLn('Sound Blaster détectée.');
- WriteLn('Version DSP : ',GetDSPVersion shr 8, '.',GetDSPVersion and $FF);
- End
- Else
- WriteLn('Sound Blaster non détectée.');
- END.
Voici les explications du code :
- Réinitialisation de la carte (ResetSB16) : Envoie un signal de réinitialisation au port associé à la Sound Blaster, puis attend pour voir si elle répond.
- Lecture du DSP (ReadDSP) : Après la réinitialisation, le programme attend que le bit 7 du port de statut soit mis à 1 (indiquant que le DSP est prêt à répondre) et lit ensuite la valeur de la réponse du DSP. La réponse attendue après une réinitialisation réussi est $AA.
- Détection (DetectSB16) : Si la réponse du DSP est $AA, cela signifie que la carte Sound Blaster est présente et fonctionne correctement.
- Version DSP (GetDSPVersion) : Envoie la commande $E1 pour demander la version du DSP de la Sound Blaster, étant une manière typique de confirmer la présence d'une Sound Blaster 16. La version est ensuite lue et affichée sous la forme majeur.minor.
Voir également
Programmation - Sound Blaster - Accueil