Nachdem man in VHDL durchaus auch was strukturell beschreiben kann, muss alles gehen, was sich als Schaltplan darstellen lässt.
Warum die Einschränkung auf einen Prozess?
Nachdem man in VHDL durchaus auch was strukturell beschreiben kann, muss alles gehen, was sich als Schaltplan darstellen lässt.
Warum die Einschränkung auf einen Prozess?
Umgekehrt geht man ja vor, die Schaltung kennt man doch nicht. Natürlich kannst Du jede Schaltung in VHDL umsetzen. Aber wenn Du z.B. einen großen 16 Bit Counter hast, dann kannst Du die Schaltung nur noch mit VHDL erzeugen, weil sie für Menschen zu groß wird. Und das geht eben nicht immer.
Weil es am einfachsten ist, obiges Problem ist so leicht zu programmieren und zu simulieren. Natürlich kannst Du auch mehrere Prozesse benutzen, aber wozu? Es wird dann jedenfalls komplizierter. Im Moment bin ich dabei, 1 Lösung mit 2 Prozessen zu finden, aber das wird dann nur ein Workaround sein und stellt mich nicht zufrieden.
Dieses Problem habe ich in comp.lang.vhdl diskutiert, will es aber nicht unbedingt noch mehr ausbreiten. Das Ergebnis ist schon klar, mein Implementationstool ist Schrott, weil Xilinx meint, solche Probleme gibt es nicht. Das merkt man natürlich erst, wenn man auf so einen Fall stößt, das ging bei mir aber sehr schnell.
Wenn Du Interesse hast, kann ich das VHDL-File posten, es sind nur wenige Zeilen und ganz einfach aufgebaut, die Behavioral-Simulation müßte auf jeden Fall funktionieren.
Winfried
"Winfried Salomon" schrieb im Newsbeitrag news: snipped-for-privacy@news.dfncis.de...
Oh mein Gott. !!!!
Wenn es jetzt schon zuviel verlangt ist, mal 3 Zeilen mehr hinzuschreiben, und dadurch eine saubere Lösung eines einfachen Problems in sagen wir mal 5 Minuten zu erreichen, dann weiss ich auch nicht mehr weiter. Aber dann lieber ewig und drei Tage philosophieren und diskutieren. Ich versteh die Welt jeden Tag weniger . . . .
Kopfschüttelnd Falk
????
100% Widerspruch zu oben gemachter Aussage. Gotthilf.Hallo Falk,
Falk Brunner wrote:
[......]warum schreibst Du so provokant? Du hättest nur zu schreiben brauchen: "Ja, poste mal." Locker bleiben :-).
Also geh ich doch mal detaillierter auf mein Problem ein, da Du ja Interesse bekundet hast. Als Anfänger in VHDL bin ich über ein Problem gestolpert, nämlich einen symmetrischen Frequenzteiler /3 in einem Xilinx CPLD XC9572-15PC84 zu implementieren mit VHDL. Ich benutze ISE
6.103 mit ModelSim als Simulator. Das VHDL-File für die entity habe ich als div3_vhdl.vhd als attachment angehängt. Es ist sehr klein und erklärt sich selbst. Die Behavioral-Simulation funktioniert, die Post-Fit-Simulation und die Hardware aber nicht. Verschiedene Hilfegesuche auch bei Xilinx schlugen fehl. Mittlerweile nach Diskussion in comp.lang.vhdl scheint klar, daß es an meinem Implementierungstool XST liegen müßte. Dabei handelt es sich aber um eine gekaufte Vollversion, das was in der Industrie so eingesetzt wird.Der Kernpunkt des Problems ist: Man kann in 1 process nicht auf beide Flanken eines Signals triggern, hier clock. Ein Workaround durch Aufspalten in 2 getrennte Prozesse für jede Flanke, die miteinander kommunizieren müssen, schlug bisher fehl, vielleicht auch mangels meiner Kenntnisse.
Vom eingesetzten Chip hängt es übrigens nicht ab und getestete Schaltungslösungen als Schaltpläne hab ich auch, es soll in VHDL gelöst werden ohne Vorkenntnisse einer Schaltungslösung.
Ich weiß nicht ob Du Experte in dem Bereich bist, das war nicht zu erkennen. Wenn ja, dann zeig mal was Du kannst.
Winfried
Das liegt nicht ursächlich an XST, sondern daran, dass es keine Flipflops gibt, die auf beiden Flanken speichern. Und genau das beschreibst du mit einem process, in dem kein "if clk'event and clk='1'" oder "wait until clk='1'" vorkommt. Bei dir ist es effektiv halt ein Zähler, der mit beiden Flanken zählt. Und dass XST nichts synthetisieren kann, für das es keine Hardwareentsprechung gibt, ist kein Problem von XST, sondern eins des Benutzers...
Du solltest dir mal ein Buch über VHDL besorgen, dass explizit die Synthese behandelt ;-)
Hallo Georg,
-----Ursprüngliche Nachricht----- Von: "Georg Acher" Newsgroups: de.sci.electronics Gesendet: Montag, 24. Januar 2005 12:12 Betreff: Re: Schaltungsminimierung mit KV-Diagramm
gibt,
process,
Bei
dass XST
ist kein
das Argment habe ich bereits mehrfach gehört bzw. gelesen, die 1. Reaktion eines Kollegen war genauso. Das finde ich zu einfach, die Schuld gleich auf den Programmierer zu schieben. Außerdem gibt es einen einfachen Lösungsansatz, nämlich einfach einen Inverter vor den Clock eines FF zu setzen. So habe ich das gemacht und es klappt prima. Die Software, welche auch immer, kommt nicht auf diese Lösung, warum ist mir egal.
Was macht also ein heutiger Jungingenieur, wenn er diese Aufgabe bekommt? Er erschießt sich, weil sein Computer versagt und er selber keinen Schaltungsentwurf mehr beherrscht ;-).
Synthese
Also ich hab hier grade in
Paul Molitor/ Jörg Ritter VHDL Eine Einführung Pearson Studium
geblättert. Die haben übrigens genau das gleiche Entwicklungssystem wie wir. Da steht nichts. Dann habe ich noch ein Buch im PDF-Format
G. Lehmann, B. Wunder, M. Selz Schaltungsdesign mit VHDL
auf das habe ich mich bisher gestützt. An sich ist das ganz gut, dort habe ich schon versucht was zu finden, bisher ohne Erfolg. Diese Bücher haben den Nachteil, daß meist völlig abgedrehte Beispiele gebracht werden, aber z.B. kein universeller Moore-Automat, wie man ihn für viele State-Machines sicher einsetzen könnte.
Kurz und gut, ich dachte mir schon, daß hier keiner eine Lösung finden würde. Ich versuche einen Workaround mit 2 gekoppelten Prozessen, aber auch das scheint zu scheitern. Xilinx haben sich wieder gemeldet, sie arbeiten dran und haben wohl auch noch keine Lösung parat, sondern suchen nach einer Erklärung, warum es nicht geht. Um zum Topic zurückzukommen, jetzt siehst Du mal was es heißt, sich nur noch auf Computertools zu verlassen.
Winfried
"Georg Acher" schrieb im Newsbeitrag news:ct2l6r$fbn$ snipped-for-privacy@wsc10.lrz-muenchen.de...
gibt,
process,
Naja, das grosse X hat auch FlipFlops, die auf beiden Flanken speichern (Coolrunner2). Sind aber Exoten.
Bei
dass XST
ist kein
Jaja, scheint irgendwas mit der Kernaussage diese Theads zu tun zu haben. KV-ist ja so out.
Synthese
Back to basics. Oder wie es ein grosser deutscher Philosoph sagte.
"Wer fliegen will, muss ersteinmal laufen lernen. Man kann nicht mit dem fliegen anfangen"
MfG Falk
"Winfried Salomon" schrieb im Newsbeitrag news: snipped-for-privacy@news.dfncis.de...
War generft, und diese Posting hat gernau den gereitzten Nerv getroffen. Bin meist lockerer. ;-)
Sehr richtig, ist aber auch gar nicht wirklich nötig. Hat der Georg ja schon erklärt.
Das schon eher. Its easy when you know how.
Piece of cake ;-))
Naja, ob ich mich als Experte bezeichen will, hmm. Zumindest hab ich in diesem Bereich (und wie der Zufall es will auch mit diesen Bausteinen und Software) ein paar Jahre lang meine Brötchen verdient. Urteilen Sie selbst.
Naja, also schau mer mal. Da ich ja, wie der geneigte LEser vielleicht schon mitbekommen hat, der (wohl austerbenen) Spezies derjenigen angehöre, die Grundlagenkentnisse auch im Clicki-Bunti-Zeitalter nicht für verzichtbar halten, ein ganz kurzer Abriss zu Problematik.
Ein Zähler durch eine gerade Zahl (2,4,6, etc.) ist seher einfach, jeweils nach der Hälfte muss der frequenzgeteilte Ausgang invertiert werden. Ein Zähler durch eine ungerade Zahl ist auch einfach, wenn man nur an der Frequenz interessiert ist, aber mit quasi beliebigen Tastverhältnissen leben kann (was oft geht). Dazu muss nur ein programmierbarer Zähler geschaffen werden, die Generierung der einen Flanke erfolgt beim Über/Unter lauf, die andere an jedem beliebigen anderen Zählerstand. Beispiel
process(clk) begin if clk='1' and clk'event then
-- ladbarer Rückwärtzähler if cnt=0 then cnt
Tolle Einstellung :-( Mein C-Compiler erlaubt mir zwar, dass ich ein a=malloc(1024*1024*1024*1024) mache, aber das Programm stürzt ab. Wer ist jetzt schuld?
Du musst verstehen, warum nicht jeder beliebige VHDL-Roman in Gatter umzusetzen ist, zumindest nicht in *endlicher* Zeit. Das Gehirn kann viel mehr als jeder Computer (Stichwort Turing...)
Und schon mal überprüft, ob deine Schaltung auch wirklich keine Glitches erzeugt? Dekodierungen aus synchronen Flipflop-Ausgängen erzeugen sowas gern.
Du kannst ja auch mal versuchen, ob der Code mit dem schweineteuren (einige
10KEUR) Behavioral Compiler (bc) vom Synopsys geht. Ich zweifele...Aber KV-Diagramme helfen da auch nichts ;-)
Das finde ich nicht so berauschend. Die kleben viel zu sehr am Webpack.
Deutsche Bücher sind da nicht so der Hit. Es gibt zB. Chang "digital system design with vhdl" und zig andere, die mir in der Bibliothek untergekommen sind. In einem (Autor klang irgenwie indisch...) wurde sogar eine PCI-Statemachine beschrieben. Allerdings sollte man sich nicht zu sehr an diese Schablonen dran klammern, es gibt immer das 1001te Problem wo es so nicht oder nur umständlich funktioniert. Kannst ja mal meine Diplomarbeit durchlesen, da gab's auch so ein Problemchen...
Hm, sooo schwierig ist das doch auch nicht (oder habe ich die Aufgabenstellung falsch verstanden):
signal qx: unsigned(2 downto 0); signal qy: std_logic;
process(clk,reset) begin if reset='1' then qx
"Winfried Salomon" schrieb im Newsbeitrag news:ct3f63$799$03$ snipped-for-privacy@news.t-online.com...
auf
Ist aber öfter der Fall als man glaubt. Der Problem liegt vor dem Monitor ;-)
Weil DU und die Software eine Sprache sprechen müssen. VHDL kann nicht raten was du willst. Du musst mit dem Compiler kommunizieren. Und da du ja ein Anfäger in der Materie bist, wäre es keine schlechte Einstellung, mal die Bälle etwas flacher zu halten und Fragen zu stellen, anstatt die bösen Tools auszubuhen.
Er
Genau. Oder kauft für vieeele $$$ einen neuen VHDL COmpiler. Der kanns dann zwar auch nicht, aber vielleicht bringt der Support was.
den
sicher
Tja, gute Informationen fallen halt nicht vom Himmel. Ist ja auch klar, in der INFORMATIONsgesellschaft, in der Informationen bares Geld sind.
Tststststs, diese Jugend von heute, keine Geduld und keinen Respekt vor dem Alter ;-)
auch
Nur weil DU es nicht gebacken bekommst, heisst das nicht, dass VHDL versagt hat . . .
einer
Du
Hmmm, komisch. Die FAEs die ich kenne, sind eigentlich SEHR fit. Und das ist ja nun wirklich PillePalla. Versuchs mal in comp.arch.fpga (da sind auch CPLDs erlaubt ;-))
Meine Rede, aber hier liegt der Fall ja wohl eindeutig anders. Du und VHDL reden aneinander vorbei. Man muss die (Programmier)sprache seines Partner schon wirlich sprechen, das geht bisweilen nicht so einfach hop hop von 0 auf 100% in 2 Stunden.
MfG Falk
Äben ;-) Und für alle anderen Fälle gibt es eine (D)PLL oder (übel, tut aber auch) den guten alten Glitchgenerator. Das ist der, wo im Xilinx-Datenbuch noch die Pistole daneben gedruckt war...
Ich bin immer noch der Meinung, dass KV (insbesondere in der Aufgabenstellung des OP) witzlos (aka out) ist. Das ist öde Fleissarbeit, sonst nichts. Am schlimmsten ist ja noch die Verteilung der 0en und 1en aus der Original-DNF ins Quadrat, ohne dass man durcheinanderkommt.
Dass es mal in der Vorlesung dran kommt und man mit dem Namen was anfangen kann, ok. Dass man mal eine DNF selber damit kleinkriegt, auch ok. Aber alles was darüber hinausgeht, ist Zeitverschwendung.
Man kann es aber auch übertreiben. Schuhkunde ist beim Fliegen auch recht sinnlos ;-)
Hallo Georg,
"Georg Acher" schrieb im Newsbeitrag news:ct3nhn$2pl$ snipped-for-privacy@wsc10.lrz-muenchen.de...
Reaktion
auf
jetzt
wenn ich mich recht erinnere, muß man erstmal das Betriebssystem fragen, ob der Speicher auch da ist, aber das sind ja klar umrissene Regeln. Aber da VHDL eine Hardwarebeschreibungssprache ist, stelle ich mir vor, daß jede fehlerfreie Beschreibung auch in Hardware umzusetzen ist, das ist offenbar nicht der Fall. Oder sehe ich das falsch?
umzusetzen
jeder
Das stelle ich mir auch sehr schwer vor, nur ist mein Beispiel so einfach beschrieben, einfacher gehts fast nicht mehr.
erzeugt?
Für heute ist es mir etwas zu spät, um noch ASCII-Art zu zeichnen, kann ich aber bei Interesse nachholen. Nein, Glitches können IMHO nicht auftreten, hab ich simuliert und sicher beim Entwurf berücksichtigt, der aber schon länger zurückliegt. Hab nochmal drüber nachgedacht, kann aber keine Nachteile der Schaltung finden.
(einige
Ich kenne die Industriepreise von Synopsis, das ist nicht drin, werde ich wohl nicht nachprüfen können. Ich könnte mir aber schon Qualitätsunterschiede vorstellen. Aber mir fällt grade ein, in der Xilinx Foundation war was mit Synopsis Express drin. Damit habe ich die allerersten VHDL-Versuche gemacht und die tollsten Effekte gehabt, nein ich weiß nicht....
system
sind.
PCI-Statemachine
dran
umständlich
so ein
Ne, laß mal, hab schon genug mit solchen Dingen zu tun. Bei uns wird eigentlich mit dem System Generator gearbeitet, der erzeugt automatisch VHDL-Code, aber was für welchen. Allerdings optimiert die ISE das wieder relativ gut. Aber da sieht man noch mehr die Einschränkungen, nur streng synchrone Designs sind möglich und konsequenterweise kommt man an FFs oder gar den Takt auf der Ebene nicht mehr dran. Der Bezug zur Hardware ist dann nicht mehr vorhanden und die Fehlersuche dementsprechend. Allerdings hat man es dann auch mit Schaltungen zu tun, die ein Virtex-2 FPGA füllen können. Diese Vorgehensweise ist dann der nächste Schritt und ich weiß nicht so recht, was ich davon halten soll.
auch
Aufgabenstellung
das
Ich hab das mal getestet, scheint aber noch ein Syntaxfehler drin zu sein. So richtig verstehe ich das Programm auch nicht, mir sind nicht alle Operationen bekannt. Das mit dem Reset ist nicht so gut, die Schaltung sollte von selbst anlaufen. Als oben mit Pfeil markierte Fehlermeldung bekomme ich:
Compiling vhdl file K:/XilinxProjekte/div3_sy2_vhd/div3_vhdl5.vhd in Library work. ERROR:HDLParsers:3292 - K:/XilinxProjekte/div3_sy2_vhd/div3_vhdl5.vhd Line
einer
Du
jedenfalls nie
es nur,
man
und
Sicher ist die reine KV-Optimierung nicht so sonderlich interessant, weil ziemlich schematisch. Allerdings habe ich noch ein altes Valvo-Buch, in dem so einige Tricks beschrieben werden, die aber auch ich nicht beherrsche. Aber wenn Du ein Problem formulierst, dann häufig in Form einer Wahrheitstafel, da kannst Du Deine Kreativität austoben. Daß ein Computer da manchmal schwach ist, haben wir ja gesehen.
Winfried
Hallo Falk,
die 4 !-Zeichen sahen aber auf den ersten Blick schon erschreckend aus :-).
schon
selbst.
auch
leben
Reaktion
uns
geteilten
muss
Die habe ich nicht vergessen, die wurde nicht akzeptiert. Was ich da alles ausprobiert habe, weiß ich schon nicht mehr.
Der Code funktioniert, Gratulation! Du hast Dir wirklich Mühe gegeben, muß ich sagen. Das mit tmp ist mir noch nicht ganz klar, muß mir das Programm mal in Ruhe anschauen. Die erzeugte Schaltung sieht ziemlich groß aus, die Timing-Analyse ist aber recht gut, besser als die Xilinx-Lösung. Es geht also auch mit einer rein synchron getakteten Lösung, ohne den Clock zu invertieren.
Was ich bisher erfolglos versucht hatte war, die Zählvariable in beiden Prozessen hochzuzählen, bzw. hatte ich sie in ein entsprechendes Signal kopiert, das in beiden Prozessen global existiert. Aber dann kam immer eine Meldung wie "multiple sources" für dieses Signal, was ich als Kurzschluß zweier Quellen interpretiere. Die Zusammenführung beider Signale ist mir nicht gelungen.
Der Aufwand in VHDL für dieses Problem scheint mir sehr groß zu sein, mir kommt er bald noch größer vor als die klassische "Papier"-Methode mit anschließender KV-Minimierung. Wenn man sich die Einarbeitung in VHDL mal vorstellt, so halte ich es für sinnvoll, überschaubare digitale Schaltungen auch ohne Computerhilfe entwerfen zu können, zum Simulieren braucht man dann sowieso einen.
mfg. Winfried
Ja, das siehst Du falsch. Wieso glaubst Du, daß es bei einer Hardwarebeschreibungssprache nicht auch klar umrissene Regeln gibt?
Bei malloc() stört es Dich ja offenbar nicht einmal, daß es eine vom Betriebssystem bereitgestellte Funktion ist (andernfalls würdest Du den Speicher direkt beschreiben, ohne ihn erst zu reservieren) und nicht etwa ein integraler Bestandteil der Programmiersprache C. (Und auch in C kannst Du grundsätzlich fehlerfreien Code beschreiben, der sich auf der Zielplattform so eben gerade nicht implementieren läßt.)
Bei VHDL stört es Dich aber sehr wohl, daß Du nicht an der Hardware vorbei programmieren kannst und erwartest, daß Compiler und Synthesizer schon etwas aus Deiner Beschreibung backen, was irgendwie dann auf die Hardware paßt.
Warum?
[ ] Du kennst den Unterschied zwischen simulierbar und synthetisierbar.Wie Georg schon ausführlich schrieb: Wenn Deine Hardware kein bi-phase clocking kann, kannst Du es zwar lange beschreiben, aber die Synthese wird schlicht an den Hardwarevorgaben scheitern.
Eben aus diesem Grund war Dein Beispiel *zu* einfach.
Der Synthesizer wird nicht hingehen und sagen "oh, er betreibt bi-phase clocking, aber ich habe nur single-phase zur Verfügung -- laß uns da mal den Master-Takt und die Zählerstände verdoppeln" oder "ich sehe sein Problem und breche es auf in zwei Prozesse, die in geeigneter Weise verkoppelt das tun, was er will".
OH NEIN!
Du *willst* einen Reset, der Deine Schaltung in einen definierten Anfangszustand bringt. Nicht nur zur Simulation (denn X+1 ist immer noch X) sondern auch in der realen Hardware.
Logik, die sich selbst an den Haaren aus dem Sumpf zieht, willst Du in (C)PLDs und FPGAs nicht haben... (Womöglich auch noch unter Miteinbeziehung von asynchronen Laufzeitspielereien, wie man sie in der seligen TTL-Zeit eben gemacht hat.)
Erinnert mich spontan an einen Fall aus meiner FAE-Zeit. Kunde beschwert sich, unsere PLDs seien schlecht, weil seit er die einsetzt, würde seine Schaltung
60% Initialausfälle zeigen. Vorher, mit dem (abgekündigten) Konkurrenz-PLD, sei alles in Butter gewesen.Da hatte der Gute also eine 3-Bit Statemachine mit 6 definierten Zuständen und keinem Reset-Eingang, die unter idealen Bedingungen sich auch tatsächlich selbst aus dem Sumpf zog. Die abgekündigten Konkurrenz-PLDs waren allerdings weit langsamer und so glitchte seine Schaltung mit schnelleren Bausteinen dann schön in einen der zwei undefinierten Zustände der Statemachine und verweilte dort...
Nimm's mir nicht übel, aber Deine Argumentation in diesem Thread erinnert mich etwas an meine Prä-C Ära... Da habe ich auch 1001 Argumente gefunden, wieso C "schlecht" sei, weil ich mich da selbst um Speicherallokation kümmern muß, weil ich nur noch * und & durch die Gegend schiebe, das sei doch keine Hochsprache usw. usf.
Letztendlich war das Problem aber nur, daß es "anders" war als von mir erwartet oder gedanklich gefordert und somit ein klassischer Fall von PEBCAK.
Rainer
Ok, bringe einem C-Compiler bei, die Ackerman-Funktion in linearer Zeit zu berechnen...
Von _allen_ simulierbaren (d.h. syntaktisch fehlerfreien) VHDL-Programmen sind ziemlich genau 0% synthetisierbar! Jeder synthetisierbare Code kann durch Einfügen _einer_ Zeile (wahrscheinlich reichen schon ein paar Zeichen) nicht mehr synthetisierbar gemacht werden.
Beispiele: if x='X' then a> Du musst verstehen, warum nicht jeder beliebige VHDL-Roman in Gatter
Das sieht nur so aus... Das ist ein "informatisches" Problem, sowas ist prinzipiell nicht im allgemeinen Fall lösbar. Man kann zwar immer irgendwas rumfrickeln, dass Spezialfälle erkannt werden. Die ganze HDL-Synthese ist ein Spezialfall, der nur funktioniert, wenn man sich an gewisse Konverntionen/Schablonen hält.
Auch in der Timingsimulation glitchfrei?
Ich hab den bc hier, da kann ich mal schauen. Bislang habe ich mit dem aber noch nichts gemacht...
In 99% sollte man auch nur synchrone Designs machen, alles andere macht gerne Probleme. Meistens aber erst dann, wenn es schon fast zu spät ist... Dummerweise denkt man am Anfang (ich auch...), dass Asynchron so schön schnell zu implementieren ist.
Solange die Abläufe sich an Standard-Schablonen halten, geht das wohl recht gut.
Hm, ausser dass die signals natürlich direkt nach der architecture definiert sein sollten, sieht es auch nach einem Tag noch richtig aus ;-)
Der erste Prozess macht einen asymetrischen Teiler durch 3 mit einer One-Hot-codierten Statemachine (001,010,100,001,...). Der zweite verzögert Zustand 1 um einen halben Takt, macht also:
clk _-_-_-_-_-_-_-_-_-_-_ qx(0) _--____--____--____-- qx(1) ___--____--____--____ qx(2) _____--____--____--__ qy __--____--____--_____ out_3 _---___---___---___--
Glitcht auch nicht.
Das mit Reset sollte man IMMER machen! Das sagt dem Synthesizer nämlich, welchen Zustand die FFs nach einem Powerup (nicht nur Reset) haben sollen. Den Resetpin muss man nicht mal rausführen. Manche Synthesizer (z.B. Synopsys Design Compiler) erzeugen machmal ohne expliziten Reset sogar richtigen Blödsinn...
Hm, da fehlt wahrscheinlich noch die Library-clause ganz am Anfang:
library IEEE; use IEEE.numeric_std.all;
"Winfried Salomon" schrieb im Newsbeitrag news:ct6niu$qlt$01$ snipped-for-privacy@news.t-online.com...
:-).
Das sollten sie auch. ;-)
Nun, wie bereits von dir selber und anderen festgestellt, in VHDL bist du ein Absolutwer Anfänger. Ist keine Schande, waren wir alle mal. Nur muss man dann halt sich durchkämpfen.
Nun ja, VHDl Basics sind nur duch noch bessere Kenntnis von VHDL Basics zu ersetzen.
Clock wird invertiert, in dem zweiten prozess der cnt_f steuert. Das ist aber voll in Ordnung und immer noch sauberes synchrones Design.
eine
Geht nicht.
Der Eindruck täuscht.
MfG Falk
"Winfried Salomon" schrieb im Newsbeitrag news:ct6jhu$qvd$03$ snipped-for-privacy@news.t-online.com...
Völlig falsch. VHDL ist zwar eine Beschreibungssprache für digitale Systeme, synthetisierbar ist aber nur ein (kleiner) Teil der Konstrukte. Der Rest ist nur für Simulation verwendbar.
Was ist das Problem mit streng synchronen Designs?? Klar, die reale Welt (tm) verlangt des öfteren die Koplung von Systemen, die asynchron zueinander sind. Aber aus lieber langer Weile wird man sich sinnvollerweise nicht den Teufel (in Gestalt asynchroner Bestien) an den Hals holen.
dann
man
Ist das gleiche Problem wie mit C-Compilern. Aber wenn diese einen gewissen Entwicklungsstand erreicht haben, gibts da auch extrem selten GRund, den Compiler anzuzweifeln (jaja, 100% sicher kann man nie sein)
???
Library
2use anweisung für librarys vergessen??
MfG Falk
"Rainer Buchty" schrieb im Newsbeitrag news:ct7r79$2uouk$ snipped-for-privacy@sunsystem5.informatik.tu-muenchen.de...
anlaufen.
Anfangszustand
in der
Einspruch euer Ehren!!!
Ich behaupte genau das Gegenteil. Eben wenn die Hardware so ausgelegt ist, dass sie keinen Reset braucht und sich selber wieder aus dem Sumpf ziehen kann, ist sie wesentlich robuster. In meinem Dunstkreis (Telekommunikation) ist gerade das eines der wichtigen Punkte. Niemand will nen Techniker nachts um 3 in die Pampa schicken und auf nen Reset Knopf drücken lassen. Softwerker machen sichs einfach mit nem Watchdaog. Hardwerker bauen robste Logik. Mein VHDL hat sehr selten einen Reset.
(C)PLDs
Das ist eine andere Geschichte. Es gibt aber absolut saubere Methoden dazu (indem man z.B. nichtverwendete Codes in State Machines auf den Reset-Code springen lässt etc.) .
und
selbst
schön
dort...
Sag ich nicht? Tja, selber Schuld. Asynchroner Murks aus der TTL Zeit. Ein Glück dass ich das nicht mehr erleben musste.
erwartet
???
MfG Falk
Hallo Georg,
"Georg Acher" schrieb im Newsbeitrag news:ct81v3$6hb$ snipped-for-privacy@wsc10.lrz-muenchen.de...
ob
kann ich nicht finden, was ist das für 'ne Funktion? Warum in linearer Zeit, hat das was mit Echtzeit zu tun?
offenbar
sind
nicht mehr
^ | Fibonacci ;-)
das ist doch 'ne Reihenentwicklung, kann ich mir als Hardwareproblem jetzt schwer vorstellen. Das mit der Rekursion erinnert mich an ein Pascal-Lehrbuch, in dem sich selbst aufrufende procedures (bis der heap platzt) beschrieben wurden. Sowas ist mir in mathematisch-technischen Problemstellungen noch nie untergekommen, das geht auch alles einfacher.
In VHDL stecken sicher noch einige Fallstricke, die ich noch nicht kenne, es muß natürlich auch hardwaremäßig Sinn machen. Ich stelle mir dann eine innere Logik im Programm vor, die die Funktion der Hardware widerspruchsfrei und realisierbar beschreibt, es muß auch Realisierbarkeitsbedingungen geben. Sich selbst aufrufende Logik kann ich mir im Moment überhaupt nicht vorstellen, also geht das wahrscheinlich in die Hose. Bei Zeitverzögerungen ist es etwas anders, die hab ich schon öfters gebraucht, es gibt da Sonderfälle. IMHO bietet das Xilinx nicht an, obwohl es der Router eigentlich in Grenzen können müßte.
Hilfe! :-)
irgendwas
ein
Du meinst, die Synthese meines VHDL-Beispiels ist prinzipiell unlösbar? Mit meinem Ansatz sehe ich da aber keine Probleme.
Glitches
gern.
ich
Jetzt versuche ich doch noch mal etwas zu malen. Die Schaltung hat weder in der Timing-Simulation noch in der Hardware-Messung mit Scope Probleme gemacht.
___ ___ ------------|inv|------o-----------------|& |------o------output | |___| | --|___| | | | | | _______________________________ | | | | | | | | | | | | | | | | | _____________________________________________| | _____ | | _____ | | ______ | ___ ----| D Q|--- ---|D Q|-- -----|D Q|--- ---|inv|-------| C | ------|C | ----|C | | |___| |_____| | |____| | |______| | | | |____________________________|____________________| | input
Ich hoffe, ohne Proportionalschrift kann man das sehen, die mit Outlook Express sind hier aufgeschmissen, am besten in ASCII-Editor kopieren.
allerersten
aber noch
Ich glaube, ich mach auch nochmal 'nen Test mit Foundation FPGA Express, aber erst morgen, es ist wieder so spät geworden, muß abbrechen.
oder
gerne
Dummerweise
Ich kenne das, der symmetrische Teiler /3 wird bei uns als abschreckendes Beispiel im asynchronen Fall als Übung behandelt. Natürlich wollte ich dann auch eine saubere synchrone Lösung haben :-).
Die wollte ich jetzt auch in VHDL haben, aber.....
dann
man
recht gut.
sein.
definiert
Die Signaldeklarationen habe ich da auch reingesetzt.
Ok, sobald ich etwas Zeit habe werde ich mich da mal reindenken, da ich auch den Fehler in meinem mißglückten Versuch verstehen möchte.
welchen
Resetpin
Blödsinn...
Du meinst 'nen Anschluß für Global Reset? Aber nicht rausführen ist doch nicht so gut, dann hängt doch 'ne Leitung in der Luft? Bisher hab ich immer Schematic Entry gemacht, da brauchte man bei Library-Elementen nicht unbedingt reset. Nur wenn man ein FF aus Gattern selbst gemacht hatte, ging die Simulation ohne Reset nicht.
Library
Line
2Habe ich eingefügt, ändert aber leider nichts.
mfg. Winfried
Kommt auf den Anwendungsbereich an, würde ich sagen. Eine typische Glue-Logic sollte schon mit dem Prozessor zusammen anfangen und nicht ein paar Zyklen zum "sich Fangen" brauchen. Und wenn der FPGA/ASIC ein heutiges Integrationsmonster mit integrierter CPU ist, möchte dieses sowieso ein Reset- Signal haben.
Beim /3 ist es natürlich egal, wie die Flipflops hochkommen, das renkt sich nach ein paar Takten ein. Aber eventuell muß man dann auch so lange das Reset-Signal für die diesen Takt verarbeitenden Komponenten gesetzt lassen, damit diese nicht aus dem Tritt kommen.
Nunja, es gibt ja auch Hardware-Watchdogs. Da braucht es dann auch keinen Reset-Knopf und den Techniker, der nachts hinfährt zum Knöpfchendrücken.
So rein aus Neugier: Wenn ein Gerät aus Deinem Dunstkreis abschmiert, wie oft liegt es tatsächlich an einem Hardwarefehler und wie oft hat sich einfach die Software erhängt?
"Problem exists between chair and keyboard"
Rainer
Have something to add? Share your thoughts — no account required.
Ask the community — no account required