Gast
#1055853
Ich möchte mir mit dem coregen ein DP-RAM bauen, brauche aber einen asynchronen CLR zur Laufzeit. Wo findet man den?
|
Anzeige
|
Dual Ported RAMs bei Xillinx
Gast
#1055853
Ich möchte mir mit dem coregen ein DP-RAM bauen, brauche aber einen asynchronen CLR zur Laufzeit. Wo findet man den? Du suchst ein gleichzeitiges Löschen des kompletten RAMs? Das wird von der Hardware nicht unterstützt. > Dual Ported RAMs
Das könnte evtl. gehen bei Distributed-Ram, weil das komplett asynchron
ist.
Mit BRAMs geht das aber nicht, weil für das Schreiben jedes einzelnen
Wortes ein Takt nötig ist. Selbst bei der Initialisierung (Startup) geht
das nur Bit für Bit mit dem Config-Clock.
Aber wieso brauchst du überhaupt einen asynchronen Reset?
Ich würde einfach mal so sagen, dass das auch anders geht...
Lothar Miller wrote: >> Dual Ported RAMs > Das könnte evtl. gehen bei Distributed-Ram, weil das komplett asynchron > ist. Distributed RAM setzt sich aber aus LUTs zusammen und diese können ebenfalls nicht komplett zurückgesetzt werden. Nur bei einem "diskreten" RAM aus Flipflops funktioniert ein asynchroner Reset. @ gefrusteter FPGA-Progger (Gast) >Ich möchte mir mit dem coregen ein DP-RAM bauen, brauche aber einen >asynchronen CLR zur Laufzeit. Wo findet man den? Gibt es nicht, braucht auch keiner. Wenn du die Daten WIRKLICH löschen musst, muss das deine State Machine "zu Fuß" machen. Und asynchron ist sowieso Pfui ;-) MFG Falk
Gast
#1056213
Mir stellt sich immer die Frage, ob am Ende im FPGA überhaupt ein asynchroner Reset realisiert wird, da der Reset ja meistens mehrfach eingetaktet wird. Franke wrote: > Mir stellt sich immer die Frage, ob am Ende im FPGA überhaupt ein > asynchroner Reset realisiert wird, da der Reset ja meistens mehrfach > eingetaktet wird. Ja, was soll das Synthesetool da machen, wenn ich dem explizit sage, wie ein Reset zu verwenden sei? Es muss die entspechenden FFs verwenden. Als kleines Beispiel (damit wir vom Raten wegkommen) das hier:
Die RTL-Schematics (Bild) zeigen: der Snythesizer macht trotz des über 4 D-FFs (FD) synchronisierten Reset-Signals genau das, was beschrieben wurde. Den asynchronen Reset mit einem asynchronen Clear-FF (FDC), den synchronen Reset mit einem synchronen Reset-FF (FDR). Also: wird der Reset asynchron beschrieben, wird das entsprechende Register auch asynchron implementiert. @ Lothar Miller (lkmiller) >Also: wird der Reset asynchron beschrieben, >wird das entsprechende Register auch asynchron implementiert. Wäre ja auch noch "Schöner" wenn das Tool ungefragt was verschlimmbessern würde. Aber solche Resets an BRAMs sind sowieso sinnlos, an vielen FlipFlops ebenso. MFG Falk > Aber solche Resets an BRAMs sind sowieso sinnlos, > an vielen FlipFlops ebenso. Von der Sinnhaltigkeit abgesehen gibt es keinen "globalen" Reset für BRAMs und genausowenig für LUT-RAMs (distributed RAM). Da musste ich mich noch kurz (wieder) einlesen: LUTs sind 16x1 RAMs. Die können auch nicht irgendwie zu 1x16 umgebogen werden. Ich kann also nur 1 Bit auswählen, und das ändern. Um eine komplette LUT zu löschen, müssen also 16 Schreibzugriffe stattfinden, um jedes einzelne Bit auf 0 zu setzen. Damit wären wir wieder mit einer State Machine "zu Fuß" unterwegs ;-)
Gast
#1056819
Aber kann das nicht ein Problem werden? Der asynch Reset kommt doch dann einsynchronisiert genau zur Flanke des Taktes. Abgesehen davon, dass es keine andere Funktion macht, als ein synchroner Reset ist es nicht schicklich einen Takt an den synchronen und asynchronen Port eines FF zu legen. Das meckern die Synthesetools auch zurecht an. Sinn macht das IMO nur bei clock domain crossing, wenn ganze Busse linksseitig eingetaktet werden und rechtsseitig (anderer clock) ausgelsen werden. Z.B. beim Zähler reset von Fifos. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|