www.mikrocontroller.net

Forum: FPGA, VHDL & Co. 1tes Projekt mit dem Lattice EBR


Important announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Jochen (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hallo allerseits,

ich arbeite zum ersten mal mit einem FPGA (Lattice XP2), daher meine 
(Neulings) Fragen.
In dem Projekt werden große Daten Mengen (bis 120 KB) zwischen einen 
Mikrocontroller und dem FPGA seriel ausgetauscht, diese Daten werden im 
FPGA RAM (EBR Pseudo DUAL RAM) geschrieben (oder davon ausgelesen).
Bei einem Trigger soll der FPGA einen SteuerungsProzess starten: FPGA 
liest mit einer bestimmten Frequenz seine RAMzellen nach einander und 
gibt den Wert über bestimmte IOs wieder aus.

Wie kann man das am besten realisieren?
ICh habe mir gedacht ein Modul für die Kommunikation mit dem uC, der 
Daten im/vom RAM schreiben/auslesen kann, und ein Modul für die 
Steuerung der IOs, dieses Modul liest dann auch werte vom RAM aus.

- Wie kann ich es machen das beide Module Daten vom gleichen RAM 
auslesen?

- Werden da keine Konflikte auftauchen, wenn beide Module gleichzeitig 
verschiedene RAM Adressen lesen wollen?

Vielen Dank

Autor: Lattice User (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Jochen schrieb:
> - Werden da keine Konflikte auftauchen, wenn beide Module gleichzeitig
> verschiedene RAM Adressen lesen wollen?

Das Stichwort hier heisst Dual Ported RAM

Autor: Lattice User (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Jochen schrieb:
> ich arbeite zum ersten mal mit einem FPGA (Lattice XP2), daher meine
> (Neulings) Fragen.
> In dem Projekt werden große Daten Mengen (bis 120 KB) zwischen einen

Übrigens, der grösste XP2 hat 48 Ramblöcke -> 96 KB. Also nix mit 120 
KB.

Autor: Thomas Reinemann (Firma: abaxor engineering) (abaxor)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Jochen schrieb:
> - Werden da keine Konflikte auftauchen, wenn beide Module gleichzeitig
> verschiedene RAM Adressen lesen wollen?

Ganz im Gegenteil, es wird Probleme geben, wenn gleichzeitig auf die 
selbe Adresse geschrieben wie gelesen wird.

Tom

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite Flattr this
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Thomas Reinemann schrieb:
> Ganz im Gegenteil, es wird Probleme geben, wenn gleichzeitig auf die
> selbe Adresse geschrieben wie gelesen wird.
Ganz im Gegenteil: es wird Probleme geben, wenn fast gleichzeitig auf 
die selbe Adresse geschrieben wie gelesen wird.
;-)

Autor: Jochen (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hallo,
>Das Stichwort hier heisst Dual Ported RAM
ja, ein Port für schreiben und nur eins fürs Lesen. Beide Module lesen 
dann aus einen einzigen Port.

>Übrigens, der grösste XP2 hat 48 Ramblöcke -> 96 KB. Also nix mit 120
KB.
XP2-5 hat 166 Kbits als EBR SRAM

>Ganz im Gegenteil, es wird Probleme geben, wenn gleichzeitig auf die
>selbe Adresse geschrieben wie gelesen wird.

Das ist ok, ich glaube es wird nur den alten Wert ausgelesen!!, beim 
nächsten Triggerwird dann der richtige Wert ausgelesen

Mein Problem liegt eigentlich bei der Konzepterstellung:

Gedacht habe ich mir das ganze in zwei Modulen: einer für die 
Kommunikation und einer für die Steuerung und eine RAM Instanz.

Kann ich von beiden Modulen vom selben RAM lesen??
Muss ich das Lesen irgendwie in einer "Funktion" packen, die in beiden 
Modulen aufgerufen wird!

Bin dankbar für richtige Ideen für den Anfang

Autor: Wat (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Versuch doch zunächst einmal eine Art Spezifikation deines Projektes zu 
erstellen, ganz ohne Code. Einfach nur mit Prosa und Skizzen.

Nicht das Codieren ist am Anfang wichtig, sondern die Vorstellungskraft 
bezüglich der Problemstellung.

Autor: franke (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
>>Übrigens, der grösste XP2 hat 48 Ramblöcke -> 96 KB. Also nix mit 120KB.
>XP2-5 hat 166 Kbits als EBR SRAM

Dann klär vielleicht auch gleich mal den Unterschied zwischen 
KiloByte(KB) und KiloBit(Kb). Was brauchst du wirklich...

Gruß

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite Flattr this
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Jochen schrieb:
> Kann ich von beiden Modulen vom selben RAM lesen??
Ja, sogar von der selben Adresse. Lesen ist unkritisch, weil ja nichts 
verändert wird.

Autor: Jochen (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Sorry, mein Fehler. Es sind wohl 120KBits

Autor: Lattice User (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Jochen schrieb:
> Hallo,
>>Das Stichwort hier heisst Dual Ported RAM
> ja, ein Port für schreiben und nur eins fürs Lesen. Beide Module lesen
> dann aus einen einzigen Port.

Nein, der EBR kann als echter Dualport RAM konfiguriert werden, beide 
Ports können unabhängig voneinander lesen und schreiben.

Autor: Jochen (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Lattice User schrieb:
> Nein, der EBR kann als echter Dualport RAM konfiguriert werden, beide
> Ports können unabhängig voneinander lesen und schreiben.

heißt das ich kann dieselbe RAM-Zelle aus zwei Ports lesen und 
schreiben?

Autor: franke (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
ja,

aber halt nicht gleichzeit (und halt wirklich gleichzeit in sinn von ns) 
schreiben.

Autor: Lattice User (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Jochen schrieb:
> heißt das ich kann dieselbe RAM-Zelle aus zwei Ports lesen und
> schreiben?


Radio Eriwan :-)

Lesen ist kein Problem, wenn beide Seiten schreiben ist das Ergebnis 
undefiniert, insbesondere wenn beide Clocks asynchron sind. Es ist auch 
undefinert wenn von einer Adresse gelesen wird auf die, die andere Seite 
gerade schreibt. Im Extremfall sind ein paar Bits alter Inhalt und ein 
paar neuer.

Der EBR hat noch ein Writethrough Feature, aber ob wie gut das den 
Konflikt auflösen kann weiss ich nicht. TN1137 studieren und 
ausprobieren.

Autor: Uwe (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Tja man kann auch im FPGA ein vergleich der Read/Write Pointer machen 
und wenn beide gleich sind ein Busy Bit an einem der Ports setzen. 
Arbitierungslogic genannt.

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




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 erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net