Forum: FPGA, VHDL & Co. Nexys 4 Constraints


von Andreas Kellermann (Gast)


Lesenswert?

Salü Zusammen

Ich bin einigermaßen verwirrt, wie die für das Nexys 4 Board zur 
Verfügung gestellten Constraint Files (Master.xdc). Wenn ich die Ports 
als:

led   :  ledSTD_LOGIC_VECTOR (15 downto 0);

Verwende, funktioniert alles Problemlos. Versuche ich aber ein Port als:

led[0] : STD_LOGIC;

zu deklariere, kann der Code nicht mehr compiliert werden und landet im 
Syntax Error Folder. Ich würde mich sehr freuen, wenn mir jemand auf die 
Sprünge helfen könnte!

Danke und Gruess
Andresa

von Christian R. (supachris)


Lesenswert?

Das ist doch VHDL Port Deklaration, das gehört keinesfalls in das XDC 
File. Dort kommen nur die Sachen rein, die die physikalischen Anschlüsse 
am FPGA kennzeichnen, also Location, IO-Spannung, Timing-Constraints 
usw.
Und selbst wenn du das im VHDL Quellcode stehen hast, ergibt das keinen 
Sinn, denn ein Vektor kann nur aus gleichen Elementen bestehen, also 
kannst du nicht ein Element einzeln deklarieren.

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


Lesenswert?

Andreas Kellermann schrieb:
> landet im Syntax Error Folder.
Und zwar steht dort dann genau WAS?

Christian R. schrieb:
> Das ist doch VHDL Port Deklaration
Das ist gar nichts. Ich sehe nur Zeilen, die für sich allein jedes Mal 
einen Fehler geben müssen. Das Problem ist also wie so oft ausserhalb 
des geposteten Codes.

von Christian R. (supachris)


Lesenswert?

Lothar Miller schrieb:
> Das ist gar nichts. Ich sehe nur Zeilen, die für sich allein jedes Mal
> einen Fehler geben müssen.

Naja, den Typo in der ersten Zeile hab ich mal ignoriert, die zweite 
Zeile ist kompletter Blödsinn.

von Andreas Kellermann (Gast)


Angehängte Dateien:

Lesenswert?

Salü Christian und Lothar

Danke für eure Antworten, ihr habt ja recht, dass ganze ist etwas aus 
dem Kontext herausgerissen.

Also was ich meine ist, dass ein Code mit Vektoren funktioniert. Bsp:

1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
4
entity blink_test is
5
    Port 
6
    (
7
        led    : out STD_LOGIC_VECTOR (1 downto 0)
8
    );
9
end blink_test;
10
11
architecture Behavioral of blink_test is
12
13
begin
14
    led (1 downto 0) <= "11";
15
end Behavioral;

Das Selbe mit einzeln definierten led[] Ports zu versuchen, ist 
hoffnungslos. Bsp:

1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
4
entity blink_test is
5
    Port 
6
    (
7
        led[0]    : out STD_LOGIC
8
    );
9
end blink_test;
10
11
architecture Behavioral of blink_test is
12
13
begin
14
    led[0] <= '1';
15
end Behavioral;

Das .xdc ist direkt von Digilent und die betreffenden Ports werden dort 
auch als led[0], led[1],... etc. beschrieben (siehe Anhang).
Ist es einfach nicht möglich die led's hier als einzelne Ausgänge 
aufzurufen oder wo genau liegt das Problem hier?
Ehrlich gesagt habe ich mit Quartus und Blockschaltbildern angefangen, 
"[]" Port Definitionen haben dort gut funktioniert...

Vielen Dank für eure Hilfe und Gruess

von Christian R. (supachris)


Lesenswert?

Das zweite Beispiel ist auch Quatsch und funktioniert nicht. Endweder 
Vektor oderr haltz kein Vektzor. Ein Mischmasch geht nicht. Nimm das 
richtige Beispiel und gut ist. Eckige Klammern haben dort nichts zu 
suchen, lass dann halt einfach das [0] ganz weg.

: Bearbeitet durch User
von Fpgakuechle K. (Gast)


Lesenswert?

Andreas Kellermann schrieb:

>
1
> library IEEE;
2
> use IEEE.STD_LOGIC_1164.ALL;
3
> 
4
> entity blink_test is
5
>     Port
6
>     (
7
>         led[0]    : out STD_LOGIC
8
>     );
9
> end blink_test;
10
> 
11
> architecture Behavioral of blink_test is
12
> 
13
> begin
14
>     led[0] <= '1';
15
> end Behavioral;
16
>
>
> Das .xdc ist direkt von Digilent und die betreffenden Ports werden dort
> auch als led[0], led[1],... etc. beschrieben (siehe Anhang).
> Ist es einfach nicht möglich die led's hier als einzelne Ausgänge
> aufzurufen oder wo genau liegt das Problem hier?
> Ehrlich gesagt habe ich mit Quartus und Blockschaltbildern angefangen,
> "[]" Port Definitionen haben dort gut funktioniert...
>
> Vielen Dank für eure Hilfe und Gruess


In AHDL steht der Index zwischen eckigen Klammern, in VHDL in runden.

MfG,

von Andreas Kellermann (Gast)


Lesenswert?

Ja, ich habe auch einfach mit std_logic_vector und der Port Deklaration 
einzelner Pins mit, zB. "led (0), led (1) etc. weitergemacht. Hat mich 
halt nur interessiert wieso sie das so machen.

Vielen Dank nochmals!

von Christian R. (supachris)


Lesenswert?

Naja im xdc geht das, man kann da z.B. einen Vektor über verschiedene IO 
Bänke verteilen und die einzelnen Elemente des Vektors auch mit 
verschieden IO Spannungen laufen lassen.

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.