Hallo, ich studiere Elektrotechnik und arbeite zur Zeit an einem FPGA Projekt. Leider war in meinem Studium bisher nur sehr wenig VHDL Design dran. Von FPGAs haben wir eigentlich nur erfahren, dass es sie gibt. :( Ich nutze also dieses Projekt um mich selbst intensiv zu belesen. Ich habe ein Konzept erstellt und schon eine ganze Reihe funktionierender Module erstellt (Simuliert und Synthetisiert). Nun ist mein Ziel die einzelnen Module zu verbinden. In meinem Konzept ist ein Bus vorgesehen: - 30-40 Sender - ein Empfänger - 34 Bit breit Als ich mir das ausgedacht habe dachte ich an inout-Ports und ein cs leitung zu jedem Sender. Jetzt habe ich aber gelesen das es die nicht innerhalb von FPGAs gibt und ein Multiplexer als einzige Alternative bleibt. Das würde doch aber einen riesigen "Verdrahtnungsaufwand" bedeuten. Wie könnte man dieses Problem lösen? Das Signal seriell übertragen? Oder gibt es ein andere Möglichkeit die sich eigenen würde um die Ausgänge der nicht aktiven Sender auf "High Impedanz" zu schalten? Die Platform die ich verwende ist ein ECP3 von Lattice. Viele Grüße und Danke für eure Hilfe.
FPGA noob schrieb im Beitrag #4102283: > Das würde doch aber einen riesigen "Verdrahtnungsaufwand" bedeuten. Solange der MUX ins FPGA reinpasst ist das doch kein Problem. Fang das Design doch einfach mal an, und sieh dir an, was daraus wird. Wenns dann tatsächlich klemmt kannst du dir immer noch was ausdenken...
:
Bearbeitet durch Moderator
Es gibt Prozessorinterne Busse, für FPGA's ist der Wishbone weit verbreitet: http://en.wikipedia.org/wiki/Wishbone_%28computer_bus%29 http://cdn.opencores.org/downloads/wbspec_b4.pdf MfG,
Mit "Bus" mit meint er aber hier bidirektionale oder wenigstens auf Tristate schaltbare Signale im FPGA aber die gibts schon lange nicht mehr. Die meisten Sythesizer machen aber selber einen Mux draus, wenn man sowas intern beschreibt. Sauberer ist es natürlich gleich den Mux zu beschreiben.
FPGA noob schrieb im Beitrag #4102283: > Das würde doch aber einen riesigen "Verdrahtnungsaufwand" > bedeuten. Richtig, aber das musst du ja nicht von Hand machen. Diesen hässlichen Job nimmt dir deine Toolchain ab. Für dich ist der Mux nur ein paar Zeilen Code. Finde ich aber super, dass du dir Gedanken darüber machst. Denn dann bist du meiner Meinung nach auf dem richtigen Weg, in das Thema einzusteigen. Wenn du den Blick auf die Hardware nicht verlierst, wirst du guten HDL-Code schreiben. Weiter so und viel Freude beim Lernen :-)
Christian R. schrieb: > Sauberer ist es natürlich gleich den Mux zu beschreiben. Dann kann man nämlich auch gleich die Ports der Komponenten korrekt als einen "Eingangsbus" und einen "Ausgangsbus" gestalten und muss nicht in der Komponente schon mit einem inout-Port und Tristate-Buffern rumpfuschen...
Lothar Miller schrieb: > Dann kann man nämlich auch gleich die Ports der Komponenten korrekt als > einen "Eingangsbus" und einen "Ausgangsbus" gestalten Das sowieso.. aber in seinem Fall scheint das ja unidirektional zu sein. FPGA noob schrieb im Beitrag #4102283: > - 30-40 Sender > - ein Empfänger
Schlumpf schrieb: > ... unidirektional ... > FPGA noob schrieb: >> - 30-40 Sender >> - ein Empfänger Uuuups tatsächlich... ;-)
Hallo, danke für eure Antworten. Ich hatte irgendwie gehofft das es einen "schönen", einfachen Weg gibt. Ich konnte es heute mal ausprobieren und bin auf keine Probleme gestoßen. Ich werde es also als Multiplexer beschreiben, ohne inout. Mir fehlt leider noch das Gefühl dafür was in einem FPGA viel ist und was völlig normal. Viele Grüße
FPGA noob schrieb im Beitrag #4103858: > Mir fehlt leider noch das Gefühl dafür was in einem FPGA viel ist und > was völlig normal. Das ist egal. Wenn du 40 Out-Ports umschalten musst, dann passt der MUX entweder rein und ist schnell genug, oder er passt nicht rein oder er ist zu langsam. Und nur in den letzten beiden Fällen musst du tatsächlich was machen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.