Forum: FPGA, VHDL & Co. Großer Block RAM für FT601


von Michael (Gast)


Lesenswert?

Hallo Leute,

bisher habe ich immer einen Virtex 5 verwendet. Dieser ist ja schon 
etwas in die Jahre gekommen. Ich nächsten Projekt möchte ich den FT601 
verwenden. Dieser benötigt jedoch eine sehr großen Buffer. Jetzt habe 
ich 2 Optionen.

1. Den Virtex 5 zu behalten, damit kenne ich mich am besten aus und 
einen externen PSRAM mit 64MBit (200MHz Takt, 8Bit Datenbusbreite und 
DDR--> somit eine Bandbreite von 400MB/s) davon denn 2 Stück so das icg 
ich den einen schreiben kann und aus dem anderen lesen.

2. Auf einen Kintex-7 FPGA zu wechseln. Dieser besitzt ca. 12MBit 
internen Block RAM.

Jetzt bin ich mir unsicher welche Lösung ich umsetzen soll. Der neue 
FPGA bietet für die Zukunft ja mehr Möglichkeiten wegen den DSP 
Einheiten. Jedoch lieber einen Spatz in der Hand als die Taube auf dem 
Dach. Leider habe ich nicht besonders viel Zeit für die Umsetzung daher 
sollte es gleich beim ersten mal funktionieren.

von Achim S. (Gast)


Lesenswert?

Michael schrieb:
> Dieser benötigt jedoch eine sehr großen Buffer.
.....
> 2. Auf einen Kintex-7 FPGA zu wechseln. Dieser besitzt ca. 12MBit
> internen Block RAM.

Na reichen dir denn die 12MBit als "sehr großer Buffer" oder brauchst du 
die 2*64MBit, die du bei deinem Virtex 5 dranhängen willst? Das wäre ja 
schon mal ein ziemlich relevantes Entscheidungskriterium.

Michael schrieb:
> Leider habe ich nicht besonders viel Zeit für die Umsetzung daher
> sollte es gleich beim ersten mal funktionieren.

Das größte Hindernis für den schnellen Umstieg dürfte imho sein, dass 
der Virtex 5 mit der ISE bearbeitet wird, der Kintex 7 mit Vivado. Die 
Umstellung geht nicht ganz schnell, wenn du nicht schon mal erste 
Erfahrungen mit Vivado gesammelt hast.

Andererseits käme ich nie auf die Idee, heute ein neues Design noch mit 
einem Virtex 5 zu beginnen.

von Gustl B. (gustl_b)


Lesenswert?

Wo hast du das her, dass der einen großen Puffer braucht? Der ist doch 
selber ein FIFO und hat einen Puffer eingebaut.

von Michael (Gast)


Lesenswert?

Der FTDI601 benötigt ab und zu mal Pause von einigen ms dies kann man am 
busy pin messen.

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


Lesenswert?

Michael schrieb:
> Pause von einigen ms
Und warum stört die?

> Der FTDI601 benötigt ab und zu mal Pause von einigen ms dies kann man am
> busy pin messen.
Den Beitrag "FT601 macht eine sehr lange Denkpause" deines Namenskollegen 
hast du shcon gesehen?

von Michael (Gast)


Lesenswert?

Jo das war ich selber. Das war damals eine Eprobung. Nun geht es in 
Richtung Produkt. Momentan tendiere ich mehr in Richtung externen PSRAM, 
da es die auch mit 64MBit gibt (S27KS0642GABHI030). Der Preis dabei sit 
sehr günstig. Wenn ich z.B. 60 BlockRams zu einem großem BlockRAM 
zusammenschalte habe ich Bedenken das die Performance sehr stark 
einbrechen wird, da die BlockRams sehr stark über den FPGA vertreilt 
sind.

Bisher hatte ich immer Camera Link als Interace benutzt. Da habe ich 
keinen zusätzlichen Buffer benötigt. Nur leider soll das Interface auf 
USB 3 geändert werden.

Die ADCs können kurzzeitig einen sehr großen Peakdatenstrom erzeugen. 
Den will ich intern auf BlockRams puffern und dann langsam in die 
externen PSRAMs schreiben.

von Duke Scarring (Gast)


Lesenswert?

Lothar M. schrieb:
> Michael schrieb:
>> Pause von einigen ms
> Und warum stört die?
Die Pausen stören immer dann, wenn kontinuierlich Daten von einer 
Messung bzw. einem ADC kommen und diese Daten lückenlos weggeschrieben 
werden müssen, um sie dann offline zu untersuchen.

Duke

von Gustl B. (-gb-)


Lesenswert?

Michael schrieb:
> Der FTDI601 benötigt ab und zu mal Pause von einigen ms dies kann man am
> busy pin messen.

Ja, sehe ich bei mir leider auch die Pausen, aber ich glaube nicht, dass 
die da seien müssen.

Im Thread Beitrag "FT600 ucPipeID 0x82 - Bedeutung der Bits?" hatte ich da was 
zu geschrieben. Ich verwende den FT600 und der zieht TXE_N die meiste 
Zeit auf High, ich kann/darf also vom FPGA nicht schreiben. Warum das so 
ist weiß ich nicht und das wurde in dem Thread auch nicht gelöst. Ich 
vermute das liegt an meinem C Programm oder dem Treiber.

Eigentlich sollte USB3 vom Timing her deutlich kürzere Pausen machen wie 
USB2. Du solltest also nur einen kleinen FIFO im FPGA brauchen.

Als Test kannst du im FPGA einfach mal ohne FIFO aufsteigende Werte 
ausgeben immer wenn TXE_N Low ist. Also einen 16 Bit Zähler und immer 
wenn TXE_N Low ist wird der um 1 erhöht und ausgegeben. Dann kannst du 
deine maximale Transferrate messen. Mich würde da mal interessieren 
welche Datenrate du schaffst und wie dein Programm auf PC Seite aussieht 
mit dem lu aus dem FT601 liest.

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.