| 4.9 Bausteine zur A/D- und D/A-Wandlung |  | Inhaltsverzeichnis |

## Lösungsvorschläge zu den Selbsttestaufgaben

### Zu S4.2-1:

1. Logische Funktionen: Ai = Ei Ù j>ij Ù , also:

   | A3 = E3 Ù , A2 = E2 Ù 3 Ù , A1 = E1 Ù 2 Ù 3 Ù , A0 = E0 Ù 1 Ù 2 Ù 3 Ù .

   Im Bild L4.2-1 sind die Realisierungen dieser Funktionen gezeigt.
   Bild L4.2-1: 4-bit-Prioritätsdecoder
2. Bild L4.2-2: 8-bit-Prioritätsdecoder
   Ein Ausgang Ai, i=0,..,3, des "niederwertigen" Decoders PD0 darf nur dann aktiviert werden, also auf H-Potential gebracht werden, wenn alle Eingänge des "höherwertigen" Decoders PD1 inaktiv sind, also auf L-Pegel liegen. Dies erreicht man dadurch, daß man auf den -Eingang von PD0 die Oder-Verknüpfung der Eingänge E4,..,E7 von PD1 legt (s. Bild L4.2-2). Der -Eingang von PD1 wird fest mit Massepotential verbunden.

### Zu S4.3-1:

CE-Bit:
In seiner Wirkung entspricht dieses Bit dem -Eingang eines Peripheriebausteins. Jedoch gestattet es, den Baustein softwaremäßig (für gewisse Zeiten) abzuschalten. Dadurch werden alle Unterbrechungsanforderungen an seinen Eingängen unterdrückt.
I/P-Bit bzw. ENI-Eingang:
Durch diese wird nur die Weitergabe einer Unterbrechungsanforderung zum Prozessor gesteuert. Die Bausteineingänge bleiben jedoch stets aktiviert, und die Anforderungen werden in den Registern gespeichert und ausgewertet.

### Zu S4.5-1:

| 16 bit | 2x8 bit
dual | $4749 + 1 = 18 250 | ($47 + 1) × ($49 + 1) = 72 × 74 = 5 328
BCD | 4749 + 1 = 4 750 | (47 + 1) × (49 + 1) = 48 × 50 = 2 400

Hinweis:
Die Addition der '1' ist nötig, da voraussetzungsgemäß jeder Zählzyklus erst mit dem Ende des Null-Zustandes abgeschlossen ist.

### Zu S4.6-1:

1. Der Zustand Q des Flipflops DRi muß auf den Eingang Di zurückgekoppelt werden, wenn:
   - das Datenregister angesprochen wird, also ENDR=1 ist,
   - ein Lesezugriff stattfindet, also R/=1 ist,
   - die Portleitung Pi als Ausgang geschaltet ist, also das Bit DRRi=1 ist.
   Daraus ergibt sich die im Bild L4.6-1 dargestellte Beschaltung.
   Bild L4.6-1: 1. Variante der Portbeschaltung
2. Bei der 2. Variante wird bei jedem Lesezugriff auf das Datenregister die Portleitung Pi auf die Datenleitung Di durchgeschaltet - unabhängig von der gewählten Übertragungsrichtung der Portleitung. Deshalb entfällt hier die Verbindung des Bits DRRi zum Eingangstreiber. Im Bild L4.6-2 ist die Realisierung gezeigt.

   Bild L4.6-2: 2. Variante der Portbeschaltung

### Zu S4.6-2:

1. Lesezugriff (s. Bild L4.6-3):
   Bild L4.6-3: Zeitlicher Ablauf eines Lesezugriffs
   Nachdem der Baustein durch das -Signal und das Datenregister DR des Ports durch die Adreßsignale A1, A0 selektiert wurden, schaltet die negative Flanke des -Signals die Portleitungen PXi auf die Datenbusleitungen Di. Mit der positiven Flanke des -Signals wird das Datum in den µP übernommen. Dabei ist es sehr wohl möglich, daß sich - anders als im Bild dargestellt - der Zustand der Portleitungen noch während des -Signals (=0) ändert. Verlangt wird lediglich, daß während der Zeitspanne tDS (Data Setup) vor der positiven -Flanke das Datum stabil anliegt.
2. Schreibzugriff (s. Bild L4.6-4):

   Bild L4.6-4: Zeitlicher Ablauf eines Schreibzugriffs

   Nach der Anwahl des Bausteins und des Datenregisters DR durch die Signale , A1, A0 legt der Prozessor die Daten auf den Datenbus Di. Diese werden mit der positiven Flanke des -Signals in das Register DR übernommen. Mit einer kleinen Verzögerung td (Delay) erscheinen sie dann auf den Portleitungen PXi.

### Zu S4.6-3:

Ein Zeitdiagramm der bidirektionalen Übertragung ist im Bild L4.6-5 dargestellt.

Bild L4.6-5: Zeitdiagramm der bidirektionalen Übertragung

Der wichtigste Unterschied zum Bild 4.6-7 besteht darin, daß die Portleitungen PA7...PA0 (Peripheral Bus) immer dann hochohmig geschaltet sind, wenn nicht gerade ein Datum übertragen wird. Die Steuerung der Tristate-Treiber wird vom Peripheriegerät übernommen: Einerseits legt es selbst ein Datum auf diesen Bus und triggert die Übernahme in den Eingabepuffer IBA durch das Strobe-Signal . Andererseits schaltet es mit seinem Quittungs-Signal die Treiber des 8255 durch und übernimmt die vom Prozessor im Datenregister DRA abgelegte Information. Durch die negative Flanke des -Signals wird, wie im Bild 4.6-6 angedeutet, nur dasjenige Interrupt-Flipflop (FF) zurückgesetzt, das dem -Eingang zugeordnet ist.

