Hallo, ich möchte ein xor Gatter basten, das 4 Eingänge hat. 2 Normale und 2 mal das invertierte davon. Das Problem ist nun, dass bei der Synthese die Nets für die negierten rausgeschmissen werdenm, weil ja keine zusätzliche Information geliefert wird. Um ein möglichst homogenes Verhalten beim Leistungsverbrauch zu bekommen brauche ich aber die invertierten Leitungen. Ach ja, ich benutze Xilinx ISE 8.02i und das ganze soll vermutlich mal auf einen Spartan 3E. Gruß, Fire
synplify versteht z.B. das Attribut "Synkeep", das einem Signal zugeordnet werden kann. Damit wird verhindert, dass dieses Signal wegoptimiert wird.
Hi, erstmal Danke für die Antwort. Aber leider verwende ich den XST Synthesizer aus der ISE Suite. Ich hab auch schon mal versucht das attribut KEEP bzw. NOREDUCE zu verwenden. Hatte leider keinerlei Erfolg dabei :/ Ich hab das Attribut zuerst definiert und anschließend dem signal (übrigens ein vektor) zugewiesen. XST hat das ganz einfach ignoriert. Die Syntax war wohl richtig. Gruß, Fire
> Die Syntax war wohl richtig. Evtl. war sie nicht falsch. Aber wenn sie richtig gewesen wäre, dann hätte das funktioniert ;-) Sieh mal in den Beitrag "Re: Selbstlaufende Clock im FPGA" Und in den Link vom Beitrag "Re: Selbstlaufende Clock im FPGA" Dort werden Laufzeiten von LUTs zweckentfremdet. Die dürfen auch nicht wegoptimiert werden.
Hallo, also ich verwende das Attribut wie im Beispiel Ringoszi. Die unterschiedlichen Schreibweisen von true hab ich auch schon ausprobiert. Ich hab auch schon versucht aus den Bitvektoren Einzelbits zu machen. Das hat aber auch nichts gebracht :( Im Synthesereport taucht auch folgende Zeile für jedes betroffene Signal auf: Set user-defined property "KEEP = TRUE" for signal <a1>. Und später im Report taucht dann noch einmal folgendes auf: INFO:Xst:2386 - HDL ADVISOR - The KEEP property attached to signal a1 may hinder XST clustering optimizations. Sieht doch eingentlich nicht so schlecht aus. Trotzdem "killt" er die invertierten Signale.
Eigentlich verstehe ich zwar nicht, was du damit genau bezweckst, aber wie genau sieht dein Code aus? Wie schliesst du das invertierte Signal an, einfach "not signal" an einem Port? Wie instanziierst du das XOR?
Bei ISE gibt es den schalter "retain hierarchy" oder so ähnlich, versuch mal da den Haken rauszunehmen. Frank
Sorry dass ich mich so lange nicht gemeldet hab. Also ich überlagere den XOR Operator mit einem Case für 4 inputs (alle Fälle werden von Hand ausgefüllt). 2 der inputs sind das Inverse von den beiden anderen inputs. Das überladen XOR hat dann auch 2 Outputs, einen normalen und den invertierten. Anschließend instanziere ich einfach über generate nach dem schema: A(3 downto 0) <= b(1 downto 0) XOR b(3 downto 2); XST schmeißt dann immer die invertierten signale raus, die sollen aber unbedingt drin bleiben, denn es soll ein homogener(er) Stromverbrauch beim umladen/umschalten realisiert werden. Die Einstellungen von XST hab ich auch schon mal durchgesehen aber sowohl "KEEP Hierarchie" als auch "Safe implementation" bringen nichts. Wenn ich die ROM Extraction deaktivier bleiben immerhin die Gatter erhalten, die "überflüssigen" Leitungen verschwinden trotzdem.
Also, ich weiß nicht, bei mir gehts: http://www.lothar-miller.de/s9y/categories/29-Ringoszillator > A(3 downto 0) <= b(1 downto 0) XOR b(3 downto 2); Das wird sowieso nicht gehen... Berechnet wird mit 2 Bit breiten Vektoren, das Ergebnis ist 4 Bit breit :-/
richtig, hab mich vertippt. muss natürlich wie folgt lauten A(1 downto 0) <= b(1 downto 0) XOR b(3 downto 2);
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.