Eine Verständnisfrage: Kann ich ein Xilinx BRAM mit einem Takt im Betrieb resetten? Der CoreGen zeigt einen RSSA-Pin der wie folgt beschrieben wird. "Optional Synchronous Set/Reset Pin" The core provides optional set/reset pins (SSRA and SSRB) pin per port that synchronously initialize the read output to a programmable value. Ist das dafür nutzbar?
> Ist das dafür nutzbar?
Nein. Damit wird nur das Ausgangsregister beeinflusst.
Aus der XAPP463:
1 | Synchronous Set/Reset — SSR (SSRA, SSRB) |
2 | The synchronous set/reset input, SSR, forces the data output latches to |
3 | value specified by the SRVAL attribute. When SSR and the enable signal, |
4 | EN, are High, the data output latches for the DO and DOP outputs are |
5 | synchronously set to a ‘0’ or ‘1’ according to the SRVAL parameter. |
6 | |
7 | A Synchronous Set/Reset operation does not affect RAM memory cells |
8 | and does not disturb write operations on the other port. |
EDIT: Und nein, nicht mal der Globale Reset hilft dir weiter.
1 | Global Set/Reset — GSR |
2 | The global set/reset signal, GSR, is asserted automatically and |
3 | momentarily at the end of device configuration. By instantiating the |
4 | STARTUP primitive, the logic application can also assert GSR to restore |
5 | the initial Spartan-3 state at any time. The GSR signal initializes the |
6 | output latches to the INIT value. |
7 | |
8 | A GSR signal has no impact on internal memory contents. |
@Pauli (Gast) >Eine Verständnisfrage: Kann ich ein Xilinx BRAM mit einem Takt im >Betrieb resetten? Nein. Der Reset wirkt nur auf die Ausgangsregister, NICHT jedoch auf die RAM-Zellen, also den Inhalt. MFG Falk
Jau! ( warum soll´s Dir besser gehen, wie den anderen....) ;) Gruß Andreas
Hab mir jetzt ein FF-basiertes RAM gebaut. Allerdings ist der FPGa nun proppe voll. Schiieet ..
Hallo Pauli, es kommt oft vor das man sicher gehen muss, dass ein RAM beim Start leer zu sein hat. Den Inhalt deines RAMs kannst Du zum Bootzeitpunkt bestimmen und aus einem File laden lassen. So funktionieren auch z.B. SoftCPUs bei welchem Code und ggfls. Microcode in RAM-Blöcken steckt. Du kannst die Werte auch über eine Statemaschine löschen, ggfl. hilft Dir da, dass ein BRAM 2 Ports besitzt. Je nach Breite und Tiefe des RAMS kannst Du aber auch ein FF pro Zelle spendieren, und dort ein DirtyTAG platzieren. Wenn das gesezt oder gelöscht ist, ist der Inhalt der RAM-Zelle ungültig... Gruß Andreas
Hi, wollte ich auch vorschlagen. Einfach in FFs ein Valid- oder Dirty-Bit 'verwalten'. Das kannst du mit einem (am besten synchronen) Reset auf 'invalid' stellen. Gruss, - berndl
Um das resetten kommt man nicht herum, denn die initialen Werte mit MIF und HEX Ram-Image klappen nur am Start. Bei Xilinx kann man sehr einfach ein asymmetrisches Ram einsetzen, welches über den zweiten Port breit gelöscht werden kann. Mit einem 256Bit-Bus kriegt man schon mal 16fach schnell gecleared, als ein Anschluss mit 16 Bit. Spart 4 Adressen. Dann geht es irgendwann nur noch, indem man mehrere RAMs parallel baut. Dafür würde ich mir einer CORE-Instanz wünschen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.