Xilinx Block-RAM voll resetten

Gast #1250096
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?
Moderator (Firma: Titel) Persönliche Seite
> 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
Gast
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
Gast
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
Gast
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.