Hallo Leute, Habe ein Problem mit der Quartus 2 Software von Altera. Ich habe hier ein altes MAXPLUS2 Projekt auf Quartus 2 bearbeitet, allerdings ist Quartus nun der Meinung er müsste mir einen Teil der Schaltung im .BDF wegoptimieren, so das die Schaltung dann nicht mehr Funktionsfähig ist. Wie kann ich der Software sagen das sie das sein lassen soll ? MfG THBO
Hmmm, also da meine Erklärung wohl zu allgemein gehalten war, kommt hier nochmal eine ausführliche Erklärung worum es geht. Also in dem alsten MAXPLUS Projekt wurde eine Schaltung eingesetzt die zum Entprellen eines Quadratur Signals diente. Hierbei ist es erforderlich gewesen die beiden Kanäle jeweils zu entprellen, da es vorkommen kann das die Geber Elektronik mal 2 Signale hinterinander nur auf einem Kanal gibt, dies darf nicht weitergeben werden. Die Entprellschaltung sah so aus das die Eingänge jeweils einmal direkt auf ein XOR GAtter und einem mal Invertiert und dann über eine LCELL auf das selbe XOR Gatter gegeben werden. Die Ausgänge der XOR Gatter laufen wiederum über eine LCELL auf den Takteingang eines FF. der D Eingang des FF kommt vom jeweils anderen Kanal. Diese Schaltung funktionierte im MaxPlus Projekt einwandfrei. Unter Quartus ist er der Meinung er könnte den Schaltungsteil wegoptimieren. So jetzt zu der Konkreten Frage: Gibt es eine Möglichkeit das Optimieren der Schaltung in Quartus zu unterbinden ? Oder hat jemand eine andere Idee wie man das Entprellen hinbekommen kann ?? Als Dateianhang habe ich mal ein Bild des entsprechenden BDF angehängt.
Naja, ein XOR was das gleiche Signal einmal normal und einmal invertiert bekommt, ist natürlich (wenn man die Verzögerungen vernachlässigt) schon "optimierungswürdig" im Sinne der Synthese. Ich kenn mich bloss mit Xilinx aus, da würde ich die Schaltungsteile direkt als Primitive instanziieren und in der Constraintdatei dann dafür sorgen, dass sie nicht optimiert werden. Das funktioniert da mit der Einstellung KEEP oder so ähnlich. Achso, Kombinatorik als Takteingang für FFs zu benutzen ist aber auch nicht die feine Art... Vielleicht sollte man das Entprellen gleich ganz anders erledigen. T.M.
Unter Settings -> Analyse&Synthesis -> More Settings ->Remove Redundant Logic kann man noch einige Einstellungen vornehmen. Vllt. hilft das in deinem Fall.
Wenn Du einen Tip fürs Entprellen hast, bitte gerne immer her damit, der Schaltungsteil ist nicht von mir, Die Firma in der ich Arbeite hatte sich diese Schaltung vor Jahren extern entwerfen lassen, jetzt war eine änderung geplant und mit Quartus klappt das ganze nun nicht mehr. Klar das dieser Schaltungsteil Optimierungswürdig ist, allerdings müsste es doch eine möglichkeit geben dem Quartus zu sagen "Lass die Finger weg vom Optimieren". Nun, ansonsten immer mal her mit ideen zum Entprellen :-) MfG THBO
Divergente, zeitabhängige Funktionen, wie Du sie hier benutzt, basieren auf asynchronen Laufzeiteffekten, die nur auf Registerebene definiert werden können. In Asics lässt sich sowas leicht einbauen und im Prinzip geht es auch im FPGA - Du musst es nur den Werkzeugen beibringen. Da gibt es aber ein Problem mit der Interpretation von Schaltungsdesign und Validierung: Du und Deine Firma müssen sich darauf einigen, wie sie Chip-Funktionalität nutzen wollen. Die Synthesewerkzeuge wie XST sind darauf ausgelegt, aus abstrakten HDL-Definitionen, welche Verhalten beschreiben, eine funktionsfähige Schaltung zu generieren. Dies tun sie aber aufgrund der Annahme von synchronen! Schaltungstopologien, bei der Laufzeiten und asynchrone Funktionen gezielt eliminiert / misachtet werden, so möglich. Daher werden bei lediglicher Beachtung der Sollsignalzustände im clk-Zeitpunkt einige Funktionen unterwegs wegoptimiert. Das gilt im Bereich FPGA auch für redundante Schaltungsfunktionen, die hazzards infolge der Nutzung ungepufferter Kombinatorik unterdrücken: Die kriegt man im FPGA meist nicht synthetisiert (leider). Wenn Du solche Dinge eindesignen möchtest, must Du aber auch mal über Testfunktionalität und Designsicherheit nachdenken. Ist die Schaltung mit der gegebenen Umgebung noch 100% simulier- und damit das Verhalten voraussagbar? Kannst Du so die Schaltungsfunktion unter den verschiedenen Fallbeispielen noch vollständig untersuchen? Nicht alles, was digital-elektronisch funktionieren müsste, ist in der jeweils genutzten Entwicklungslandschaft als valider Entwicklungspfad anzunehmen und in manchen Branchen kommt es darauf an, daß man im Falle eines Falles korrekt entwickelt hat. Tricks werden da im Nachhinein rasch zu Fussangeln! Quintessenz: Überführe die asychronen und laufzeitabhängigen Pfade lieber in zeitlich gerasterte Pfade, die den synchronen Designprinzipien unterworfen, durchsimuliert und dann auch leicht und voraussagbar synthetisiert werden können. Aus akademischen Gründen ist es aber interessant, sowas hinzubekommen / zu steuern.
Hallo THBO Da ich mich gerade mit Delays auf Gatterebene im FPGA beschäftige, habe ich die Quartus-Hilfe mal etwas genauer studiert, und folgendes gefunden: "The LCELL buffer allocates a logic cell for the project. The LCELL buffer produces the true and the complement of a logic function and makes both available to all logic in the device. (The output of the LCELL buffer must feed through a NOT gate to use the complement of the logic function.) An LCELL buffer always consumes one logic cell. It is not removed from a project during logic synthesis." Also eigentlich sollte nichts wegoptimiert werden. Allerdings befindet sich in deinem .BDF der Inverter vor der LCELL, vielleicht verwirrt das Quartus. Ich würde den Inverter mal hinter den LCELL-Buffer zeichnen. Ausserdem kann das Optimierungs-Verhalten von Quartus in Bezug auf LCELLs beeinflusst werden. Schau doch mal im Projekt-Settings-File (.QSF), ob eine der folgenden Optionen gesetzt ist: set_instance_assignment -name ignore_lcell_buffers on set_global_assignment -name remove_redundant_logic_cells on Gruss Andi
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.