VHDL-Codierung Fragen zur Verwendung von Prozess-und if-Anweisungen

E

ethan

Guest
Hallo zusammen, ich habe eine Frage über die Verwendung von "Prozess" und "if"-Anweisung. Können wir diese beiden Aussagen zur Beschreibung eines reinen conbinational Logik, sagen wir, ein 2to1-Mux? Wird der Code als logische Schaltungen mit Verriegelungen (also nicht kombinatorische) synthetisiert werden? Der folgende VHDL-Code ging throught compile ohne Probleme bekommen und internes Problem von Quartus II beim simuliert. Kann jemand erklären, warum? By the way, das 2to1-Mux ist nur als Beispiel verwendet, ich verwende die if-Anweisung für einen viel komplizierteren Fall, die ist einfacher, wenn mit IF-Anweisungen eingebettet. Danke. library ieee; verwenden ieee.std_logic_1164.all; Einheit mux2to1 ist Port (a, b: in std_logic; SEL: in std_logic; c: out std_logic); Ende mux2to1; Verhalten der Architektur ist mux2to1 beginnen BEV: Prozess (a, b, sel) wird beginnen, wenn sel = '0 'dann c
 
Welche Art von Problemen während der Simulation meinst du? Dieses Projekt wird ohne Warnungen kompiliert. RTL anzeigen zeigt, dass kein Riegel wurden generiert.
 
Vielen Dank für Ihre Antwort. Als ich um die Schaltung in Quartus II simulieren begann, hier ist die Fehlermeldung bekam ich: Interner Fehler: Sub-System: SIM, Datei: sim_preprocessor.cpp, Line: 2532 machine_iname = 0 Quartus II Version 5.0 Build 148 26.04 / 2005 SJ Vollständige Version ich habe den gleichen Fehler für meine Controller-Design, die den Prozess verwendet und wenn, case-Anweisung eine ganze Menge. Glaubst du, es ist etwas mit meinem Quartus II-Simulator? Aber es funktioniert perfekt mit meiner rein kombinatorischen VHDL-Codes. Können Sie versuchen, mein Code im Simulator simulieren? Danke.
 
Nun, ich bin mir nicht sicher über die Quartus Fehler, Sie werden immer, aber ich werde einige Ihrer questions.A "Prozess" mit "if" Anweisung erzeugt eine combniational block.The Synthese-Tools verwandeln wird beantworten if-Anweisung zu einigen Multiplexer je nachdem, wie Sie schrieb der code.Sequential Prozess erzeugt wird, wenn es eine "CLK" in Ihrem Prozess werden. Die Synthese-Tools einfügen Verriegelungen, wenn einer Ihrer Ausgabe oder interne Signale ist nicht in jedem Zweig der zugewiesenen dem "if" statment.Thus die beste Vorgehensweise ist, "Vorgaben" für alle Signal am Beginn des Prozesses zu machen. Regards, Kareem
 
Ich bin mit Quartus 6.0. Und weder beim Kompilieren noch Simulation gibt es keine Fehler oder Warnungen. Ihr Projekt richtig funktioniert. Wenn -Operator in VHDL ist sequentiellen Betreiber, und deshalb müssen Sie es nur innerhalb der -Prozess -Operator verwenden. Der Synthesizer beruht auf dem Code erzeugt so etwas wie eine Priorität Struktur (für IF-Anweisung). Vielleicht wird es nützlich sein, einige Änderungen in Ihrem Code auf diese Weise machen - ... BEV: Prozess (a, b, SEL) ist zunächst bei SEL ist, wenn '0 '=> cc
 
entfernen der ist in den Prozess, Linie [size = 2] [color = # 999999] Hinzugefügt nach 51 Sekunden: [/color] [/size] library IEEE; Verwendung ieee.std_logic_1164.all; Einheit mux2to1 ist Port (a, b : in std_logic; SEL: in std_logic; c: out std_logic); Ende mux2to1; Architektur Verhalten mux2to1 wird beginnen - BEV: Prozess (a, b, SEL) ist ------------- ---------- # # # # # # # # ist ein Problem, hier BEV: Prozess (a, b, SEL) beginnen, wenn sel = '0 'dann c
 
[Quote = babaship] entfernen ist in den Prozess, Zeile [/quote] Das ist nicht eine irreversible Unfall, nur syntaktische Fehler =) Punkt ist, dass ich diesen Code geschrieben in Quick Reply -Fenster. Darüber hinaus war es in den frühen Morgenstunden ...
 

Welcome to EDABoard.com

Sponsor

Back
Top