Hallo kann mir jemand sagen wo ich ein RS flip flop bei Xilinx ISE in Schematics finde? Unter Catigories ist klar, aber welches von denen ist ein normales RS flip flop.
Gibt es explizit so nicht, Nimm FDRS und lege C und D auf Masse. Mach es aber besser synchron.
> was meinst du mit synchron? Nimm FDRS und lege R und S auf Masse ;-) Synchrone (getaktete) Designs sind die Standard-Technik, wie heutzutage PLDs (speziell FPGAs) programmiert werden. Es gibt einen (In Zahlen: 1) globalen Takt auf dem ganzen FPGA. Alle FFs sind daran angeschlossen und werden nur mit dem Clock-Enable gesteuert. In einer Hochsprache lässt sich das sehr elegant beschreiben. Das wäre sowieso mein Tipp an dich: Kauf dir ein VDHL-Buch und arbeite das durch. Bei der Menge FFs, die ein FPGA hat, verlierst du mit Schematics sehr sehr schnell den Überblick.
????????????????????????? Was soll ich machen? Ich habe einfach D und C auf Masse gelegt.
frank wrote: > Was soll ich machen? Die Antwort kam schon vor der Frage: >> Lothar Miller wrote: >> Das wäre sowieso mein Tipp an dich: Kauf dir ein VDHL-Buch und arbeite >> das durch. Bei der Menge FFs, die ein FPGA hat, verlierst du mit >> Schematics sehr sehr schnell den Überblick. Jetzt ohne Witz: Du bist offenbar gerade dabei, etwas Neues zu lernen. Warum lernst du nicht eine Programmiersprache, die von allen FPGA-Herstellern unterstützt wird? Diese Schaltplanzeichnerei, die du gerade lernst (und offenbar noch ganz am Anfang stehst) ist auch nichts anderes als eine Programmiersprache. Zudem ist so ein Schaltplan-Design nicht portabel z.B. auf einen anderen FPGA-Hersteller, oder auch nur auf eine andere Technik (z.B. CPLD). Und: Du wirst kaum Unterstützung finden, weil fast keiner ein PLD-Design mit Schaltplänen macht.
Ich mach sowas öfters mit Schaltplan, aber nur da, wo es sich anbietet. Aber asynchrone Geschichten verbieten sich von selbst.
>Aber asynchrone Geschichten verbieten sich von selbst.
Keineswegs. Innerhalb einer Taktperiode (bei multicycle auch mehr) ist
eh alles asynchron. Dort kannst Du bauen, was Du willst. Du musst nur
wissen, was Du tust. Mit aynchronen Designs kann man z.B. sehr schnelle
state machines bauen, die z.B. bei einem "langsamen" Grundtakt dafür
sorgen, dass man mit gleich schnell getakter Hardware, wie RAMs, im
Bezug auf Delays und zero wait states noch zurecht kommt.
Ja, das ist klar. Ich wetter aber, dass er sowas wie eine Toggle-Taste bauen will. Ein Impuls am S setzt das FF, ein Impuls am R setzt es zurück, und das ohne Takt. Wenn er es synchron bauen wöllte, würde ja ein JK-FF dafür prima gehen.
@ Gast (Gast) >>Aber asynchrone Geschichten verbieten sich von selbst. Zu 99,99999% >Keineswegs. Innerhalb einer Taktperiode (bei multicycle auch mehr) ist >eh alles asynchron. Dort kannst Du bauen, was Du willst. Quark. was du beschreibst is KOMBINATORIK, das hat mit ASYNCHRONITÄT erstma GAR NICHT zu tun, wird aber gern in einen Topf geworfen. > Du musst nur wissen, was Du tust. Ach sooo, na dann ;-) > Mit aynchronen Designs kann man z.B. sehr schnelle >state machines bauen, die z.B. bei einem "langsamen" Grundtakt dafür >sorgen, dass man mit gleich schnell getakter Hardware, wie RAMs, im >Bezug auf Delays und zero wait states noch zurecht kommt. Käse^3. Lies mal was zum Thema Taktung FPGA/CPLD. MFg Falk
> Mit aynchronen Designs kann man z.B. sehr schnelle state machines bauen Sowas nennt man dann auch gern mal kombinatorische Schleife ;-) Damit kannst du im FPGA einen Oszillator bauen, der mit der maximal möglichen Frequenz schwingt. Oft sogar, ohne dass du es willst.
Das stimmt so nicht ganz, ich habe vor Jahren (ca. 1998/99) mit einem Altera Flex8k (8052?) eine Zustandsmachine verwendet, das geht ohne Probleme auch Asynchron wenn man die Zustände mittel einschrittischem Code (z.B.Crey-Code) definiert. Man muss dann zwar dafür sorgen das bei jedem Zustandsübergang nur ein Bit ändert, aber man spart sich die Aufsynchronisierung der alten Zustandsbits. Das geht im Normalfall so lange gut, so lange die Setup- und Hold-Zeiten nicht verletzt werden. Wenn ein weiterschalten von Zuständen von Eingangssignalen am Chip und dem aktuellen Zustand abhängig ist geht das immer und führt zu einem System das bei jedem neuen Takt einen Zustandswechsel ohne Synchonisationstakt bewerkstelligt. Mit freundlichen Grüßen, Ulk
Hallo Ulk, Kein gutes Beispiel zu sagen ich hab in einem Flex8k eine async. Maschine benutzt und das geht gut solange mittels einschrittigen Code... Das mag in deinem Beispiel gut gegangen sein solange die folgenden Parameter gleich bleiben: - Technologie, Strukturgröße - Synthesewerkzeugversion, Strategieeinstellungen - Gesamtgröße des Designs - sonstige Verdrahtung ( ausserhalb deiner Statemaschine) innerhalb des Designs - Verlagerung der Verdrahtung der statemaschinesignale auf andere Signalpfade Veränderst Du aber auch nur eins der oben genannten Parameter kann Dir dein Konstrukt zusammenfallen. Bei Altera z.B. sollten dann die Zustands-FF am besten auf der gleichen LE sitzen, wenn sich da was unpassend verschiebt weil das Synthesetool Platz braucht oder meint zu brauchen wirds ne Gradwanderung. Die Synthesewerkzeuge und die zugrundeliegenden Bausteinmodelle sind schlicht und ergreifend nicht auf deine Nutzung abgestimmt... Ich habe in meiner Altzeit (1988 mit XC2064 Gott hab ihn selig bis irgendwann um 2000 mit besagten Flex8k ) auch solche Konstrukte benutzt, wenns das Problem nicht anders zu erschlagen war. Aber wie schon beschrieben das war immer eine Gradwanderung: Eine neues Chiplos in der Produktion oder zusätzlich zu implementierende Funktionen oder ein Softwareversionswechsel aufgrund enthaltener Softwarefehler führten dann immer wieder mal zu einem "Hallo"... Heutzutage halte ich das im äussersten Notfall für einen versierten Entwickler nach dem alle anderen Hilfsmittel ausgeschöpft sind und nur für ein bestehendem ausgewachsenem System für vertretbar, aber nicht als Arbeitsansatz... Gruss Andreas
Hallo Andreas, ich kann verstehen was du sagst, stimme dir aber in dem Fall nicht einfach zu. Wenn zum weiter schalten von einem zu einem nächsten Zustand mehrere Signale einen bestimmten Zustand haben müssen und hier eben auch der Zustand selber eingeht, so spielt es zwar eine Rolle wann dafür wann der nächste Zustand erreicht wird, aber nicht ob er sicher erreicht wird. Das geht natürlich dann in den "Sack", wenn nachfolgende Logik diesen Zustand in einer bestimmten Zeit sehen müssen, aber dann helfen sowieso nur Waitstates. Im Grunde genommen habe ich so was ähnliches wie Petrinetze aufgebaut. Aber ich habe mal eine andere Frage, weist du wie man in VHDL mit Xilinx CPLDs (XC9536XL oder XC9572XL) ein Wandlung eines Differenzial-Taktsignales umwandeln kann? Ich dachte dabei an ein D-FF mit Asyn. Set/Reset, etwa so: procedure (clk_p, clk_n) begin if (clk_p = '1') and (clk_n = '0') then oClk <= '1'; elsif (clk_p = '0') and (clk_n = '1') then oClk <= '0'; else oClk <= oClk; endif; end procedure; (Aus dem Gedächtnis hingeschrieben, kann Fehler enthalten) Leider macht die Systese daraus Mist, warum auch immer. Ich habe zwar schon einiger mit CPLDs und FPGAs gemacht, aber bis jetzt noch nicht in VHDL. In AHDL würde ich da ganz einfach auf über clk.aset und clk.arst zugreifen aber wie geht das in VHDL? Gruß, Ulk
> D-FF mit Asyn. Set/Reset Was da beschrieben ist, ist ein Latch. Ein D-FF hat einen Takteingang. Wenn das Taktsignal 0 und 5V hat, warum verwendest du es nicht direkt? Also z.B. "nur" clk_p? Oder können (bzw. dürfen) auch die beiden verbotenen Zustände auftreten (clk_p=clk_n)? > In AHDL würde ich da ganz einfach auf über clk.aset und clk.arst > zugreifen aber wie geht das in VHDL? Wenn du unbedingt so eine Trickserei machen willst (mit Kombinatorik auf Set bzw Reset) dann instantiiere ein Primitive FDRS. Damit hast du Zugang auf alle Anschlüsse des FFs.
Was ist den gegen graphische Designs einzuwenden? Also zumindest für die top entity sind sie eine prima Sache, um die Übersicht deutlich zu erhöhen. Und bei uns im Haus gibt es jede Menge Leute, die alles graphisch entwerfen. Und normalerweise entscheiden sich Firmen für Xilinx oder Altera und bleiben dann dabei.
Ich bekenne mich auch zum graphischen Design :-) Auch wenn die Bedienung im Gegensatz zu anderen Werkzeugen (noch) etwas umständlich ist :-)
Gegen den grafischen Entwurf ist doch nix einzuwenden, mache ich auch sehr häufig. Das Xilinx ISE übersetzt den Schaltplan dann sowieso in VHDL Spagetti-Code, und der wird bei der Synthese wieder in die RTL-Schematik überführt. Und die sieht dann verblüffend ähnlich dem eingegebenen Schaltplan. Manche Zusammenhänge lassen sich mit VHDL besser darstellen, manche mit Schaltplan. Ich hab grundsätzlich gemischte Designs hier. Einziger Nachteil ist, dass es nicht portabel auf eine anderen Hersteller ist, aber den wechselt man ja wie gesagt äußerst selten mal.
> Was ist den gegen graphische Designs einzuwenden? Solange es den Hersteller deiner Bausteine gibt: nichts. Solange du nur diese Bausteine verwenden willst: nichts. Solange dir die Komponenten reichen, die dir bereitgestellt werden: nichts. Solange du das Ding nicht simulieren willst: nichts. Solange du die Software hast, mit der das Design erstellt wurde: nichts. Solange du überschaubare Designs machst: nichts. Wenn du aber ein umfangreiches, portables Design (Hersteller, Bausteintyp, Toolchain) willst, dann solltest du eine textuelle Beschreibung wählen. Geschenkt wird dir sowieso nichts: Lernen mußt die das Eine und das Andere. > Hersteller ... den wechselt man ja wie gesagt äußerst selten mal. Ja, das freut den Hersteller, wenn die Hemmschwelle künstlich hochgelegt wurde ;-)
Lothar Miller wrote: >> Was ist den gegen graphische Designs einzuwenden? > Solange du das Ding nicht simulieren willst: nichts. Häh? hab ich was verpasst? Ich simuliere alles über Modelsim, natürlich auch die per Schematic-Eingabe erstellten Teile. Was soll da nicht klappen? > Solange du überschaubare Designs machst: nichts. ...kann man mit Schematic genau so machen. Den Kopf ersetzen sie auch nicht. In den übrigen Punkten geb ich dir recht.
> Häh? hab ich was verpasst? Und wie malst du die Testbench? Oder machst du das mit "Force Signal"? Meine Argumente gelten für die, die meinen, sich mit der Schematic-Malerei das Lernen einer Beschreibungssprache sparen zu können. Nicht für die, die wissen, dass sie z.B. VHDL aus dem Schematic bekommen, und diesen Code dann lesen und simulieren können.
Hallo Lothar, der Hintergrund ist folgender, ich will einen SPI- oder SPP-Bus über mehrere Platinen verlängern. Der soll mit 20MHz oder mehr laufen. Würde ich unipolare Signale verwenden bekomme ich ein erhebliches EMV Problem sowohl mit dem Takt wie auch mit den Datenleitungen. Ich will deshalb Differenzialsignale verwenden. Die Erzeugung eines Differenzialsignales ist kein Problem, aber die andere Richtung nicht ganz so einfach. Wenn ich die beiden Signale an den asyn.RESET und asyn.Set von einer Macrozelle anschließe, bekomme ich das Signal wieder zurückgewandelt. Ein Signalfehler beide 1 oder 0 führt dann wie gewünscht zu keinem Signalfehler. Ein Vorlage (FDCPE) habe ich gefunden, aber irgendwie ist mein Kopf Wetter bedingt ziemlich matschig :-( Gruß, Ulk P.S. Ulk ist nur ein Kürzel aus Vor- und Familienname
Naja, dass die Testbench natürlich in VHDL ist, ist ja wohl klar. Natürlich ersetzt die Schematic Sache nicht fundiertes VHDL-Wissen, aber manche zusammenhänge sind damit übersichtlicher darzustellen.
> Würde ich unipolare Signale verwenden bekomme ich ein erhebliches EMV > Problem sowohl mit dem Takt wie auch mit den Datenleitungen. Mit diesen Pseudo - differentiellen Signalen wird es dir aber kaum besser gehen. Denn du hast ja nicht wirklich einen differenziellen Eingang sondern verknüpfst die beiden Eingänge kombinatorisch und gehst mit dieser kombinatorischen Verknüpfung auf ein Speicherelement. Wenn du jetzt eine Gleichtakteinkopplung hast, dann hast du auf beiden Leitungen z.B. eine '1'. Aber die Stabilisierung der Pegel wird nicht gleichzeitig von sich gehen, denn gleichzeitig gibt es in der Realität nicht. D.h. du hast kurze Spikes nach deiner Kombinatorik, die dein FF beliebig hin- und herschalten lassen. Darüber hinaus erweiterst du den tolerierten Gleichtaktbereich der Signale nicht. Wenn eine Störung mit z.B. 10V einkoppelt, bist du mit beiden (P- und N-) Leitungen außerhalb der Eingangsspezifikation des Bausteins. Das passiert mit dedizierten Schnittstellenbausteinen (z.B. für RS422/RS485) nicht. Und die Dinger gibt es auch für 20MHz. FPGAs z.B. haben differenzielle Eingangs- und Ausgangsstufen, bei denen die Laufzeit der Signale korrekt abgehandelt wird. Solche LVDS-Signale sind geradezu für derartige Übertragungs-Aufgaben geschaffen.
Also ich muss zugegen die letzten Zeilen VHDL habe ich auch noch zu Uni Zeiten geschrieben. Seit ich wirklich arbeiten muss ;-) mache ich das auch (fast) alles mit dem Schematic Editor. Aber die meiste Zeit bin ich eh mit dem Layout von so einem Board beschäftigt. Die Logik ist dann meist der gemütliche Teil. Und eine VHDL Testbench habe ich auch schon lange nicht mehr gesehen. Da kommt bei uns seit Jahren nur noch das fli von modelsim zum Einsatz. Damit können die Jungs von der Softwareentwickelung wenigstens was anfangen :-P Bernd
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.