www.mikrocontroller.net

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


Autor: Cyrex (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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  ;-)

Autor: Cyrex (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus Falser (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Iulius (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Freshman (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klaus Falser schrieb:
> Darin wird von multiple locations gesprochen, die man mit Beistrich
> trennt.
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 ;-)

Autor: Freshman (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A. F. (artur-f) Benutzerseite
Datum:

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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Fpga Kuechle (fpgakuechle) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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,

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@freshman:
Ich würde es ungefähr so lösen:
entity top is
  ...
  debug_o : std_logic_vector(7 downto 0);
  ...
end entity;

...
type debug_t is (module1, module2, ...);

constant debug : debug_t := module1;
...

...
begin
  if debug = module1 then
    debug_o <= module1_debug;
  end if;

  if debug = module2 then
    debug_o <= module2_debug;    
  end if;
...

Damit ist Dein "Schalter" (constant debug) zwar im Design, aber da 
Synthese/Programming nicht allzu lange dauern, sollte das gehen.

Duke

Autor: Freshman (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.