Forum: FPGA, VHDL & Co. UCF File doppelter Ausgang


von Cyrex (Gast)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> 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  ;-)

von Cyrex (Gast)


Lesenswert?

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.

von Klaus Falser (Gast)


Lesenswert?

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.

von Iulius (Gast)


Lesenswert?

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.

von Freshman (Gast)


Lesenswert?

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

von Christian R. (supachris)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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 ;-)

von Freshman (Gast)


Lesenswert?

>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.

von A. F. (artur-f) Benutzerseite


Lesenswert?

Wie Iulius bereits beschrieben hat.
Oder
NET "signal" LOC = P22, P44;

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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.

von Fpgakuechle K. (Gast)


Lesenswert?

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,

von Duke Scarring (Gast)


Lesenswert?

@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

von Freshman (Gast)


Lesenswert?

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