10.8.94
Signalprozessor-Karte mit dem TMS320C25
Version 2
Jürgen Hasch,DG1SCR@DB0RBS.#BW.DEU.EU
Hardwarebeschreibung
Signalprozessor
TMS320C25
16-Bit Prozessor mit 64KW (kilo Worten) Adress- und
Datenspeicher
40MHz Taktfrequenz, damit minimale
Befehlszykluszeit 100ns (ohne Waitstates)
Speicher
32 KW
statisches RAM (25ns Zugriffszeit), 0 Waitstates
32 KW EPROM
(120ns Zugriffszeit), 1 Waitstate
Schnittstellen
8
digitale Eingänge (74HCT245)
8 digitale Ausgänge
(74HCT574)
serielle Schnittstelle (RS232) durch UART 16C550 mit
FIFO-Puffer realisiert
Anschluß für LCD-Anzeige
Analogwandler
Stereo-Codec
CS4215 mit zwei analogen Ein- und Ausgängen
maximale
Wandlungsfrequenz für AD/DA-Wandler: 48kHz
Wandlungstakt
umschaltbar mit zwei Quarzen mit mehreren
Teilerfaktoren
Ein-/Ausgangsfilter, Eingangsverstärker sowie
Ausgangsabschwächer
Versorgungsspannung +5V.
Der Signalprozessor TMS320C25 von Texas Instruments ist ein Vertreter der zweiten Generation von TI-Signalprozessoren und Nachfolger des TMS32020. Es ist ein 16-Bit Mikroprozessor nach Havard-Architektur, mit einem 64KW großen in Daten- und Programmspeicher getrennten Adressraum. Im verwendeten Design sind Daten- und Programmspeicher im externen RAM zusammengelegt.
Der Prozessor ist für Aufgaben der digitalen Signalverarbeitung optimiert und erreicht bei einem Takt von 40MHz eine Befehlszykluszeit von 100ns (ohne Waitstates). Dies ergibt eine Rechenleistung von bis zu 10 MIPS (million instructions per second).
Als Rechenwerke enthalten sind eine 32 Bit-ALU (Arithmetic Logic Unit) mit der verschiedene Rechenoperationen im Zweierkomplement ausgeführt werden können, sowie eine Multipliziereinheit und ein Schieberegister. Zusätzlich sind noch ein Zeitgeber, 256 Worte RAM und 4KW ROM vorhanden. Das ROM wird jedoch nicht benutzt (microprocessor mode).
Eine genaue Beschreibung des Prozessors ist in [1] zu finden.
Die Peripheriebausteine werden mit eigenen I/O-Befehlen (IN, OUT), jedoch über die normalen Daten- und Adressleitungen angesprochen. Es wird nur ein Adressraum von 16 Worten (A0-A3) ausdekodiert, die restlichen Adressleitungen sind auf 0 geschaltet, wodurch die Zahl der anschließbaren Peripheriebausteine stark begrenzt ist. Da die I/O-Befehle mit dem gleichen Timing wie normale Speicherzugriffe arbeiten, müssen für den UART und die LCD-Anzeige mehrere Waitstates (vom GAL IC5) generiert werden.Die I/O-Bausteine sind wie folgt dekodiert:
Zugriff |
A3 |
A2 |
A1 |
A0 |
Adresse |
Baustein |
---|---|---|---|---|---|---|
RW |
0 |
x |
x |
x |
00-07H |
UART-Baustein 16C550 |
RW |
1 |
0 |
x |
0 |
08H |
LCD-Anzeige, Kommando |
RW |
1 |
0 |
x |
1 |
09H |
LCD-Anzeige, Daten |
R |
1 |
1 |
x |
x |
0CH |
Digitaler Eingang mit 74245 |
W |
1 |
1 |
x |
x |
0CH |
Digitaler Ausgang mit 74574 |
R: lesen / W: schreiben / x: don't care |
Der Watchdog-IC MAX1232 ist für die Erzeugung des Reset-Signals zuständig. Bei zu geringer Bestriebsspannung sowie ausbleibender Aktivität (kein Zugriff mehr auf die I/O-Bausteine, getriggert durch IS*), wird nach 1,2s automatisch ein Reset ausgelöst.
Am Anschluß S1 kann ein Taster angeschlossen werden, der bei Betätigung einen Reset auslöst. Zusätzlich kann über die DTR-Leitung der seriellen Schnittstelle noch ein Reset ausgelöst werden (DTR-Pegel auf -12V), falls die Steckbrücke JP4 gesteckt ist.
Der extern zur Verfügung stehende Speicher des Signalprozessors ist je zur Hälfte mit RAM und ROM belegt. Um das Design zu vereinfachen wird nicht wie bei der Havard-Architektur üblich zwischen Daten- und Programmspeicher unterschieden, stattdessen werden die externen Speicherbausteine sowohl als Programm- wie auch als Datenspeicher verwendet.
Als RAM`s werden schnelle statische Speicher 7C199
von Cyrix (oder Baugleiche) mit einer Zugriffszeit von 25ns
verwendet, womit ein Betrieb ohne zusätzliche Waitstates möglich
ist.
Für den Festspeicher (ROM) werden 27C256-EPROMs mit
einer Zugriffszeit von 120ns eingesetzt. Dies läßt einen
Zugriff durch den Prozessor mit einem Waitstate zu.
Die folgende Tabelle zeigt den Speicheraufbau, wie er vom Monitorprogramm konfiguriert wird:
Adresse |
Datenspeicher |
Programmspeicher |
---|---|---|
0000H-03FFH |
TMS320C25 intern |
ext. EPROM |
0400H-7FFFH |
ext. EPROM |
ext. EPROM |
8000H-FFFFH |
ext. RAM |
ext. RAM |
Als Interface zur 'analogen Welt' kommt der
Stereo-Codec CS4215 von Crystal zum Einsatz. Dieser IC besitzt je
zwei A/D- und D/A-Wandler mit einer maximalen Wandlungsfrequenz von
48kHz. Die Wandlungsfrequenzen werden über intern einstellbare
feste Teilerfaktoren aus einem von zwei Quarzen bestimmt. Welcher der
beiden Quarze in Betrieb ist, kann im 'control mode' ausgewählt
werden. Der Wandlungstakt des A/D-Wandlers entspricht gleichzeitig
dem des D/A-Wandlers.
Als Wandlungsmodi sind 16 Bit linear, 8 Bit
linear und 8 Bit kompandiert im Mono- und Sterobetrieb möglich.
Nummer |
Teilfaktor |
Quarz 1 24,576MHz |
Quarz 2 14,7456MHz |
---|---|---|---|
0 |
3072 |
8kHz |
4,8kHz |
1 |
1536 |
16kHz |
9,6kHz |
2 |
896 |
27,429kHz |
16,457kHz |
3 |
768 |
32kHz |
19,2kHz |
4 |
448 |
na |
32,914kHz |
5 |
384 |
na |
38,4kHz |
6 |
512 |
48kHz |
28,8kHz |
7 |
2560 |
9,6kHz |
5,76kHz |
na: nicht anwendbar |
Zusätzlich sind die Analogeingänge mit einem Aliasing-Filter und einem programmierbaren Verstärker ausgestattet, um ein optimales Ergebnis bei der A/D-Wandlung zu erzielen. Die Analogausgänge besitzen einen Abschwächer und ein Filter zur Glättung der Ausgangssignale.
Die Kommunikation mit dem Prozessor geschieht über die synchrone serielle Schnittstelle, die den Codec direkt mit dem Prozessor verbindet. Die Schnittstelle des Prozessors wird im 'Continuous transmission without frame sync pulses'-Modus betrieben, da der Codec immer 4 Wort-Pakete (64 Bit) verschickt und gleichzeitig empfängt.
Die zwei Betriebsmodi des Codec werden mittels dem Prozessorpin XF gesteuert, der beim TMS320C25 als Ausgang frei zur Verfügung steht. Im 'Control Mode' (XF low) wird der serielle Takt vom GAL IC5 generiert. In diesem Modus wird die Einstellung der Betriebsparameter des Codecs vorgenommen. Im 'Data Mode' (XF high) übernimmt dann der Codec die Generierung des seriellen Takts. Jetzt werden im Abstand der eingestellten Wandlungsfrequenz jeweils die 64Bit-Datenpakete gesendet und empfangen. Eine genaue Beschreibung des Codec ist in [2] zu finden.
Die analogen Ein- und Ausgänge des Codecs liegen an X4 (Dioden-Stecker links und rechts) an. Weitere Analogausgänge liegen noch an X7.
Soll statt dem ursprünglich vorgesehenen Codec CS4215 ein anderer Baustein an der seriellen Prozessorschnittstelle verwendet werden, kann dies über den Anschluß X5 geschehen. Zusätzlich müssen die Verbindungen JP1, JP2 und JP3 auf der Lötseite der Platine durchtrennt werden.
Um die DSP-Karte mit einem Computer verbinden zu können, ist eine serielle RS232-Schnittstelle vorhanden. Dabei kommt ein UART 16550 von National Semiconductor [3] zum Einsatz. Er kann bis zu einer Baudrate von 115kBaud betrieben werden und besitzt einen 16 Byte FIFO-Puffer für Sende- sowie Empfangsfunktion. Der Takt für den UART wird von einem 3,6864MHz-Quarz generiert. Der Zugriff auf den UART erfolgt mit 3 Waitstates.
Am Ausgang sind nur die Datenleitungen RXD und TXD, sowie die Handshake-Signale RTS und CTS beschaltet. Als zusätzliche Steuermöglichkeit, kann mit der DTR-Leitung ein Reset auf der DSP-Karte ausgelöst werden, falls die Steckbrücke JP4 geteckt ist.
Die Ansteuerschaltung für die LCD-Anzeige ist für das Modul TLC501 von Toshiba ausgelegt, es funktionieren erfahrungsgemäß aber auch ähnliche Module mit 2 Zeilen und 20 Zeichen pro Zeile.
Als Treiber für die Datenleitungen ist ein 74HCT245 vorhanden, der bidirektional arbeitet, die Steuersignale werden vom GAL IC5 generiert. Durch Umprogrammieren des GALs läßt sich somit die Ansteuerung problemlos ändern.
Da die LCD-Anzeige ein sehr langsames Timing hat (im Vergleich zum Prozessor), müssen nach einem Lese-/Schreibzugriff mindestens 450ns vergangen sein, bis ein erneuter Zugriff auf die Anzeige ausgeführt werden darf. Dies kann z.B. durch 5 NOP's (No Operation - Befehle) erreicht werden. Ein Zugriff erfordert 8 Waitstates.
Mit dem Trimmer P1 läßt sich der Anzeigenkontrast einstellen. Weitere Details siehe Datenblatt [4]. Das Interface ist nicht sehr speziell und kann eventuell auch für andere Anwendungen benutzt werden.
Als Spannungsversorgung wird eine stabilisierte Gleichspannung von mindestens 8 Volt und 500mA benötigt. Falls eine saubere Gleichspannung von +5V vorhanden ist, kann diese auch direkt eingespeist werden, dazu müssen Schutzdiode und Spannungsregler überbrückt werden.
Pin |
Name |
Beschreibung |
---|---|---|
1 |
+5V |
Versorgungsspannung |
2 |
O0 |
digitaler Ausgang 1 |
3 |
O1 |
digitaler Ausgang 2 |
4 |
O2 |
digitaler Ausgang 3 |
5 |
O3 |
digitaler Ausgang 4 |
6 |
O4 |
digitaler Ausgang 5 |
7 |
O5 |
digitaler Ausgang 6 |
8 |
O6 |
digitaler Ausgang 7 |
9 |
O7 |
digitaler Ausgang 8 |
10 |
I0 |
digitaler Eingang 1 |
11 |
I1 |
digitaler Eingang 2 |
12 |
I2 |
digitaler Eingang 3 |
13 |
I3 |
digitaler Eingang 4 |
14 |
I4 |
digitaler Eingang 5 |
15 |
I5 |
digitaler Eingang 6 |
16 |
I6 |
digitaler Eingang 7 |
17 |
I7 |
digitaler Eingang 8 |
18 |
INT1 |
Interrupt-Eingang 1 |
19 |
INT2 |
Interrupt-Eingang 2 |
20 |
GND |
Masse |
Pin |
Name |
Richtung |
Beschreibung |
---|---|---|---|
1 |
- |
- |
- |
2 |
TXD |
Ausgang |
Sendedaten |
3 |
RXD |
Eingang |
Empfangsdaten |
4 |
DTR |
Eingang |
Datenterminal bereit |
5 |
GND |
- |
Masse |
6 |
- |
- |
- |
7 |
CTS |
Eingang |
Bereit zu Senden |
8 |
RTS |
Ausgang |
Anforderung zu Senden |
9 |
- |
- |
- |
Pin |
Name |
Beschreibung |
---|---|---|
1 |
GND |
Masse |
2 |
+5V |
Versorgungsspannung |
3 |
|
Kontrast |
4 |
RS |
Reset |
5 |
PRW* |
Lese-/Schreibzugriff |
6 |
E |
Zugriffstakt |
7 |
DB0 |
Datenbit 0 |
8 |
DB1 |
Datenbit 1 |
9 |
DB2 |
Datenbit 2 |
10 |
DB3 |
Datenbit 3 |
11 |
DB4 |
Datenbit 4 |
12 |
DB5 |
Datenbit 5 |
13 |
DB6 |
Datenbit 6 |
14 |
DB7 |
Datenbit 7 |
links
Pin |
Name |
Beschreibung |
---|---|---|
1 |
INL |
Analogeingang links |
2 |
AGND |
analoge Masse |
3 |
OUTL |
Analogausgang links |
4 |
PTTL |
PIO1vom Codec |
5 |
- |
|
rechts
Pin |
Name |
Beschreibung |
---|---|---|
1 |
INR |
Analogeingang rechts |
2 |
AGND |
analoge Masse |
3 |
OUTR |
Analogausgang rechts |
4 |
PTTR |
PIO0 vom Codec |
5 |
- |
|
Pin |
Name |
Beschreibung |
---|---|---|
1 |
RES* |
Reset |
2 |
BIO* |
Prozessoreingang |
3 |
XF |
Prozessorausgang |
4 |
DR |
serielle Daten zum Prozessor |
5 |
CLKR |
Takt für DR |
6 |
FSR |
Synchronisierung für DR |
7 |
DX |
serielle Daten vom Prozessor |
8 |
CLKX |
Takt für DX |
9 |
FSX |
Synchronisierung für DX |
10 |
+5V |
Versorgungsspannung |
11 |
GND |
Masse |
12 |
GND |
Masse |
Pin |
Name |
---|---|
1 |
+8 Volt, mindestens 500mA |
2 |
Masse |
Pin |
Name |
Beschreibung |
---|---|---|
1 |
HEADR |
Kopfhörerausgang rechts |
2 |
HEADL |
Kopfhörerausgank links |
3 |
HEADC |
gemeinsamer Kopfhörerausgang |
4 |
MOUT1 |
Monitorausgang 1 |
5 |
MOUT2 |
Monitorausgang 2 |
6 |
AGND |
analoge Masse |
[1] TMS320C2X User's Guide
Texas
Instruments
[2] Datenblatt CS4215
Crystal
Semiconductor
[3] Datenblatt UART 16C550
[4] Datenblatt TLC501
Toshiba