mikrocontroller.net

Forum: FPGA, VHDL & Co. BlockRAM Primitive Spartan 3E gegen Spartan 6


Autor: Steffen Hausinger (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe in meinem Design einen SJA1000-Core (CAN-Controller) von 
OpenCores.org eingesetzt. Er lief auf meinem Spartan 3E wunderbar. Jetzt 
möchte ich aber auf einen Spartan 6 wechseln und stelle fest, dass es 
Probleme mit dem BlockRAM gibt: Der Core verwendet die RAMB Primitive 
RAMB4_S8_S8, RAMB4_S4_S4 und RAMB4_S1_S1. Diese existieren auf dem 
Spartan 6 aber nicht mehr. Stattdessen gibt es dort nur noch die 
Primitive RAMB8BWER und RAMB16BWER.

Also versuche ich jetzt, bspw. das RAMB4_S8_S8 auf das BWER Primitiv 
umzumappen:

Funktionierendes Mapping für Spartan 3E Primitive:
RAMB4_S8_S8 fifo
(
   .DOA(),
   .DOB(data_out),
   .ADDRA({3'h0, wr_pointer}),
   .CLKA(clk),
   .DIA(data_in),
   .ENA(1'b1),
   .RSTA(1'b0),
   .WEA(wr & (~fifo_full)),
   .ADDRB({3'h0, read_address}),
   .CLKB(clk),
   .DIB(8'h0),
   .ENB(1'b1),
   .RSTB(1'b0),
   .WEB(1'b0)
);


Mein neues Mapping für Spartan 6 Primitive:
RAMB8BWER fifo
(
   .DIADI({8'h0, data_in}),
   .DIPADIP(2'b0),
   .ADDRAWRADDR({7'b0, wr_pointer}),
   .WEAWEL({wr&(~fifo_full), wr&(~fifo_full)}),
   .ENAWREN(1'b1),
   .REGCEA(1'b0),
   .RSTA(1'b0),
   .CLKAWRCLK(clk),
   .DOADO(),
   .DOPADOP(),
   
   .DIBDI(16'h0),
   .DIPBDIP(2'b0),
   .ADDRBRDADDR({7'b0, read_address}),
   .WEBWEU(2'b00),
   .ENBRDEN(1'b1),
   .REGCEBREGCE(1'b0),
   .RSTBRST(1'b0),
   .CLKBRDCLK(clk),
   .DOBDO(data_out),
   .DOPBDOP()
);


Mein neues Mapping lässt sich einwandfrei synthetisieren. Nur leider 
funktioniert das Design beim späteren Test der CAN-Verbindung nicht. Mit 
wird immer der gleiche Wert als Empfangsnachricht angezeigt (was nicht 
stimmt).


Wo liegt mein Fehler?

Grüße
Steffen

Autor: Steffen Hausinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich vermute, dass ich dem Primitive irgendwie seine Parameter mitteilen 
muss. Ich habe nur leider überhaupt keine Ahnung, wie das in Verilog 
geht.

Offensichtlich wird die Kommentarzeile nach dem Schlüsselwort "synthesis 
attribute" geparst - kann das sein?

Autor: Steffen Hausinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Steffen Hausinger schrieb:
> Offensichtlich wird die Kommentarzeile nach dem Schlüsselwort "synthesis
> attribute" geparst - kann das sein?

Aha, "defparam" ist das Zauberwort! Das werde ich gleich ausprobieren!

Autor: Harald Flügel (hfl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Stefan,

ich könnte mir vorstellen, dass es sinnvoll ist, wenn Du das neue 
RAM-Modul RAMB8BWER so mit einem Wrapper umwickelst, dass die Ports und 
die Funktion des alten RAMB4_S8_S8 dabei rauskommen. Und dann lässt man 
die Quelldatei so wie sie ist.

Grüße,
Harald

Autor: Uwe Bonnes (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Wie waere es mit Code, der das Ram "infered" und nicht "instanziiert?

Im angehaengten Code als "write first"

PS: Gibt es einen deutschen Begriffe fuer "infered" ?

Autor: D. I. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Uwe Bonnes schrieb:
> PS: Gibt es einen deutschen Begriffe fuer "infered" ?

Inferieren

Autor: Harald Flügel (hfl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Uwe Bonnes schrieb :
> PS: Gibt es einen deutschen Begriffe fuer "infered" ?

Ich würde sagen "ableiten" im Sinne von "aus der Beschreibung ableiten".

Autor: Uwe Bonnes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine "Instanz" kenne ich, und daraus kann man "nstanziieren" ableiten, 
aber was ist ein "Infer" aus dem Du "Inferieren" ableitest. Da ist das 
gleich Denglich wie "gedownloadet"...

"Ableiten" finde ich in dem Kontext auch nicht so prickelnd...

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm, naja, die korrekte Übersetzung wäre "schlussfolgern", was ja auch 
treffend ist. Eine direkte deutsche Entsprechung gibts aber da wohl 
nicht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.