Forum: FPGA, VHDL & Co. asynchronen Bus synchronisieren


von Benedikt K. (benedikt)


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 ?

von Christoph Kessler (db1uq) (Gast)


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.

von Benedikt K. (benedikt)


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.

von Dirk (Gast)


Lesenswert?

Hi,

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

Gruß,
Dirk

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.