Forum: FPGA, VHDL & Co. Xilinx Block-RAM voll resetten


von Pauli (Gast)


Lesenswert?

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?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> 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.

von Falk B. (falk)


Lesenswert?

@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

von Pauli (Gast)


Lesenswert?

Dann muss ich das gesamte Ram durchackern?

von Andreas (Gast)


Lesenswert?

Jau! ( warum soll´s Dir besser gehen, wie den anderen....)
;)

Gruß

Andreas

von Pauli (Gast)


Lesenswert?

Hab mir jetzt ein FF-basiertes RAM gebaut. Allerdings ist der FPGa nun 
proppe voll. Schiieet ..

von Andreas (Gast)


Lesenswert?

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

von berndl (Gast)


Lesenswert?

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

von FPGA-Vollprofi (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.