mikrocontroller.net

Forum: FPGA, VHDL & Co. UCF File in VHDL verwenden


Autor: Erdin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen!

Ich habe hier nen Virtex 5 Board und soll mich in das einarbeiten. Jetzt 
hab ich ein kleines Modul geschrieben und wollte mit einem kleinen UCF 
File die Pins mit dem Modul verbinden. Aus irgendwelchen Gründen aber 
will er die Definitionen aus dem UCF nicht nehmen. Verwende ISE 9.2 und 
das UCF ist unter dem Top-Modul drin. Muss ich noch irgendwelche 
Einstellungen setzen?

Gruß!

Autor: Erdin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry für Doppelpost, aber hier mal das UCF:

NET "RESET_SW_PB1"  LOC = AM32;
NET "CLK_REC_N"    LOC = K19;
NET "CLK_REC_P"    LOC = L19;
NET "CDR_DOWN"    LOC = B33;
NET "CDR_UP"    LOC = L10;
NET "CLK_IN"    LOC = H17;

Muss da noch was hin (mein erstes UCF)?
Im Code wollte ich dann einfach die Netze verwenden, ohne sie als Signal 
zu definieren. Das schlug fehl. Nachdem ich die als Signal definiert 
habe, meckert ISE rum, dass die Signale nie benutzt werden...

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

Bewertung
0 lesenswert
nicht lesenswert
> und das UCF ist unter dem Top-Modul drin.
Wie soll das gehen? Das UCF-File ist eine Steuerdatei für den Workflow. 
Das hat mit VHDL-Dateien erst mal überhaupt gar nichts zu tun...

> und das UCF ist unter dem Top-Modul drin.
Oder meinst du damit die Projekt-Ansicht in ISE?

> Aus irgendwelchen Gründen aber
> will er die Definitionen aus dem UCF nicht nehmen.
Was bekommst du für Meldungen?

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erdin schrieb:
> Aus irgendwelchen Gründen

Das ist keine hilfreiche Fehlerbeschreibung. Wo tritt denn der Fehler 
auf? Welches Verhalten erwartest Du? Welche Prozessschritte führst Du 
durch?

Duke

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

Bewertung
0 lesenswert
nicht lesenswert
Poste doch mal dein Top-Modul und dein UCF-File.

Autor: Erdin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also den einzigen Fehler, den ich bekomme ist:
Port I of Input buffer refclk/CLKIN_IBUFG_INST is connected to GND

An dem IBUFG ist aber das Netz CLK_IN dran, welches die Clock liefert.

> und das UCF ist unter dem Top-Modul drin.
Oder meinst du damit die Projekt-Ansicht in ISE?
Jepp, das hab ich gemeint =) !

Außerdem bekomme ich folgende Warnings:
WARNING:Xst:646 - Signal <CDR_UP> is assigned but never used.
WARNING:Xst:653 - Signal <CLK_IN> is used but never assigned. Tied to 
value 0.
WARNING:Xst:646 - Signal <CDR_DOWN> is assigned but never used.
WARNING:Xst:653 - Signal <CLK_REC_P> is used but never assigned. Tied to 
value 0.
WARNING:Xst:653 - Signal <RESET_SW_PB1> is used but never assigned. Tied 
to value 0.

Wobei ich die in meinem Top Modul verwende...

  cdr_inst : CDR port map(vco => CLK_REC_P,
                  refclk => clk_out,
                  reset => RESET_SW_PB1,
                  data => '0',
                  --pd_select => ,
                  --dataout => ,
                  mkvcofaster => CDR_UP,
                  mkvcoslower => CDR_DOWN
                  --vco_tc => ,
                  --refclk_tc =>
                  );

  refclk: clkGen PORT MAP(RST_IN => RESET_SW_PB1,
                  CLKIN_IN => CLK_IN,
                  CLKFX_OUT => clk_out);

Autor: Nephilim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Im Code wollte ich dann einfach die Netze verwenden, ohne sie als Signal
> zu definieren. Das schlug fehl. Nachdem ich die als Signal definiert
> habe, meckert ISE rum, dass die Signale nie benutzt werden...

Die Namen die in dem UCF File auf Pins gelegt werden sind in deinem VHDL 
Design die Ports in der Entity, keine Signale in der Architecture.

Autor: Erdin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Davon bin ich ja ausgegangen, weil das am meisten Sinn ergibt... Jedoch 
bekomme ich dann Undefined symbol Fehler...

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
CLKIN != CLK_IN

Autor: Erdin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier mal das ganze Top Modul

