Section courante

A propos

Section administrative du site

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

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 :

Voici un exemple en Turbo Pascal pour détecter la Sound Blaster 16 :

  1. Program ISSB16;
  2.  
  3. Uses Crt;
  4.  
  5. Const
  6.  SB_BASE=$220;  { Adresse de base par défaut pour Sound Blaster }
  7.  DSP_RESET_PORT=SB_BASE+$06;  { Port de reset du DSP }
  8.  DSP_READ_PORT=SB_BASE+$0A;   { Port de lecture du DSP }
  9.  DSP_WRITE_PORT=SB_BASE+$0C;  { Port d'écriture du DSP }
  10.  DSP_STATUS_PORT=SB_BASE+$0E; { Port de statut du DSP }
  11.  
  12. { Envoie un reset à la carte Sound Blaster }
  13. Procedure ResetSB16;Begin
  14.  Port[DSP_RESET_PORT]:=1; { Envoi du signal de reset }
  15.  Delay(10);               { Petit délai }
  16.  Port[DSP_RESET_PORT]:=0; { Fin du reset }
  17.  Delay(10);
  18. End;
  19.  
  20.  { Lit un octet depuis le port du DSP (Digital Signal Processor) }
  21. Function ReadDSP:Byte;Begin
  22.  While(port[DSP_STATUS_PORT] and $80)=0 do;  { Attente que le DSP soit prêt }
  23.  ReadDSP:=Port[DSP_READ_PORT];
  24. End;
  25.  
  26.  { Vérifie si une Sound Blaster est présente en envoyant un reset et en vérifiant la réponse }
  27. Function DetectSB16:Boolean;Begin
  28.  ResetSB16;
  29.  If ReadDSP=$AA Then  { $AA est la réponse typique d'une Sound Blaster après un reset }
  30.   DetectSB16:=True
  31.  Else
  32.    DetectSB16:=False;
  33. End;
  34.  
  35. { Lit la version DSP de la Sound Blaster }
  36. Function GetDSPVersion:Word;
  37. Var
  38.  VersionMajor,VersionMinor:Byte;
  39. Begin
  40.   port[DSP_WRITE_PORT]:=$E1;  { Commande pour obtenir la version DSP }
  41.   VersionMajor:=ReadDSP;
  42.   VersionMinor:=ReadDSP;
  43.   GetDSPVersion:=(VersionMajor shl 8) or VersionMinor;  { Version en format majeur.minor }
  44. End;
  45.  
  46. BEGIN
  47.  If DetectSB16 Then Begin
  48.   WriteLn('Sound Blaster détectée.');
  49.   WriteLn('Version DSP : ',GetDSPVersion shr 8, '.',GetDSPVersion and $FF);
  50.  End
  51.   Else
  52.  WriteLn('Sound Blaster non détectée.');
  53. END.

Voici les explications du code :

Voir également

Programmation - Sound Blaster - Accueil

Dernière mise à jour : Dimanche, le 10 septembre 2017