UCF File doppelter Ausgang

Gast #1480258
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.
Gast #1480339
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.
Gast #1480516
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.
Gast #1480820
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
#1480839
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.
Moderator (Firma: Titel) Persönliche Seite #1480873
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 ;-)
Gast #1481247
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.
Gast #1481353
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,
Gast #1484017
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
Gast #1484092
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren