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


von Jochen (Gast)


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

von Lattice User (Gast)


Lesenswert?

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

Das Stichwort hier heisst Dual Ported RAM

von Lattice User (Gast)


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.

von Thomas R. (Firma: abaxor engineering) (abaxor)


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

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


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

von Jochen (Gast)


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

von Wat (Gast)


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.

von franke (Gast)


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ß

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


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.

von Jochen (Gast)


Lesenswert?

Sorry, mein Fehler. Es sind wohl 120KBits

von Lattice User (Gast)


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.

von Jochen (Gast)


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?

von franke (Gast)


Lesenswert?

ja,

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

von Lattice User (Gast)


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.

von Uwe (Gast)


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.

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.