Liebe Kollegen! Ich habe ein Design und würde gerne ein Signal an 2 Ausgängen anzeigen lassen. Da ich das Signal tauschen möchte, dass ich doppelt ausgebe ist es mir lieber wenn ich das nur im UCF File ändern muß. WIE MACHE ICH DAS??? Ich habs schon mit NET signal LOG = "P22" "P44" ausprobiert, mit einem Beistrich dazwischen und auch mit einer zusätzlichen Zeile. Nichts funktioniert. HILFE LG Cyrex P.S.: Der Rest des Designes funktioniert wunderbar.
> Da ich das Signal tauschen möchte, dass ich doppelt ausgebe ist > es mir lieber wenn ich das nur im UCF File ändern muß. Würde mich wundern, wenn das ginge... > WIE MACHE ICH DAS??? Wenn du es schaffst, dann poste doch mal die Lösung ;-)
Geht ganz sicher! Ich hab schon ein Design gesehen bei dem das gemacht wurde. Der Designer hat damals gesagt, dass man das im UCF File direkt ändern muß und nur zusätzlich hinschreiben. Leider weis ich nicht mehr wie.
Einmal kurz googlen nach LOC und constraints gibt http://www.xilinx.com/itp/xilinx4/data/docs/cgd/l2.html Darin wird von multiple locations gesprochen, die man mit Beistrich trennt. Ob es mit pin Namen auch geht, mußt Du probieren. Übrigens, das constraint heißt LOC nicht LOG.
Was spricht gegen ein simples Modul mit : to_output : in std_logic; output1 : out std_logic; output2 : out std_logic; ... output1 <= to_output; output2 <= to_output; das ganze im Top Level und du kannst in den Input Port reinmappen was immer du willst und musst das ucf nicht ändern. Oder habe ich was falsch verstanden ? Die Lösung scheint mir zu simpel als das sie wirklich von Interesse sein könnte.
Naja, die Lösung funktioniert natürlich. Da ich aber mehrere Module habe von denen ich abwechselnd (habe keine Schalter mehr frei) den Ausgang verdoppeln will (je nach Testlauf), möchte ich nicht jedes mal das Design ändern. Deshalb möchte ich das ganze einfach im UCF File ändern und auf den Chip schreiben. Außerden kann ich nicht akzeptiren, dass etwas nicht geht. Ja, ich bin ein Streber. gg Danke auf jeden Fall. Das mit dem Komma habe ich eigentlich gemacht. Vielleicht geht das bei meinem CPLD (CoolRunner II) nicht. Ich versuchs noch einmal (ev. mit einem Spartan). DANKE FÜR EURE HILFE Cyrex
Die Aufzählung mehrerer LOC Constriants dient dazu, dem Placer freie Wahl aus eben diesen aufgezählten Pins zu lassen. Er kann sich dann aussuchen, welchen er nimmt. Allerdings ist es dann immer nur genau 1 Pin an den 1 Signal angeschlossen. Ist. Die Pin-Vergabe ist eineindeutig. Da hilft alles Streben nicht.
Klaus Falser schrieb: > Darin wird von multiple locations gesprochen, die man mit Beistrich > trennt.
1 | The comma specifies that the symbols can be placed in any of the specified locations. |
Der Placer kann sich also heraussuchen, auf welche der LOCations die Funktion abgelegt wird. Es ist allerdings nicht die Rede davon, dass die Funktion (hier ausnahmsweise IO) mehrfach angelegt wird. > Ob es mit pin Namen auch geht, mußt Du probieren. Es geht nicht. >>> Außerden kann ich nicht akzeptiren, dass etwas nicht geht. Du wirst es schwer haben im Leben... ;-) Alternativ könntest du bei Xilinx Programmierer werden, und das kurz mal reinhacken. Dann könntest du auch gleich noch dazupacken, dass man mehr als 1 UCF-File haben kann... EDIT: Pech, zweiter ;-)
>Du wirst es schwer haben im Leben... ;-)
Glaube ich nicht da ich immer wieder auf Möglichkeiten komme wie man
etwas machen kann und dabei auch noch was lerne.
Mein Leitspruch:
Es gibt Dinge, die ich nicht kann. Morgen kann ich's.
Wie Iulius bereits beschrieben hat. Oder NET "signal" LOC = P22, P44;
1 | NET "signal" LOC = P22, P44; |
Dann sucht sich der Placer eine der beiden Positionen heraus. Er legt das "signal" aber nicht gleichzeitig auf beide Pins.
Das kann nicht gehen, jedenfalls nicht generell. Beispieslweise wenn das Signal aus einem IOB-FF stammt, das hat in Echt nur eine elektrisch leitende Verbing und die ist zum Outputdriver. (siehe z.B. Xilinx DS312-2 (v3.8) S. 11) Da gibbets keine Möglichkeit ein weiteres Pin damit zu treiben, da musst du schon das FF duplizieren und das geht nur mit Synthese. Das ucf file wird erst beim ngdbuild nach der Synthese gelesen. MfG,
@freshman: Ich würde es ungefähr so lösen:
1 | entity top is |
2 | ...
|
3 | debug_o : std_logic_vector(7 downto 0); |
4 | ...
|
5 | end entity; |
6 | |
7 | ...
|
8 | type debug_t is (module1, module2, ...); |
9 | |
10 | constant debug : debug_t := module1; |
11 | ...
|
12 | |
13 | ...
|
14 | begin
|
15 | if debug = module1 then |
16 | debug_o <= module1_debug; |
17 | end if; |
18 | |
19 | if debug = module2 then |
20 | debug_o <= module2_debug; |
21 | end if; |
22 | ...
|
Damit ist Dein "Schalter" (constant debug) zwar im Design, aber da Synthese/Programming nicht allzu lange dauern, sollte das gehen. Duke
Danke für Eure Hilfe!!! Ich habs jetzt so gemacht. Alle Module haben einen 2. Ausgang. In ISE lege ich den Ausgang, den ich gerade brauche auf einen Pin und lasse den Rest offen. Das Tool optimiert die offenen Ausgänge weg und ich habe was ich wollte. Ist leider nicht im UCF File aber es funktioniert so auch gut. LG Cyrex P.S.: Das erste mal, dass ich mich freue wenn was wegoptimiert wird.
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.