### Zu S4.6-4:

Bei der angesprochenen Lösung bietet sich die folgende Zuordnung zwischen den Signalen des 8255 und der Centronics-Schnittstelle an:

PA0,...,PA7 | ¬ ¾ ® | DATA1-8
| ¬ ¾ ® |
| ¬ ¾ ® | .

Dabei ergeben sich jedoch die nachstehenden Schwierigkeiten:

1. Es gibt keinen freien 8255-Eingang für das BUSY-Signal.
2. Die negative Flanke des (-)-Signals kann mit dem Zeitpunkt zusammenfallen, zu dem die Daten auf den PAi(-DATAi)-Leitungen stabil vorliegen. In diesem Fall wird die geforderte Zeitspanne (³ 0.5 µs) zwischen diesen beiden Ereignissen nicht eingehalten.
3. Das -Signal wird erst durch die positive Flanke des -Signals zurückgenommen. Bei der Centronics-Schnittstelle gibt das Peripheriegerät das -Signal jedoch erst nach der positiven Flanke des -Signals aus.

### Zu S4.6-5:

1. Modus 0. Port PA: Ausgang; Port PB: Eingang; Port PCL: Ausgang.
2. Das Flußdiagramm ist im Bild L4.6-6 dargestellt. Das Unterprogramm beginnt mit der Ermittlung des Gerätestatus und stellt dabei fest, ob ein "Papier Ende"-Fehler oder ein beliebiger "anderer Fehler2 vorliegt. Ist dies der Fall, wird das Programm sofort beendet.
   Im anderen Fall wird das Zeichen in den Port PA geschrieben. Es folgt die zeitgerechte Erzeugung des -Signals auf der Portleitung PC0.
   Nach der geforderten Zeitverzögerung von wenigstens 0.5 µs, während der die Daten weiterhin stabil vorliegen müssen, wird das BUSY-Signal an der Portleitung PB1 überprüft. Spätestens nach einer Sekunde muß dieses Signal einen L-Pegel annehmen. Ist dies nicht der Fall, so veranlaßt die Zeitüberwachung einen Abbruch des Programms. (Dabei kann eventuell wieder der Status des Gerätes über den Port PB ermittelt und die genauere Ursache für die Zeitüberschreitung ermittelt werden.)
   Wird die vorgegebene Zeit nicht überschritten, so schließt das Programm mit der Abfrage des -Signals an der Portleitung PB0. Dieses Signal muß zunächst den '0'-Zustand und danach wieder den '1'-Zustand einnehmen. Zur Beschleunigung der Übertragung kann der µP jedoch darauf verzichten, die Beendigung des -Signals abzuwarten. Diese Möglichkeit ist im Bild gestrichelt gezeichnet.

Bild L4.6-6: Programm zur Zeichenausgabe

Das angegebene Programm stellt die Übertragung eines einzelnen Zeichens dar. Die Sachlage ändert sich etwas, wenn - wie heute üblich - der Drucker über einen relativ großen Pufferspeicher (z.B. 32 Mbyte) verfügt. In diesem Fall sollte die Abfrage des Gerätezustandes vor jedem Zeichentransfer entfallen und nur noch nach einer Zeitüberschreitung ausgeführt werden. Das BUSY-Signal muß hier vom Drucker dazu benutzt werden, dem µP mitzuteilen, ob freier Pufferplatz zur Verfügung steht oder nicht.

### Zu S4.8-1:

1. Auflösen der Formel nach SCLKDIV liefert:
   SCLKDIV = (Frequenz von CLKOUT) / (2 × Frequenz von SCLK) - 1.
2. 1. Frequenz von SCLK = 9600 Hz:

      SCLKDIV = 0.5 ×12 288 000 / 9600 - 1 = 639 = 0x027F

   2. Frequenz von SCLK = 2,048 MHz:

      SCLKDIV = 0.5 × 12,288 / 2,048 - 1 = 2 = 0x0002

3. Auflösung der Formel nach RFSDIV liefert für die vorgegebenen Werte:

   RFSDIV = (Frequenz von SCLK) / (Frequenz von RFS) - 1 = 2048 / 8 - 1 = 255 = 0x00FF

### Zu S4.9-1:

UDA,max = UDA(2n - 1) = (2n - 1)×(Umax - Umin) / 2n + Umin = Umax - LSB
Umax entspricht 2n.

### Zu S4.9-2:

1. UDA($A0) = [$A0 × 5V + ($100-$A0) × 0V]/256 = 160 × 5/256 V = 3.125 V
2. Bild L4.9-1: Schaltung zur Erzeugung des PWM-Signals
   Der Digitalwert D wird in ein Register eingeschrieben. Ein Komparator vergleicht ihn kontinuierlich mit dem Zustand Z eines frei umlaufenden Dualzählers. Die Umlaufdauer dieses Zählers bestimmt die Schwingungsdauer TS des Ausgangssignals. Der Ausgang "D< Z" des Komparators ist immer dann im '1'-Zustand, wenn der Zähler den Wert D noch nicht erreicht hat, und danach bis zum Ende des Zyklus im '0'-Zustand.
3. TI = 1/(10 MHz) = 0.1 µs = 100 ns,
   TS = 2n × TI = 256 × 0.1 µs = 25.6 µs,
   TP = $A0 × TI = 160 × 0.1 µs = 16 µs.
   Maximale Wandlungsrate: 1/(25.6 µs) = 39.0625 kHz

| 4.9 Bausteine zur A/D- und D/A-Wandlung |  | Inhaltsverzeichnis |