Forum: Mikrocontroller und Digitale Elektronik Sinusgenerator mit ROM-Baustein


von dohwulkla (Gast)


Lesenswert?

Hallo,

ich sitze gerade vor einer eventuellen Prüfungsaufgabe und komme da 
nicht weiter.
Ich hoffe ihr könnt mir dazu ein paar Ratschläge geben.

Hier die Aufgabe:
Bauen Sie einen Sinusgenerator, der ein Sinunssignal anhand von 8 
Stützstellen ausgeben soll. Realisiert werden soll die Schaltung mit 
einem geeigneten ROM-Baustein und der erforderlichen Anzahl 
MS-D-Flipflops.
Ein 8Bit-D/A-Wandler soll die gespeicherten Stützstellen in ein analoges 
Ausgangssignal umwandeln. Die Erzeugung der Folgeadresse soll im ROM 
selbst erfolgen. Die Schaltung soll taktgesteuert betrieben werden.

d) Stellen sie zunächst eine Tabelle auf, die die geforderten 
Stützstellen (0, PI/4, PI/2, ...) des Sinussignals(positive 
Sinusschwingung) in Dezimal- und Dualdarstellung enthält.(Bemerkung: um 
die nötige 8Bit-Auflösung zu erhalten, schieben Sie bitte ihr 
Rechenergebnis um die benötigte Anzahl von Bits nach links.)

e) Ermitteln Sie die erforderliche Anzahl von Zustandsbits und stellen 
Sie danach die Übergangstabelle einschliesslich Ausgangsvariablen auf.

f) Skizzieren Sie die Schaltung und belegen Sie das ROM wie üblich mit 
Verbindungspunkten.

Mich überfordert die Aufgabe, weil man mit 8 Stützstellen einen 8Bit 
D/A-Wandler ansteuern soll.

MfG
Dennis

von melt (Gast)


Lesenswert?

Wo ist das Problem die 8 Stützstellen nacheinander an den DAC zu geben?

von Karl H. (kbuchegg)


Lesenswert?

dohwulkla schrieb:

> Mich überfordert die Aufgabe, weil man mit 8 Stützstellen einen 8Bit
> D/A-Wandler ansteuern soll.

Da steht nichts davon, dass du zwischen den Stützstellen interpolieren 
sollst.

Die Aufgabe ist also gleichwertig mit:
  In einem ROM sind 8 Werte gespeichert, die nacheinander am DA
  Wandler ausgegeben werden sollen.

Das diese Werte einen 'Sinus' ergeben sollen interessiert dich nur bei 
der Berechnung der auszugebenden Werte. Für die Schaltung selbst ist die 
Signalform irrelevant.


Diese ROM-Sequenzer arbeiten normalerweise nach diesem Muster:

      Steuersignale
        +-----------------------------+
        |                             |
        |     +------------+          |
        |     | Adressen   |          |
        v     v            |          |
      +------------+     +-------+    |
      |            |     |       |----+
      |  ROM       |     |       |
      |            |     | Logik |
      | Datenbits  |     |       |
      +------------+     +-------+
        | | |   | |         ^ ^
        | | |   | |         | |
        v v v   | +---------+ |
     Datenbits  +-------------+
      zum D/A


D.h. von den Datenbits, die aus dem ROM rauskommen, wird ein Teil 
abgezweigt und kodiert von welcher Adresse als nächstes vom ROM 
ausgelesen werden soll.
Wird dann von dieser Adresse gelesen, so enthält der gelesene Wert 
wiederrum die Adressinformation, wo als nächstes gelesen werden soll.

(Ist ein bischen so, wie wenn in einem Buch ganz unten auf jeder Seite 
steht: Weiter bei Seite xyz)

von dohwulkla (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Karl Heinz,

erstmal danke für deine Antwort!
Auf dieser Basis habe ich folgende Überlegung angestellt (siehe Anhang).
1. 8 beliebige Stützstellen der positiven Periode gewählt
2. Darstellung in 3Bit-Form
3. Umwandlung in 8Bit durch links schieben

Sollte die Wertetabelle stimmen, denke ich mit dem Rest der Aufgabe 
klarzukommen.
Das Endergebnis kann ich dann ja nochmal posten.

Vielen Dank erstmal.

von melt (Gast)


Lesenswert?

Du solltest schon die "echten" Werte des Sinus nehmen... so erzeugst du 
einen Sägezahn... und nicht irgendwas mit 3-bit, sondern 8 bit 
genauigkeit. Die ADRESSE im Speicher ist 3 Bit, die DATEN können "echte" 
8 Bit sein.

von dohwulkla (Gast)


Lesenswert?

Die "echten" Werte, wie du sie nennst sind ja auf dem ROM Baustein 
gespeichert und die 3Bit dienen ja nur der Adressierung des ROMS, von 
dem wir ja nun die Werte des Sinus herausziehen.

von melt (Gast)


Lesenswert?

Genau das meinte ich... Nur die Erweiterung auf 8 Bit macht dann nicht 
wirklich Sinn, deshalb war ich mir nicht sicher was deine Tabelle sagen 
soll.

von dohwulkla (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich glaube ich habe das ganze nun gelöst.
Dazu habe ich angenommen, dass der 0 Pegel des Sinus auf U/2 liegt 
(Offset).
Somit ergibt sich dann folgende Lösung (im Anhang).
Ich hoffe, dass ich die Aufgabenstellung richtig verstanden und 
umgesetzt habe :-P
Vielleicht kann ja jemand nochmal drüber schauen.

MfG
Dennis

von Stefan N. (laser)


Angehängte Dateien:

Lesenswert?

Also ich würde schon die vollen 8Bit des D/A-Wandlers ausnutzen, dann 
hast du auch etwas, was mehr nach Sinus aussieht (siehe Anhang).
Dazu einfach den Wert des Sinus an den Stützstellen (Wertebereich 0..2) 
mit 127 multiplizieren und das dann in Binär umrechnen.
Die Folgezustände könntest du auch über einen 3-Bit zähler mit mehreren 
D-FF berechnen.
Oder du nimmst von den 8Bit-Werten im ROM 3Bit für den Folgezustand und 
die restlichen 5Bit für den Sinus-Wert.
Oder gleich 11Bit im ROM speichern, steht ja nirgends, dass der nur 8Bit 
breit ist ;)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.