www.mikrocontroller.net

Forum: FPGA, VHDL & Co. FPGA Dimensionierung


Autor: Samuel Schmidt (Firma: Student) (snowyrain)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte einen FPGA zu einem Schnittstellenwandler mit ein ganz wenig 
Logik machen und weis nicht wie ich den FGPA Dimensionieren soll. Also 
wie viele Logikzellen der FGPA haben muss. Gibt es da Faustformeln? Was 
ich gelesen habe ist, dass man nicht mehr als 50% der Logikzellen 
belegen soll, sonnst kann es Probleme beim Routen geben. Aber das bringt 
mich nicht mal weiter, ich habe noch immer keine Hausnummer.

Ich möchte gerne 32 RS485 Busse (langsame), mit einer Kommunikation von 
ca. 20Byte (6Nutzbyte) pro Zyklus, integrieren. Die über einen 
RS485Bus/Ethernet oder USB befeuert werden. Wie kann ich jetzt grob 
Abschätzen wie „stark“ der FGPA sein sollte?

Vielen Dank

Samuel

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Samuel Schmidt (Firma Student) (snowyrain)

>ich möchte einen FPGA zu einem Schnittstellenwandler mit ein ganz wenig
>Logik machen und weis nicht wie ich den FGPA Dimensionieren soll. Also

Di Aufgabe klingt eher nach CPLD. Was für ein Schnittstelle ist es denn?

>wie viele Logikzellen der FGPA haben muss. Gibt es da Faustformeln? Was

Mehr oder weniger.

>ich gelesen habe ist, dass man nicht mehr als 50% der Logikzellen
>belegen soll, sonnst kann es Probleme beim Routen geben.

Käse.

>Ich möchte gerne 32 RS485 Busse (langsame), mit einer Kommunikation von
>ca. 20Byte (6Nutzbyte) pro Zyklus, integrieren. Die über einen
>RS485Bus/Ethernet oder USB befeuert werden. Wie kann ich jetzt grob
>Abschätzen wie „stark“ der FGPA sein sollte?

FPGA? CPLD? Das macht man wahrscheinlich besser mit einem kleinen uC.
Und meinst du wirklich 32 Busse? Oder eher einen RS485 Bus mit 32 
Teilnehmern?

MFG
Falk

Autor: Samuel Schmidt (Firma: Student) (snowyrain)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

vielen Dank für die Antwort.

