www.mikrocontroller.net

Forum: FPGA, VHDL & Co. ISE Schematic: nur ein Bit von UCF-Bus verwenden


Autor: Maik Fox (sabuty) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Gibt es eine Möglichkeit, in einem Xilinx ISE 11.2 Schematic von einem 
im ucf-File definierten Bus ohne das im angehängten Screenshot 
notwendige Konstrukt nur ein Bit zu verwenden?

Einen IO-Marker zu erstellen, der einfach "btn(0)" enthält, wird mit 
folgendem Fehler bestraft:
ERROR:DesignEntry:215 - toplevel.sch Net 'btn(0)' is an illegal name, because there is no corresponding bit bus for this bit bus member.

Ausweg wäre, die ucf-Datei mit doppelten Einträgen zu überfüllen, um die 
Busse aufzulösen, aber besonders schön fände ich das nicht.

ucf-file (digilent nexys2)
# Buttons

NET "btn<0>" LOC = "B18"; # Bank = 1, Pin name = IP, Type = INPUT, Sch name = BTN0
NET "btn<1>" LOC = "D18"; # Bank = 1, Pin name = IP/VREF_1, Type = VREF, Sch name = BTN1
NET "btn<2>" LOC = "E18"; # Bank = 1, Pin name = IP, Type = INPUT, Sch name = BTN2
NET "btn<3>" LOC = "H13"; # Bank = 1, Pin name = IP, Type = INPUT, Sch name = BTN3

Unschön an dem Konstrukt im Screenshot ist auch, dass für alle nicht 
verwendeten Bits eine Warnung generiert wird.

Autor: Michael Sauron (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die einfachste und schönste Lösung wäre, den ganzen Schematischen 
quatsch sein zu lassen, und auf VHDL umzusteigen. Als ich mit FPGA 
angefangen habe, habe ich auch mit den Schematics begonnen, und hab mir 
da auch nicht reinreden lassen. Ich hab ein halbes Jahr lang Bildchen 
gemalt und am ende alles in die Tonne gekloppt und VHDL gelernt. 
Eigentlich machst du dadurch den Job der Synthese, denn du beschreibst 
WIE etwas Funktioniert. VHDL beschreibt WAS Passieren soll, und das WIE 
mach die Synthese, und glaub mir, die kann das viel besser als du. 
Ausserdem werden Programme durch VHDL kompakter und übersichtlicher, 
denn was du hier schon über 2 Schematische seiten verteilt hast, passt 
in ein paar Zeilen VHDL Code:
process (clkgood) begin
   if rising_edge (clkgood) then
      conv_help <= btn(0);
      conv_start <= conv_help;
   end if;
end process;

Hat Ausserdem noch den vorteil, von Xilinx unabhängig zu sein.

Autor: Maik Fox (sabuty) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verwende die Schematics nur, um meine VHDL-Dateien untereinander und 
mit der Außenwelt zu verbinden. Aus diesen Verbindungs-Schematics wird 
ja auch nur wieder VHDL erzeugt, das dann für die Synthese verwendet 
wird. Das asyncinput im obigen Screenshot ist ja auch nur eine 
VHDL-Datei mit dazu erzeugtem Symbol.

Die Schematics nehmen einem meiner Meinung nach sehr viel idiotische 
Arbeit ab. Das "Problem", das ich hier habe, ist mir das allemal wert, 
nicht seitenweise VHDL-Code zur Komponenten-Verdrahtung schreiben zu 
müssen.

Als Übergangslösung habe ich mir nun eben Netze wie led0 und btn0 
zusätzlich mit in das ucf-file aufgenommen.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn es hilft, kannst du diesen Bus-"Abzweig" auch weglassen. Den Bus 
irgendwohin zeichnen und dann an dein Modul nur eine Leitung mit BTN(0) 
z.B. bezeichnet. Das klappt auch und machts etwas übersichtlicher.

Allerdings beschreibe ich das Top-Level auch mit VHDL, da kann man 
schnell mal was austauschen. Und die ISE liefert die passenden 
Instanziierungs-Volagen ja sowieso zu den Modulen. Mit Copy Paste ist 
man da schnell am Ziel.

Autor: Maik Fox (sabuty) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christian R. schrieb:
> Wenn es hilft, kannst du diesen Bus-"Abzweig" auch weglassen. Den Bus
> irgendwohin zeichnen und dann an dein Modul nur eine Leitung mit BTN(0)
> z.B. bezeichnet. Das klappt auch und machts etwas übersichtlicher.

Danke :)

Diese Busse in Verbindung mit vorgegebenen ucf-Files machen mich langsam 
sowieso verrückt. Da man selten alle Pins verwendet, schaltet man ja die 
Option ein, das nicht erfüllte LOC-Constraints nur noch eine Warnung und 
keinen Error mehr erzeugen. Dadurch bin ich allerdings am Wochenende in 
die Falle getappt: Auf meinem Digilent Nexys2 gibt es einen MemAdr-Bus, 
der 23 Bit breit ist und clevererweise als MemAdr(23:1) definiert ist. 
Auch in den Schaltplänen vom Board ist das konsequent so weitergeführt. 
Wenn man allerdings nur mal schnell etwas ausprobieren will und dann 
MemAdr(23:0) verwendet... ihr ahnt, wo das hinführt. Irgendwo in den 158 
anderen Warnungen bezüglich der nicht erfüllten constraints war nun eben 
noch einer bezüglich MemAdr(0) ;)

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Maik F. schrieb:

> Diese Busse in Verbindung mit vorgegebenen ucf-Files machen mich langsam
> sowieso verrückt. Da man selten alle Pins verwendet, schaltet man ja die
> Option ein, das nicht erfüllte LOC-Constraints nur noch eine Warnung und
> keinen Error mehr erzeugen. Dadurch bin ich allerdings am Wochenende in
> die Falle getappt: Auf meinem Digilent Nexys2 gibt es einen MemAdr-Bus,
> der 23 Bit breit ist und clevererweise als MemAdr(23:1) definiert ist.
> Auch in den Schaltplänen vom Board ist das konsequent so weitergeführt.
> Wenn man allerdings nur mal schnell etwas ausprobieren will und dann
> MemAdr(23:0) verwendet...

Naja, das Denken nimmt dir keiner ab. Und bei einem 16-Bit Zugriff macht 
es schon Sinn, die A0 wegzulassen. Kommentier doch die nicht benötigten 
Sachen im UCF aus. ISE beherrscht doch sogar Block-Kommentare per 
Mausklick, also ist doch ganz einfach...

Autor: Maik Fox (sabuty) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christian R. schrieb:
> Kommentier doch die nicht benötigten
> Sachen im UCF aus. ISE beherrscht doch sogar Block-Kommentare per
> Mausklick, also ist doch ganz einfach...

Das werde ich jetzt auch wieder so machen, wie am Anfang auch. Trotzdem 
könnte sich Xilinx bezüglich Usability wirklich mal etwas von Visual 
Studio oder eclipse abschauen. Bei denen beiden funktioniert immerhin 
das Mausrad, so wie es soll ;)

Nun aber genug gemeckert, danke für eure Antworten.

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.