Forum: FPGA, VHDL & Co. constraints


von frank (Gast)


Lesenswert?

hallo,
ich beschäftige mich seit kurzem mit programmierung von fpgas mit vhdl.
kleinere erfolge hatte ich schon... counter, freuquenzteiler, blinklicht 
usw :)

ich möchte mehrere clb blöcke verbinden um ein delay uz erzeugen bzw um 
überhaupt constraints zu setzen.

in vhdl geht das so oder?

attribute rloc: string;
attribute rloc {signalname} : signal is "SLICEXmYn";

wie kann ich jetzt aber dieses signal weiter mit einem anderem clb 
verbinden?

lg

von Michael N. (bigmike47)


Lesenswert?

nein, das was dieses attribute macht, ist eine relative platzierung in 
einem set (das man zuerst auch via constraint erzeugen muss). mit delays 
hat das nichts zu tun und ein signal erzeugt es schon überhaupt gar 
nicht.
delays entstehen in einem fpga nur durch runtimes, das lässt sich aber 
so gut wie gar nicht steuern (und schon gar nicht als sauber 
funktionierende lösung). sowas macht man in der regel mit einem counter.

von frank (Gast)


Lesenswert?

gibt es denn eine möglichkeit ein signal in den clb blöcken so 
umzuleiten, dass ein delay erzeugt wird?

von Michael N. (bigmike47)


Lesenswert?

nicht wirklich. man kann zwar das routing selbst per FPGA Editor 
bestimmen, aber was soll das? Kein Mensch erzeugt ein Delay in einem 
FPGA/CPLD so. Meiner Meinung nach eine vollkommen schwachsinnige Idee.

von frank (Gast)


Lesenswert?

kann man das routing schon im vhdl code beeinflussen mit einer attribute 
anweisung?

von Michael N. (bigmike47)


Lesenswert?

ja in dem man die locations entweder per attributes oder im ucf-file 
festlegst. aber das macht nur in absoluten ausnahmefällen sinn, im 
normalfall sind die place&route tools um einiges bessere darin als man 
selbst.

was ist denn eigentlich sinn und zweck dieser ganzen delay-sache?

von Schlumpf (Gast)


Lesenswert?

Wenn du eine Verzögerung brauchst, dann kannst du z.B. Inverter einfügen 
und der Synthese sagen, dass dieser Inverter nicht wegoptimiert werden 
dürfen.
Somit kannst du einigermassen gezielte Verzögerungen "einbauen".

@ Michael Niegl:
Kann z.B. sinnvoll sein, um einen breiten Datenbus an den Ports z.B. 
Nibbleweise, leicht zeitversetzt, zu schalten.
Damit lassen sich große Stromspitzen zu vermeiden, wenn sich viele Bits 
ändern. (Verbesserung der EMV oder Vermeidung von Ground-Bounce)

von frank (Gast)


Lesenswert?

ja hab inverter eingebaut zwecks delay. die synthese ist geschafft. hab 
es noch hingekriegt, dass diese nicht wegoptimiert werden. auch nach dem 
place und route sind sie dank constraints noch vorhanden. meine delay 
ist aber noch zu klein. ich versuche im moment location constraints 
anzuwenden und meine inverter weit weg zu platzieren um mein delay zu 
vergrößern.
geht das überhaupt für einfache logiken wie inverter? habt ihr ein paar 
tips für mich wie ich das hinbekommen könnte?

von Schlumpf (Gast)


Lesenswert?

Na, wenn du es noch langsamer brauchst, warum machst dann nicht noch ein 
paar mehr Inverter dazu, statt dich mit der location rumzuquälen?
Und wenn du ne richtig große Verzögerung brauchst, dann schieb doch das 
Signal durch ein oder mehrere FF. Dann hast jeweils einen Takt 
Verzögerung.

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
Noch kein Account? Hier anmelden.