------------------------------------------------------------------------ 
----------
-- Company:
-- Engineer:
--
-- Create Date:    16:19:05 06/23/2010
-- Design Name:
-- Module Name:    CDR_Top - Behavioral
-- Project Name:
-- Target Devices:
-- Tool versions:
-- Description:
--
-- Dependencies:
--
-- Revision:
-- Revision 0.01 - File Created
-- Additional Comments:
--
------------------------------------------------------------------------ 
----------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
library UNISIM;
use UNISIM.VComponents.all;

entity CDR_Top is
  port(
      RESET_SW_PB1  : in    std_logic;
      CLK_IN      : in    std_logic;
      CLK_REC_P    : in    std_logic;
      CDR_UP      : in    std_logic;
      CDR_DOWN      : in    std_logic
    );
end CDR_Top;

architecture Behavioral of CDR_Top is

COMPONENT clkGen is
  PORT(
      CLKIN_IN        : in    std_logic;
      RST_IN          : in    std_logic;
      CLKFX_OUT       : out   std_logic;
      CLKIN_IBUFG_OUT : out   std_logic;
      CLK0_OUT        : out   std_logic;
      LOCKED_OUT      : out   std_logic);
  END COMPONENT;

component CDR is
  port(
    vco : in std_logic;
    refclk : in std_logic;
    reset : in std_logic;
    data : in std_logic;
    -- pd_select : in std_logic; --uncomment, if LockDet does not work
    dataout : out std_logic_vector (1 downto 0);
    mkvcofaster : out std_logic;
    mkvcoslower : out std_logic;
    vco_tc : out std_logic;
    refclk_tc : out std_logic
    );
  end component;

signal clk_out : std_logic;

begin

--  BUFR_inst : BUFR
--  generic map (
--  BUFR_DIVIDE => "BYPASS") -- "BYPASS", "1", "2", "3", "4",
--  -- "5", "6", "7", "8",
--  port map (  O => O, -- Clock buffer output
--          CE => CE, -- Clock enable input
--          CLR => CLR, -- Clock buffer reset input
--          I => I -- Clock buffer input
--          );


  cdr_inst : CDR port map(vco => CLK_REC_P,
                  refclk => clk_out,
                  reset => RESET_SW_PB1,
                  data => '0',
                  --pd_select => ,
                  --dataout => ,
                  mkvcofaster => CDR_UP,
                  mkvcoslower => CDR_DOWN
                  --vco_tc => ,
                  --refclk_tc =>
                  );

  refclk: clkGen PORT MAP(RST_IN => RESET_SW_PB1,
                  CLKIN_IN => CLK_IN,
                  CLKFX_OUT => clk_out);
end Behavioral;


Hier das UCF:

NET "RESET_SW_PB1"  LOC = AM32;
NET "CLK_REC_N"    LOC = K19;
NET "CLK_REC_P"    LOC = L19;
NET "CDR_DOWN"    LOC = B33;
NET "CDR_UP"    LOC = L10;
NET "CLK_IN"    LOC = H17;

Autor: Erdin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Duke Scarring schrieb:
> CLKIN != CLK_IN

Auf was beziehst Du dich? Ich sehe keinen Fehler...

Autor: Andreas B. (loopy83)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

im ucf File müssen die Ports deines Topfiles aufgeführt werden, denn sie 
stellen die Verbindung zwischen FPGA und Außenwelt dar.

Es werden also keine Ports zwischen Hirarchie-Stufen aufgeführt oder 
festgelegt, denn diese befinden sich ja noch innerhalb des FPGA.
ntity TOPFILE is
Port ( 
In1 : in STD_LOGIC_VECTOR(7 downto 0);
out1 : out STD_LOGIC
);
end TOPFILE;

UCF File dazu:
NET "In1[7]" LOC = XY;
NET "In1[6]" LOC = XY;
NET "In1[5]" LOC = XY;
NET "In1[4]" LOC = XY;
NET "In1[3]" LOC = XY;
NET "In1[2]" LOC = XY;
NET "In1[1]" LOC = XY;
NET "In1[0]" LOC = XY;
NET "out1" LOC = XY;

Grüße Andi

PS: Hat sich erledigt... war ich wohl zu langsam :)

Autor: Erdin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So hab ich es auch gemacht. Ich bekomme weiterhin "Undefined Symbol" für 
die Ports...

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

