Hallo, Ich führe in VHDL eine Berechnung durch, erst eine addition und dann eine multiplikation. Der Addierer und der Multiplizierer sind beide in ISE erstellte IP Cores rein kombinatorisch. Diese habe ich nun in meiner Komponente in reihe geschalten. Mein Board Takt lauft mit 100MHz und ich sehe in der Post-Route Simulation, dass die Berechnung (addition + multiplikation) in einem Takt durchgeführt wird. Also soweit funktioniert alles wie gewollt (vom übernommenen Einganssignal bis zum Ausgangssignal vergehen ca. 7ns). Nun meine Frage: Kann man dieses Zeitverhalten irgendwie in einem Constraint fixieren, d.h. sowas wie INST "*/component_calc" TNM = "calc"; TIMESPEC "TS_calc" = FROM "Input" TO "Output" 7.0 ns; so dass ich mir sicher sein kann, das dies später in dem Projekt, wo dieser Teil eingesetzt wird, auch noch funktioniert? Oder kann ich die Zwei IP Cores irgendwie in eine StateMachine packen, wo ich sie dann in reihe schalte? Ich weiß nicht ganz wie das aussehen soll, da ich dort schreiben würde x = a + b und y = x * c, wobei ich hier ja nicht meine Cores verwende, was ich aber gerne machen würde. Ich hoffe ich konnte mein Problem etwas verständlich erklären. Wäre schön, wenn mir jemand weiterhelfen könnte. MfG matzunami
Gib doch einfach einen Constraint auf die 100MHz an. Wenn deine Komponente zwischen 2 FFs hängt, muß sie die Zeit 10ns einhalten. > Der Addierer und der Multiplizierer sind beide in > ISE erstellte IP Cores rein kombinatorisch. Warum erzeugst du solche Standardkomponenten als IP-Core? > da ich dort schreiben würde x = a + b und y = x * c, So würde ich das machen. > wobei ich hier ja nicht meine Cores verwende Es sind doch sowieso nicht deine Cores, sondern die von Xilinx. Und das sind die selben, ob du sie manuell erzeugst, oder der Synthesizer automatisch...
Also erstmal danke für die Antwort. Ein Constraint auf den Takt hab ich schon und die die Cores möchte ich verwenden, weil die genau aauf meine Aplikation passt (zb. Addierer erster Wert unsigned 14 bit zweiter wert signed 16 bit ergebniss 18 bit). Wenn ich x = a + b schreibe, wie kann ich dann sagen das ein wert signed und der andere unsigned ist? -> zu Integer Convergieren einmal mit to_signed und einmal mit to_unsigned? Wie genau sieht das aus (in VHDL), wenn ich die Cores zwischen 2 FF häng?
wenn ich soetwas schreibe (nur beispielhaft): component adder port ( b in b in c out ); end compo.. Inst : adder port map ( a => a b => b c => c ); State Machine when 1 => a <= x; b <= y; next state ist der adder dann in der StateMachine eingebunden und somit im TimingConstraint der StateMachine ?
Klar. Die Geschwindigkeit der SM ist ja durchaus von der Komponente adder abhängig, die Tools erkennen das. >>>>> FROM "Input" TO "Output" 7.0 ns; Damit ist der Inputpin bzw. Outputpin des FPGAs gemeint.
ok danke... >>>>> FROM "Input" TO "Output" 7.0 ns; >>Damit ist der Inputpin bzw. Outputpin des FPGAs gemeint. sowas hab ich mir schon gedacht
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.