www.mikrocontroller.net

Forum: FPGA, VHDL & Co. asynchronen Bus synchronisieren


Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mit eine Grafikkarte aus einem SRAM und einem XC95108 CPLD 
gebaut. Diese funktioniert soweit, nur der Datenbuus zum uC von dem die 
Bilddaten kommen macht mir Probleme:
Da der SRAM nur jeden zweiten Takt für die Datenübertragung vom uC Zeit 
hat, speichere ich die die Daten vom uC erstmal in ein Register ab, und 
setze ein "neue Daten" Bit.
Sobald das SRAM dann Zeit hat und das "neue Daten" Bit gesetzt ist, 
werden die Daten aus dem Register ins SRAM geschrieben.
Allerdings kann es passieren, dass der uC während eines Schreibvorgangs 
ins SRAM neue Daten sendet. Man müsste das Register als 2 stufig 
aufbauen. Dazu muss das "neue Daten" Bit und die zu dem jeweiligen Byte 
passende Adresse auch irgendwo 2 stufig mitgespeichert werden. Insgesamt 
also ein ziemlicher Aufwand.

Da gibt es doch bestimmt eine einfachere Lösung um das ganze ohne 
Wait-States für den uC zu lösen ?

Autor: Christoph Kessler (db1uq) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kommt der Takt für Controller und SRAM aus demselben Quarz oder sind die 
wirklich gegeneinander asynchron? Ein Rückmeldungsbit, "Byte abgeholt", 
frißt vermutlich zuviel Zeit.

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beide haben je einen eigenen Quarz (18,432MHz am CPLD -> 55ns SRAM 
Zurgiffszeit, 16MHz am uC)
Das Busy Flag wäre das einfachste, aber genau sowas wollte ich 
vermeiden, denn das währen die oben erwähnten waitstates. Falls es nicht 
anderst geht, muss ich es wohl doch so machen.

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

du solltest schaun das beide (CPLD, AVR) über einen Quarz getaktet 
werden.

Gruß,
Dirk

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.