Forum: FPGA, VHDL & Co. Serialisieren von 64 32 Bit words


von Sawtooth (Gast)


Lesenswert?

Hallo!

Ich bekommen ein 256 bit breites Signal, das in 64 32 Bit Words 
unterteilt und eines nach dem anderen gesendet werden soll.
Nun gibt es da zwei Herangehensweisen:
1. Ich konnte ein Shift-Register mit den 64 Words füllen und dann eines 
nach dem anderen heraus shiften.
2. Ich könnte einen Counter laufen lassen und dann den jeweiligen Teil 
aus dem Signal demuxen.
Prinzipiell funktioniert ja beides. Aber was wäre auf einem Xilinx 
Virtex-6 schneller?

Vielen Dank im Voraus!
Sawtooth

von Jo (Gast)


Lesenswert?

256 = 64*32   ?

von Sawtooth (Gast)


Lesenswert?

Ups, ich meinte ein 256 byte (= 2948 bit) breites Signal. ^^>

von Jo (Gast)


Lesenswert?

2948 = 64*32   ?

von Thomas K. (kalka)


Lesenswert?

Er meinte vermutlich 2048 Bit, wie du dir sicherlich schon gedacht hast 
;)

von Sawtooth (Gast)


Lesenswert?

Ja, natürlich. ;-)

Also, hat da jemand Erfahrungswerte, was schneller ist?

von Christian R. (supachris)


Lesenswert?

Am schnellsten auf dem Virtex vermutlich die Kombination aus einem 
OSERDES und einer vorgeschalteten Logik (oder FIFO), die die 2048 erst 
mal auf die Breite des OSERDES Eingangs bringt. Geht natürlich nur, wenn 
du die serialisierten Daten nur extern brauchst.

von Sebastian (Gast)


Lesenswert?

Ich finde es erschreckend das Leute die wenig Ahnung von FPGAs haben 
einen Virtex 6 verwenden :-)

Dieser Baustein ist doch so extrem teuer. Er verwendet sicherlich nicht 
mal 1% der LUT und FFs.

Wieso nimmst Du denn keinen Spartan 6 oder ARTIX7 die sind doch viel 
günstiger und erledigen dies sicherlich auch.

Wie hoch muss denn die Übertragungsrate sein.

von Sawtooth (Gast)


Lesenswert?

@supachris:
Nein, das Signal wird intern noch verarbeitet, bevor es raus geht. Aber 
ein FIFO dazwischen zu schalten ist eine gute Idee, da ich nicht 
kontinuierlich senden muss. Danke für den Denkanstoß! :-)

@Sebastian:
> Dieser Baustein ist doch so extrem teuer. Er verwendet sicherlich nicht
> mal 1% der LUT und FFs.

Mal schauen, was map so meint:

Slice Logic Utilization:
  Number of Slice Registers:                16,060 out of 301,440    5%
    Number used as Flip Flops:              16,059
    Number used as Latches:                      1
    Number used as Latch-thrus:                  0
    Number used as AND/OR logics:                0
  Number of Slice LUTs:                     17,866 out of 150,720   11%
    Number used as logic:                   16,138 out of 150,720   10%
      Number using O6 output only:          13,057
      Number using O5 output only:           1,443
      Number using O5 and O6:                1,638
      Number used as ROM:                        0
    Number used as Memory:                       0 out of  58,400    0%
    Number used exclusively as route-thrus:  1,728
      Number with same-slice register load:  1,609
      Number with same-slice carry load:       119
      Number with other load:                    0


> Wieso nimmst Du denn keinen Spartan 6 oder ARTIX7 die sind doch viel
> günstiger und erledigen dies sicherlich auch.

Weil die kein radiation hardened Äquivalent haben.

> Wie hoch muss denn die Übertragungsrate sein.

1 GBit/s. Allerdings nicht kontinuierlich.

von Fragender (Gast)


Lesenswert?

Kann jemand noch etwas zu folgendem (vielleicht auftretendem) Problem
sagen: Ich habe irgendwo im Kopf, dass es eine Limitierung gibt,
wie viele Bits zugleich im FPGA schalten können. Gibt es so etwas?
Würde man jetzt ein riesiges Schieberegister erstellen (ohne explizite
HW-Unterstützung wie SERDES), 2048 lang, dass bei jedem Takt 2048 Bit
umlädt, würde dies funktionieren?

