From aw4@irz.inf.tu-dresden.de Wed Nov  2 17:58:20 1994
From: aw4@irz.inf.tu-dresden.de
Subject: Re: Informationen - lechz :)
To: sbor0087@rz.uni-hildesheim.de (Steffen Borm)
Date: Wed, 2 Nov 1994 15:01:20 +0100 (MET)
Content-Transfer-Encoding: quoted-printable
X-Mailer: ELM [version 2.4 PL23]
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
Content-Length: 8142

Ich habs endlich geschafft, mal an die Diskette zu denken: Hier ist,
was ich ueber die Ports weiss:


1. Host-Interface
Die Uebertragung von Daten-, Programm-, Steuer- und Status-
informationen zwischen der Host-CPU und dem DSP werden von den
sprachbezogenen BIOS-Erweiterungen ausgefuehrt. Dabei werden die
Port-Register des Host-Interfaces im I/O-Adressbereich 0x350 bis
0x357 verwendet.

2. Vocoder-Betrieb
Alle Vocoder verwenden die Register des Host-Interface-Ports wie
folgt:

350  HDR0 W    Control Byte
351  HDR1 R/W  Program ID
352  HDR2 R    Data to Host
353  HDR3 W    Data from Host
354  HDR4 R/W  Gain Control
355  HDR5 W    Timed Interrupt Control
356  HSR6 R    Host Data Status
357  HSR7 R    DSP Data Status

Das Schreiben in die Status-Register HSR6 und HSR7 sollte
generell nicht durch Applikationen geschehen. Im ADSP-2111 User's
Manual sind moegliche Ausnahmen und ebenso die Boottime-Defini-
tions der HIP-Register beschrieben.

Control-Byte:
0    Rec
1    Play
2    HIP
7    AGC/AVC

AGC/AVC zeigt an, ob der DSP die AGC (automatische Verstaer-
kungsregelung) vom Codec waehrend der Aufnahme und die AVC
(automatische Lautstaerkeregelung) waehrend der Wiedergabe
beeinflusst. Bei gesetztem Bit koennen AGC bzw. AVC wirksam werden,
was nur bei gesetztem Rec- bzw. Play-Bit geschieht.
     Waehrend Halbduplex-Betrieb (entweder Aufnahme oder Wie-
dergabe) zeigt ein gesetztes HIP-Bit an, dass der Host-Interface-
Port Quelle bzw. Ziel der Daten ist (anstelle des seriellen Ports
des DSP).Diese Auswahl wird benutzt, um hosteigene PCM-Daten in
ein anderes Format zu wandeln (waehrend der Aufnahme) oder
umgekehrt (waehrend der Wiedergabe). Der DSP generiert immer, wenn
er bereit ist, einen Datenblock zu empfangen, einen Interrupt im
Host (IRQ2). Der Host schreibt dann (normalerweise ueber die
erweiterte BIOS-Funktion 44C5h) den Datenblock byteweise nach
HDR3.
     Bis zum naechsten Interrupt liest der Host (normalerweise
ueber die erweiterte BIOS-Funktion 44C4h) dann einen Block
uebersetzter Daten byteweiseaus HDR2.Man beruecksichtige, dass das
Bit nur dann wirkt, wenn Rec oder Play gleichzeitig gesetzt ist.
Die Groesse der Datenbloecke haengt von deren Kodierung ab und wird
spaeter erlaeutert. Da die I/O-Geschwindigkeit nicht an den Codec
gebunden ist, ist dieser Betrieb nicht auf Echtzeit beschraenkt.
     Waehrend Vollduplex-Betrieb (Aufnahme und Wiedergabe
gleichzeitig aktiv) ermoeglicht ein gesetztes HIP-Bit die
gleichzeitige Ein-/Ausgabe zum Host-Interface-Port neben der PCM-
Ein-/Ausgabe zum SPort. Das Protokoll fuer diese Ausgabe wird
weiter unten beschrieben. Ist das Bit geloescht, dann bewirkt der
Vollduplex-Betrieb nur SPort-Ein-/Ausgabe. Zur Zeit, da dieses
Dokument erstellt wurde, ist diese Funktionalitaet nicht im-
plementiert.
     Gesetztes Rec-Bit (Aufnahme) aktiviert den Encoder-Teil des
aktuellen Coders, der in den DSP-Programmspeicher geladen wurde.
Sind HIP und Play geloescht, dann wird im Host ein Interrupt
(IRQ2) ausgeloest, sobald der DSP einen Block senden kann. Der
Mindestabstand zwischen den Interrupts betraegt 40 ms. Dieser
Block wird gewoehnlich ueber die erweiterte BIOS-Funktion 44C4h
gelesen aus HDR2. Die Blockgroesse wird wiederum spaeter in diesem
Abschnitt behandelt.
     Gesetztes Play-Bit (Wiedergabe) aktiviert den Decoder-Teil
des aktuellen Coders im DSP-Speicher. Ist das Rec-Bit geloescht,
dann wird im Host ein Interrupt (IRQ2) ausgeloest, sobald der DSP
einen neuen Block aus HDR3 lesen kann (gewoehnlich ueber die
erweiterte BIOS-Funktion 44C5h).
     Die Blockgroesse der Uebertragenen Daten haengt von der
Kodierung der Daten ab:
(nicht groesser als 320 Bytes)
     Die BIOS-Funktion 44C1h (Programm in DSP-Speicher laden)