Bewertung
0 lesenswert
nicht lesenswert
> Ich bekomme weiterhin "Undefined Symbol" für die Ports...
Für welchen?
Im VHDL-File sind 5 Ports definiert...
      RESET_SW_PB1  : in    std_logic;
      CLK_IN      : in    std_logic;
      CLK_REC_P    : in    std_logic;
      CDR_UP      : in    std_logic;
      CDR_DOWN      : in    std_logic

Im UCF-File sind 6 Ports definiert...
NET "RESET_SW_PB1"  LOC = AM32;
NET "CLK_REC_N"    LOC = K19;
NET "CLK_REC_P"    LOC = L19;
NET "CDR_DOWN"    LOC = B33;
NET "CDR_UP"    LOC = L10;
NET "CLK_IN"    LOC = H17;

Autor: Erdin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für alle!

Ich hab schon die Einstellung Allow unmatched LOC constraints gesetzt... 
Für den Fall, dass ich einen Port nicht brauche...

Autor: Erdin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier mal die Fehler...


ERROR:HDLParsers:3312 - "C:/Dokumente und 
Einstellungen/erdin/Desktop/erdin/vhdl/CDR/CDR_Top.vhd" Line 75. 
Undefined symbol 'CLK_REC_P'.
ERROR:HDLParsers:1209 - "C:/Dokumente und 
Einstellungen/erdin/Desktop/erdin/vhdl/CDR/CDR_Top.vhd" Line 75. 
CLK_REC_P: Undefined symbol (last report in this block)
ERROR:HDLParsers:3312 - "C:/Dokumente und 
Einstellungen/erdin/Desktop/erdin/vhdl/CDR/CDR_Top.vhd" Line 77. 
Undefined symbol 'RESET_SW_PB1'.
ERROR:HDLParsers:1209 - "C:/Dokumente und 
Einstellungen/erdin/Desktop/erdin/vhdl/CDR/CDR_Top.vhd" Line 77. 
RESET_SW_PB1: Undefined symbol (last report in this block)
ERROR:HDLParsers:3312 - "C:/Dokumente und 
Einstellungen/erdin/Desktop/erdin/vhdl/CDR/CDR_Top.vhd" Line 81. 
Undefined symbol 'CDR_UP'.
ERROR:HDLParsers:1209 - "C:/Dokumente und 
Einstellungen/erdin/Desktop/erdin/vhdl/CDR/CDR_Top.vhd" Line 81. CDR_UP: 
Undefined symbol (last report in this block)
ERROR:HDLParsers:3312 - "C:/Dokumente und 
Einstellungen/erdin/Desktop/erdin/vhdl/CDR/CDR_Top.vhd" Line 85. 
Undefined symbol 'CDR_DOWN'.
ERROR:HDLParsers:1209 - "C:/Dokumente und 
Einstellungen/erdin/Desktop/erdin/vhdl/CDR/CDR_Top.vhd" Line 85. 
CDR_DOWN: Undefined symbol (last report in this block)
ERROR:HDLParsers:851 - "C:/Dokumente und 
Einstellungen/erdin/Desktop/erdin/vhdl/CDR/CDR_Top.vhd" Line 75. Formal 
vco of CDR with no default value must be associated with an actual 
value.
ERROR:HDLParsers:3312 - "C:/Dokumente und 
Einstellungen/erdin/Desktop/erdin/vhdl/CDR/CDR_Top.vhd" Line 88. 
Undefined symbol 'CLK_IN'.
ERROR:HDLParsers:1209 - "C:/Dokumente und 
Einstellungen/erdin/Desktop/erdin/vhdl/CDR/CDR_Top.vhd" Line 88. CLK_IN: 
Undefined symbol (last report in this block)
ERROR:HDLParsers:851 - "C:/Dokumente und 
Einstellungen/erdin/Desktop/erdin/vhdl/CDR/CDR_Top.vhd" Line 87. Formal 
CLKIN_IN of clkGen with no default value must be associated with an 
actual value.
ERROR: the file CDR_Top.ngd is missing, the Constraint Editor can not be 
launched.
ERROR:HDLParsers:3312 - "C:/Dokumente und 
Einstellungen/erdin/Desktop/erdin/vhdl/CDR/CDR_Top.vhd" Line 75. 
Undefined symbol 'CLK_REC_P'.
ERROR:HDLParsers:1209 - "C:/Dokumente und 
Einstellungen/erdin/Desktop/erdin/vhdl/CDR/CDR_Top.vhd" Line 75. 
CLK_REC_P: Undefined symbol (last report in this block)
ERROR:HDLParsers:3312 - "C:/Dokumente und 
Einstellungen/erdin/Desktop/erdin/vhdl/CDR/CDR_Top.vhd" Line 77. 
Undefined symbol 'RESET_SW_PB1'.
ERROR:HDLParsers:1209 - "C:/Dokumente und 
Einstellungen/erdin/Desktop/erdin/vhdl/CDR/CDR_Top.vhd" Line 77. 
RESET_SW_PB1: Undefined symbol (last report in this block)
ERROR:HDLParsers:3312 - "C:/Dokumente und 
Einstellungen/erdin/Desktop/erdin/vhdl/CDR/CDR_Top.vhd" Line 81. 
Undefined symbol 'CDR_UP'.
ERROR:HDLParsers:1209 - "C:/Dokumente und 
Einstellungen/erdin/Desktop/erdin/vhdl/CDR/CDR_Top.vhd" Line 81. CDR_UP: 
Undefined symbol (last report in this block)
ERROR:HDLParsers:3312 - "C:/Dokumente und 
Einstellungen/erdin/Desktop/erdin/vhdl/CDR/CDR_Top.vhd" Line 85. 
Undefined symbol 'CDR_DOWN'.
ERROR:HDLParsers:1209 - "C:/Dokumente und 
Einstellungen/erdin/Desktop/erdin/vhdl/CDR/CDR_Top.vhd" Line 85. 
CDR_DOWN: Undefined symbol (last report in this block)
ERROR:HDLParsers:851 - "C:/Dokumente und 
Einstellungen/erdin/Desktop/erdin/vhdl/CDR/CDR_Top.vhd" Line 75. Formal 
vco of CDR with no default value must be associated with an actual 
value.
ERROR:HDLParsers:3312 - "C:/Dokumente und 
Einstellungen/erdin/Desktop/erdin/vhdl/CDR/CDR_Top.vhd" Line 88. 
Undefined symbol 'CLK_IN'.
ERROR:HDLParsers:1209 - "C:/Dokumente und 
Einstellungen/erdin/Desktop/erdin/vhdl/CDR/CDR_Top.vhd" Line 88. CLK_IN: 
Undefined symbol (last report in this block)
ERROR:HDLParsers:851 - "C:/Dokumente und 
Einstellungen/erdin/Desktop/erdin/vhdl/CDR/CDR_Top.vhd" Line 87. Formal 
CLKIN_IN of clkGen with no default value must be associated with an 
actual value.
ERROR: the file CDR_Top.ngd is missing, the Constraint Editor can not be 
launched.
ERROR:HDLParsers:1411 - "C:/Dokumente und 
Einstellungen/erdin/Desktop/erdin/vhdl/CDR/CDR_Top.vhd" Line 88. 
Parameter CDR_UP of mode in can not be associated with a formal port of 
mode out.
ERROR:HDLParsers:1411 - "C:/Dokumente und 
Einstellungen/erdin/Desktop/erdin/vhdl/CDR/CDR_Top.vhd" Line 89. 
Parameter CDR_DOWN of mode in can not be associated with a formal port 
of mode out.

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

