www.mikrocontroller.net

Forum: FPGA, VHDL & Co. RS flipflop finden in Xilinx


Autor: frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Bernd G. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gibt es explizit so nicht, Nimm FDRS und lege C und D auf Masse.
Mach es aber besser synchron.

Autor: frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was meinst du mit synchron?

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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.

Autor: frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
?????????????????????????

Was soll ich machen?

Ich habe einfach D und C auf Masse gelegt.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich mach sowas öfters mit Schaltplan, aber nur da, wo es sich anbietet. 
Aber asynchrone Geschichten verbieten sich von selbst.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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.

Autor: ulk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Ulk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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.

Autor: Pete (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bekenne mich auch zum graphischen Design :-)

Auch wenn die Bedienung im Gegensatz zu anderen Werkzeugen (noch) etwas 
umständlich ist :-)

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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 ;-)

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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.

Autor: Ulk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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.

Autor: Bernd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

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.