mikrocontroller.net

Forum: FPGA, VHDL & Co. Spartan 3AN Constraints Problem


Autor: André D. (glynx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin

Ich hab nun seit ca. 3 Tagen mein Spartan 3AN Testboard und bin damit 
eigentlich auch recht zufrieden, hab mittlerweile die Toolchain 
eingerichtet und auch mal zwei einfache Testschaltungen in VHDL 
geschrieben.
Jetzt wollte ich mal die Taster verwenden (davor hab ich nur die 
Schalter verwendet beim 1. Test). Ich hab also in die Constraints wie 
folgt eingerichtet für den Test:
# kA was das genau bewirkt, ist aus der default uebernommen...
CONFIG VCCAUX = "3.3" ;
CONFIG ENABLE_SUSPEND = "FILTERED" ;
CONFIG POST_CRC = "DISABLE" ;

# LED Vector
NET "LED<0>"        LOC = "R20"  | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW ;
NET "LED<1>"        LOC = "T19"  | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW ;
NET "LED<2>"        LOC = "U20"  | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW ;
NET "LED<3>"        LOC = "U19"  | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW ;
NET "LED<4>"        LOC = "V19"  | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW ;
NET "LED<5>"        LOC = "V20"  | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW ;
NET "LED<6>"        LOC = "Y22"  | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW ;
NET "LED<7>"        LOC = "W21"  | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW ;

# Beispielsweise der South Button
NET "BTN_SOUTH"     LOC = "T15"  | IOSTANDARD = LVCMOS33 | PULLDOWN ;

Jetzt hab ich ein einfaches modul in VHDL geschrieben um die Schaltung 
zu implementieren:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity eq is
    Port (
    LED : out std_logic_vector(7 downto 0);
    BTN_SOUTH : in std_logic_vector(0 downto 0)
   );
end eq;

architecture Behavioral of eq is
begin
  LED <= "11111111" when BTN_SOUTH = "1" else "00000000";
end Behavioral;

Mein Problem ist nun jedoch, dass das Synthetisieren funktioniert, aber 
beim Translate bekomm ich folgende Fehlermeldung:
ERROR:ConstraintSystem:59 - Constraint <PULLDOWN ;> [s3astarter.ucf(27)]: NET "BTN_SOUTH" not found.  Please verify that:
   1. The specified design element actually exists in the original design.
   2. The specified object is spelled correctly in the constraint source file.

Jetzt frag ich mich einfach, wie kann ich das geradebiegen...in dem Buch 
was ich mir geholt hab ("FPGA prototyping by VHDL examples") hab ich bis 
jetzt noch nichts Hilfreiches für das Problem gelesen :/

Ich verwende als Setup hier:
Ubuntu 9.10
ISE 11.1
Spartan 3AN Testboard von Xilinx (aber das tut ja gerade nichts zur 
Sache ;))

Wäre wirklich cool wenn jemand mir da mal etwas helfen könnte...hab nun 
schon 3 Std erfolglos gegoogelt und nichts gefunden, außer einem Thread 
im Xilinx board, wo es aber um nicht benutzte Constraints ging, die hier 
eigentlich ja nicht auftreten sollten :/

MfG André

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

Bewertung
0 lesenswert
nicht lesenswert
> BTN_SOUTH : in std_logic_vector(0 downto 0)
Der Button dürfte wahrscheinlich kein Vektor sein   :-o

Probiers mal so:
> BTN_SOUTH : in std_logic

Oder alternativ pass das UCF an:
NET "BTN_SOUTH<0>"     LOC = "T15"  | IOSTANDARD = LVCMOS33 | PULLDOWN ;
(Nein, lass das. Das war nur ein Scherz ;-)

Autor: André D. (glynx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab auch keine Ahnung warum das nen Vektor sein soll, wenn ich es 
jedoch als Boolean übernehme, bekomm ich die Meldung, dass es sich bei 
dem BTN_SOUTH nicht um einen boolean handle.
Gibts iwie ne Möglichkeit herauszufinden was es denn ist?

Schonma danke für deine Mühe, auch wenn es mich gerade net weiter 
bringt.

MfG André

Autor: André D. (glynx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch als kurzer Anhang, der Code sieht wenn ich normale bools verwende 
so aus:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity eq is
    Port (
    LED : out std_logic_vector(7 downto 0);
    BTN_SOUTH : in std_logic
   );
end eq;

architecture Behavioral of eq is
begin
  LED <= "11111111" when BTN_SOUTH else "00000000";
end Behavioral;

trotzdem bekomme ich wie gesagt nen Fehler, der lautet genau:
ERROR:HDLParsers:802 - "/ichBinEinPfad/eq.vhd" 
Line 14. BTN_SOUTH is not a boolean expression.

ERROR:HDLParsers:826 - "/idhBinEinPfad/eq.vhd" 
Line 14. When condition BTN_SOUTH is not of type BOOLEAN.

MfG André

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

Bewertung
0 lesenswert
nicht lesenswert
> BTN_SOUTH nicht um einen boolean
Häh? Wer hat hier jetzt was von einem boolean geschrieben?
Woher kommt jetzt der boolean?

Machs dir doch einfach:
Es gibt in der harten Realität nur die Datentypen std_logic, 
std_logic_vector, signed, unsigned und integer. Und natürlich selbst 
definierte für Statemachines.

Aber keine bit, bit_vector, boolean ...

> Gibts iwie ne Möglichkeit herauszufinden was es denn ist?
BTN_SOUTH ist genau das, was du sagst, das es sein solle. Und es gibt 
nur 1 brauchbare Möglichkeit, die für die Synthese in Frage kommt: 
std_logic.

EDIT:
Die Fehlermeldung sagt es schon:
>>> BTN_SOUTH is not a boolean expression <<<
Ist es ja auch nicht, es ist ein std_logic. Vergiss die impliziten 
Konstrukte der C-Programmierung. Du machst hier VHDL. Und da mußt du 
explizit vergleichen:
   LED <= "11111111" when BTN_SOUTH = '1' else "00000000";
Hier wird BTN_SOUTH explizit mit '1' verglichen. Das Ergebnis dieses 
Vergleichs ist boolean (true/false). Und when braucht ein boolean.

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.