Ja 32Busse mit je einem Teilnehmer. Klingt komisch OK, warum also:
- Teilnehmer sind sehr langsam.
- Parallelität der Ausgaben und Eingaben. (Ich habe so ein Abbild des 
Systems von einem Zeitpunkt)
Ich sehe echt Probleme einem uC bei zubringen 32Teilnehmer in N ms 
abzufragen. Als Bussystem geht es nicht. Also muss ich es parallel 
machen. Da sehe ich beim Senden keine Probleme, da würde ein Timer 
reichen, aber beim Empfangen habe ein keine Garantierten Antwortzeiten, 
bräuchte also 32Timer (oder einen Timer und 32 Counter oder einen 
Mix(wie auch immer).
Oder übersehe ich einen Lösungsansatz?

Gruß

Samuel

Autor: Stefan Wimmer (wswbln)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Oder übersehe ich einen Lösungsansatz?

...32 kleine UARTS (gibt's z.B. den miniUART von Ovidiu Lupa auf 
OpenCores.org), 'nen Adressdekoder und ein wenig Interruptlogik im FPGA 
(ein FIFO wäre bei wirklich langsamen RS485-ern schon optional), dazu 
ein Controller entweder mit internem USB oder mit UART und externem 
FTDI-Chip?

Zur Abschätzung, wie gross das FPGA sein muss: einfach mal in VHDL 
zusammenschustern und durch die Toolchain des Herstellers Deiner Wahl 
drehen. Soviel Zeit muss sein....

Grüße aus Berlin-Tempelhof,
Stefan

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Samuel Schmidt (Firma Student) (snowyrain)

>Ja 32Busse mit je einem Teilnehmer. Klingt komisch OK, warum also:

Dann ist es kein Bus mehr.

>- Teilnehmer sind sehr langsam.

Umso mehr spricht für einen uC, z.B. AVR.

>- Parallelität der Ausgaben und Eingaben. (Ich habe so ein Abbild des
>Systems von einem Zeitpunkt)

Wie parallel brauchst du es denn WIRKLICH? 1ns, 1us, 1ms?

>Ich sehe echt Probleme einem uC bei zubringen 32Teilnehmer in N ms
>abzufragen.

Wie gross ist N?
Wieviel bytes werden denn dabei versandt?

> Als Bussystem geht es nicht.

Sagt wer?

> Also muss ich es parallel
>machen.

du bist gerade dabei, dich zu verrennen, weil du nciht über den 
Tellerand schauen WILLST!

>Oder übersehe ich einen Lösungsansatz?

Höchstwahrscheinlich.

Sag mal lieber konkret, um was für Zielgeräte es sich handelt und wie 
die kommunizieren.

@ Stefan Wimmer (wswbln)

>...32 kleine UARTS (gibt's z.B. den miniUART von Ovidiu Lupa auf
>ein Controller entweder mit internem USB oder mit UART und externem
>FTDI-Chip?

>Zur Abschätzung, wie gross das FPGA sein muss: einfach mal in VHDL
>zusammenschustern und durch die Toolchain des Herstellers Deiner Wahl
>drehen. Soviel Zeit muss sein....

Richtig. Aber von fast allen Herstellern gibt es massgeschneiderte UARTs 
für ihre FPGAs, da passen locker 32 Stück in die kleineren rein.

http://www.xilinx.com/support/documentation/applic...

MfG
Falk

Autor: Samuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Vielen Dank für die Antworten, ich versuche auf alles zu Antworten.

Ich denke mal ich gehe erst einen Schritt zurück (Also nicht 
Dimensionierung, sonders Systemwahl)

Im Prinzip ist der jetzige Aufbau kein Bus mehr. Stimmt. Ich möchte die 
Übertragung von 32 Teilnehmern (10Nutzbyte/Teilnehmer) in 4ms hin und 
zurück erledigt haben. Also PC<->Gerät. Alles soll synchron sein. Meine 
theoretischen Berechnungen erfordern ein paralleles Ansteuern aller 
Geräte.
Es werden je nach Teilnehmer 7 bis 25Byte gesendet. Bei einer 
Geschwindigkeit von 20k/bit bis 250k/bit. Die Teilnehmer sind in der 
Regel Schrittsteuermotoren (mit einem RS485 Interface one Wire mit TTL 
Pegel (Ok, .. ich weiß …) ), mit einer Art Seriellem Interface, die mit 
ganz geringer Zusatzbeschaltung ansteuerbar sind.

Zu FPGAs und uC.  Ich bin großer uC Fan und mag FPGAs nicht wirklich. 
FGPAs sind sehr mächtig aber auch schwierig.
Meine erste Idee war einen uC zunehmen, beim Senden sehe ich auch keine 
großen Probleme. Aber beim empfangen. Senden könnte man mit einem Timer 
machen, das Empfangen aber nicht, da die Geräte nicht gleichmäßig 
Antworten (ist vom Zustand der Schrittsteuermotoren abhängig, wie stark 
der PID Regler gerade arbeiten muss).
Wie kann ich den 32 „Serielle“ Schnittstellen parallel mit einem uC 
befeuern? Zudem brauche ich dann ja noch was überlagertes für die 
Übertragung zum PC.

Gruß

Samuel

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Samuel (Gast)

>Übertragung von 32 Teilnehmern (10Nutzbyte/Teilnehmer) in 4ms hin und
>zurück erledigt haben. Also PC<->Gerät. Alles soll synchron sein.

Warum? Und wie "Synchon" ist bei dir synchron? Ausserdem, auf einem Bus 
kann man eine Broadcast-Message senden, die empfangen alle Teilnehemer 
gleichzeitig ud können damit synchron ihren aktuellen Stand 
einfrieren/kopieren, der dann von jedem einzeln abgeholt wird.

>Es werden je nach Teilnehmer 7 bis 25Byte gesendet. Bei einer

Macht 25x32*10 = 8000 Bit.

Wenn das alles in 4ms passieren soll sind das mind. 2 Mbit/s nötig!!

>Wie kann ich den 32 „Serielle“ Schnittstellen parallel mit einem uC
>befeuern?

Mit 8 mal 4fach UART, gibt es fertig mit FIFO als IC.

> Zudem brauche ich dann ja noch was überlagertes für die
> Übertragung zum PC.

MFG
Falk

Autor: Samuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
WG: Warum Synchon

Damit das Systemabbild so genau wie möglich ist, das ermöglich später 
einige Berechnungen weg zulassen. Darum so synchron wie ein vertretbarer 
Aufwand erlaubt.

WG: Broadcast-Message, …

Das können die Bus-Teilnehmer leider nicht.

WG: Wenn das alles in 4ms passieren soll sind das mind. 2 Mbit/s nötig!!

Ja, das ist schlecht und deckt sich mit meinen Berechnungen ich bin noch 
etwas höher. Darum sollen die Teilnehmer parallel betreiben werden. Denn 
Die Übertragung benötigt bis zu 25Byte es werden allerdings nur 10 
Nutzbyte übertragen. Darum dachte ich an eine USB Schnittstelle oder 
Ethernet das Broadcast Packete sendet.

WG: 4Fach UART

Der Chip sieht interessant aus, ich bin gerade dabei die Datenblätter 
verschiedener Hersteller durch zu schauen.

Das würde das Software Systemdesign wahrscheinlich erheblich 
vereinfachen. Da nenn Atmel mit CAN Bus dran und gut ist. Ich werde mir 
mal durch sehen. Das könnte mich vom FPGA weg bringen.

Vielen Dank

Samuel Schmidt

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.