von Christian R. (supachris)


Lesenswert?

Im FPGA ist das weniger ein Problem, eher an den Ausgangs-Pins. Da gibts 
einen Wert, wieviele Ausgänge gleichzeitig (pro Bank meistens) schalten 
dürfen. SSO heißt das im englsichen. Synchronous switching outputs. Im 
FPGA schalten auch im Normalbetrieb weitaus mehr als 2048 Bits 
gleichzeitig....

von P. K. (pek)


Lesenswert?

Fragender schrieb:
> Würde man jetzt ein riesiges Schieberegister erstellen (ohne explizite
> HW-Unterstützung wie SERDES), 2048 lang, dass bei jedem Takt 2048 Bit
> umlädt, würde dies funktionieren?

Problemlos, vorausgesetzt dein Power-Konzept (Stromversorgung, 
Abblockung etc.) ist einigermassen seriös gebaut.

Falls das nicht ginge, würde es kaum Sinn machen, reisige FPGA's mit 
vielen BRAM und DSP-Blocks, usw. herzustellen...

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


Lesenswert?

Sawtooth schrieb:
>> Wie hoch muss denn die Übertragungsrate sein.
> 1 GBit/s. Allerdings nicht kontinuierlich.
Und wieviel effektiv?

Christian R. schrieb:
> Synchronous switching outputs.
Ich kenne das als Simultaneous Switching Outputs...   ;-)

von Christian R. (supachris)


Lesenswert?

Lothar Miller schrieb:
> Ich kenne das als Simultaneous Switching Outputs...   ;-)

Ups :) Stimmt natürlich.

von Sawtooth (Gast)


Lesenswert?

@lkmiller:
>>> Wie hoch muss denn die Übertragungsrate sein.
>> 1 GBit/s. Allerdings nicht kontinuierlich.
> Und wieviel effektiv?

Das kann man nicht sagen. Die Daten werden vom FPGA immer dann 
herausgegeben, wenn sie angefordert werden. Das ist aber auch nicht 
wichtig. Wichtig ist nur, dass dies mit einer bestimmten Geschwindigkeit 
getan werden muss (125 MB/s). Daher auch die Frage, ob das mit einem 
Schieberegister oder einem Demuxer effizienter geht. :-)

@Fragender:
> Kann jemand noch etwas zu folgendem (vielleicht auftretendem) Problem
> sagen: Ich habe irgendwo im Kopf, dass es eine Limitierung gibt,
> wie viele Bits zugleich im FPGA schalten können. Gibt es so etwas?
> Würde man jetzt ein riesiges Schieberegister erstellen (ohne explizite
> HW-Unterstützung wie SERDES), 2048 lang, dass bei jedem Takt 2048 Bit
> umlädt, würde dies funktionieren?

Klar ist das möglich. Das habe ich ja oben schon als eine der beiden 
Möglichkeiten geschrieben. Ich habe das jetzt auch mal implementiert, da 
ich vermutet habe, dass hier weniger zeitraubende Logic gebraucht wird 
als bei einem Demuxer. Das ist auch im Prinzip richtig, allerdings geht 
dafür recht viel fürs Routing drauf (0.744ns logic, 7.208ns route). Bei 
Zeiten versuche ich das auch mal mit einem Demuxer, aber viel Hoffnung, 
dass es schneller ist, habe ich nicht. ;-)

von Jo (Gast)


Lesenswert?

>Bei Zeiten versuche ich das auch mal mit einem Demuxer, aber viel Hoffnung,
>dass es schneller ist, habe ich nicht. ;-)

Das hat mir Hoffen nichts zu tun. Probier einfach beides aus, schau Dir 
an was dabei herauskommt, und lerne daraus.

von Martin (Gast)


Lesenswert?

Das hört sich ja nach GBit Ethernet als Schnittstelle an.

Was ist denn bitte schön radiation hardened Äquivalent

von Sawtooth (Gast)


Lesenswert?

> Das hört sich ja nach GBit Ethernet als Schnittstelle an.
So was ähnliches, ja. ;-)

> Was ist denn bitte schön radiation hardened Äquivalent
http://www.xilinx.com/applications/aerospace-and-defense/space/index.htm

von Martin (Gast)


Lesenswert?

Ich frag lieben nicht was Du damit vor hast es sieht sehr aufwändig aus 
:-)

Auf jedenfall viel Erfolg

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.