Ich erstelle eine benutzerdefinierte CPU und möchte, dass sie spontan programmierbar ist, anstatt in VHDL fest codiert zu sein. Das Problem, das ich habe, ist, dass ISE ohne anfänglichen Code für die Ausführung der CPU große Mengen meiner Logik wegschneiden wird. Ich habe versucht, das Attribut „S“ zu verwenden, um meine Signale und Variablen als „nicht trimmbar“ zu deklarieren, aber das funktioniert nicht bei allen Signalen. Ich habe auch versucht, die Keep-Hierarchie-Option in XST einzustellen, aber selbst das schlägt manchmal fehl (beschwert sich, dass es einen Konflikt mit den KEEP-Einstellungen gibt und wird trotzdem trimmen). Gibt es eine Möglichkeit für mich, ISE anzuweisen, überhaupt nichts zu trimmen, ohne ein Standardprogramm erstellen zu müssen, das jeden Opcode durchläuft?
Hier ist einer der Fehler, die ich sehe:
WARNING:Xst:638 - in unit cpu_instructor_copy Conflict on KEEP property on signal brain.current_opcode<0> and brain.stack_pointer<14> brain.stack_pointer<14> signal will be lost.
Ohne das S-Attribut wird der stack_pointer einfach entfernt.
Ich habe Folgendes an der Spitze meines "Gehirn" -Prozesses
variable stack_pointer : integer range 0 to (2**mem_addr'length) - 1 := stack_origin;
attribute S : string;
attribute S of stack_pointer : variable is "YES";
Vielen Dank im Voraus!
Bearbeiten: Hier ist der eigentliche Code (derzeit keine Attribute darin, da sich diese auf meiner persönlichen Testkopie befinden)
Bearbeiten 2: Das Problem konnte behoben werden, indem mein Programm von einer Konstante in ein Signal geändert, ein neuer Prozess hinzugefügt wurde, der die CPU mit serieller Schnittstelle „programmieren“ konnte (zumindest denkt das Design das), und den Map-Prozess so einstellte, dass er nicht ohne Verbindung getrimmt wurde Signale. Den Code poste ich etwas später. Danke euch allen!!
Sie können das Trimmen mit einer Option in den Map-Prozesseigenschaften verhindern. Erweitern Sie in ISE den Abschnitt „Implement Design“, klicken Sie mit der rechten Maustaste auf „Map“ und wählen Sie „Process Properties“ aus.
Deaktivieren Sie die Option für „Trim Unconnected Signals“ (-u). Klicken Sie auf die Hilfeschaltfläche, um weitere Informationen zu allen hier angezeigten Optionen zu erhalten.
Aus der Hilfe:
Trimmen Sie nicht verbundene Signale
Gibt an, ob nicht verbundene Komponenten und Netze aus dem Entwurf gekürzt werden sollen, bevor die Zuordnung erfolgt. Das Leerlassen dieser Option ist hilfreich, um die für ein Design erforderlichen Logikressourcen abzuschätzen und um Zeitinformationen für teilweise fertiggestellte Designs zu erhalten. Wenn Sie ein unfertiges Design implementieren, setzen Sie diese Eigenschaft auf False (Kontrollkästchen ist leer), um nicht verbundene Komponenten und Netze zuzuordnen.
Standardmäßig ist diese Eigenschaft auf True gesetzt (das Kontrollkästchen ist aktiviert), und nicht verbundene Komponenten und Netze werden getrimmt.
darron
user_1818839
Proto
Proto
user_1818839
pjc50
darron
FarhadA
Proto
Proto
darron
Proto
Proto