stellt auch die Programminformation in HDR1 zur Verfuegung, wie
sie im Register DL als Program-Selector uebergeben wurde.
     HDR2 wird zur Datenuebertragung vom DSP zum Host waehrend der
Aufnahme genutzt. HDR3 wird waehrend der Wiedergabe zur Datenueber-
tragung vom Host zum DSP verwendet.
     Die Verstaerkungsregelung in HDR4 wird von jedem Vocoder zur
Boot-Time initialisiert und anschliessend von den AGC- und AVR-
Routinen modifiziert, wenn sie im Aufnahme-, Wiedergabe- oder
Echo-Betrieb aktiviert sind, damit die Verstaerkung nahe der
Saettigungsgrenze gehalten wird, aber keine Uebersaettigung
auftritt. Die Host-CPU kann dieses Register jederzeit zur
Bestimmung der aktuellen Pegel lesen (waehrend des AGC/AVC-
Betriebes. Wird das Register von der AGC/AVC-Routine modifiziert,
dann ist die Wirkung unmittelbar.
     Die Voreinstellung der Vertaerkungspegel, wie sie bei der
Initialisierung des Vocoders festgelegt werden, koennen vom Host
geaendert werden, indem ein neuer Wert nach dem Booten des DSP in
HDR4 geschrieben wird. In diesem Falle wird der neue Wert bei der
naechsten Aufnahme, Wiedergabe oder Echo-Operation aktiv. Ein
Reboot des DSP setzt diese Einstellung auf den Default-Wert
zurueck. Man beachte, dass die Verstaerkungseinstellung durch den
Host nur anfaenglich ist. Sie wird wahrscheinlich spaeter von der
AGC/AVC-Routine wieder geaendert.
     Das Format von Gain-Control (HDR4):

Bit
7    SCH, immer 1 (ausser spec. XT-Bus)
6-4  ogain     Verstaerkung
     111         2   6 dB
     110         4  12 dB*
     101         8  18 dB
     100        16  24 dB
     011        32  30 dB
     010        64  36 dB
     001       128  42 dB
     000       256  48 dB
3-2  reserviert
1-0  igain     Verstaerkung
     11         63  36 dB*
     10        6.3  16 dB
     01        200  46 dB
     00         20  26 dB
*default

SCH muss immer gesetzt sein, fuer jede Hardware ausser fuer einen
einzelnen XT-Bus-einfuegbares DSP-Board mit altem Codec. Dieses
Board wurde fuer zeitige Softwareentwicklung genutzt.
     OGain setzt die Verstaerkung des digitalen Verstaerkers, der
zum Decoder-Output jedes Vocoders gehoert. IGain setzt die analoge
Aufnahmeverstaerkung.
     Die zeitgesteuerten Interrupts (Timed Interrupt Control) in
HDR5 werden benutzt, wenn weder Aufnahme noch Wiedergabe laeuft
und im Host periodische Interrupts ausgeloest werden sollen
(IRQ2). Der zeitliche Abstand zwischen den Interrupts wird durch
das Byte bestimmt, welches in HDR5 geschrieben wird.
     Jeder Wert groesser null bedeutet ein Vielfaches von 40 ms.
Eine Null loest einen einzelnen Interrupt aus (und verbietet dann
die Interrupts). Periodische Interrupts werden von FF und RW der
Speech TSR benutzt, um die LCD-Routinen anzusteuern. Sie werden
auch benutzt, um den Status von kritischen DOS-Abschnitten zu
pollen, waehrend eine externe Taste gedrueckt wurde.
     Die Status-Register HSR6 und HSR7 sind hardwaremaessig
festgelegt; Details werden im ADSP-2111 User's Manual behandelt.
Sie werden in erster Linie fuer die Synchronisation der Datenueber-
tragung zwischen Host und DSP verwendet.

3. DSP Selbsttest-Betrieb
Die Host-Interface-Port(HIP)-Datenregister sind fuer den
Selbsttest wie folgt definiert:

350  HDR0 W    Control Byte
351  HDR1 R/W  Memory Result 1
352  HDR2 R    Memory Result 2
353  HDR3 R    Memory Result 3
354  HDR4 R    Program Control Result
355  HDR5 R    Compression Unit Result

Wenn der Selbsttest geladen ist, dann stehen mehrere Subtests zur
Verfuegung, die ausgefuehrt werden, wenn ein Selektor in das HDR0
ausgegeben wird. Diese Selektoren sind:

00 - Abbruch einens moeglicherweise laufenden Tests.
01 - interner Test
02 - Interface-Test
03 - Codec-Test
04 - interaktiver Host-Interface-Port-Test (HIP)
05 - interaktiver Memory-Test
06-FF reserviert

Selbsttaetige Beendigung nicht-interaktiver Tests kann durch
Abfrage des HDR0 festgestellt werden. Nach vollstaendigem Test
steht in HDR0 eine Null. Interaktive Tests werden nur durch die
Host-CPU beendet, indem ein Nullselektor in HDR0 geschrieben
wird.
     HDR1 bis HDR5 werden zur Rueckgabe von Testergebnissen an die
Host-CPU verwendet und im Falle interaktiver Tests zur Steuerung
der Subtests. Die Verwendung dieser Register haengt vom aufgerufe-
nen Subtest ab.
-- 
Andreas Westfeld
--
Albeite floehlich ohne Mullen und Knullen.
Und immel dalan denken: Albeit macht Fleude!

Internet: westfeld@inf.tu-dresden.de