Bewertung
0 lesenswert
nicht lesenswert
> ERROR:HDLParsers:3312 - "...CDR_Top.vhd" Line 75.
> Undefined symbol 'CLK_REC_P'.
Du hast kein Problem mit irgendeinem UCF-File, sondern mit deinem 
VHDL-Code...
Mach da mal einfach einen Syntax-Check und klick auf die Fehlermeldungen 
drauf oder navigiere mal die Zeile an, und sieh nach, was da nicht 
stimmt. Es ist u.U. auch hilfreich, ein paar Zeilen vorher 
mitzukontrollieren.

Insgesamt würde ich dir erst mal zu einem simplen Lauflicht raten, um 
den Anfang einfacher zu gestalten.

BTW: Wenn ich ein Optimizer wäre, und ein FPGA-Design nur Input-Ports 
hätte, würde ich alles rausoptimieren...  ;-)

Autor: Erdin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank! =)

Klassischer Denkfehler... CDR_UP und DOWN müssen natürlich out sein 
klatschankopf!
Dann klappts auch mit der Synthese =D!
Aber ein Datenausgang wäre auch nicht schlecht =P !

Autor: D. I. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und ich würde einen Arbeitsordner wählen der keine Leerzeichen hat vor 
allem wenn du noch mit einer älteren ISE unterwegs bist, ...

Autor: Erdin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das kann auch Probleme bereiten, ich weiß. Kommt eh alles noch in ein 
Repository... Aber ohne Adminrechte kann ich hier mal gar nix 
konfigurieren =D !

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.