mikrocontroller.net

Forum: FPGA, VHDL & Co. CPLD & VHDL - Eingänge pull-up?


Autor: Armin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich mache gerade meine ersten Gehversuche mit VHDL und CPLDs
bin heute mehrere Stunden drangesessen, dass die Übertragung klappt.
Das Xilinx WebPack schreckt ja am Anfang eher ab, als dass es hilft. ^^


nun bin ich also soweit, dass ich keine allgemeine Planlosigkeit 
verspür, sondern ein konkretes Problem hab.
An Pin 1-4 sind 4 LEDs angeschlossen (über Widerstand an GND)
An Pin 5-6 sind 2 Buttons angeschlossen (auf GND, keine ext. Pull-Ups)
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;


entity main is
port(  myIn: in bit;
    In1: in bit;
    In2: in bit;
    Out1: out bit;
    Out2: out bit;
    Out3: out bit;
    Out4: out bit);
end main;

architecture RTL of main is
begin
  Out1 <= In1;
  Out2 <= not In1;
  Out3 <= In2;
  Out4 <= not In2;
end RTL;

pinbelegung:
#Outputs
NET "Out1"  LOC = "P1"  ;
NET "Out2"  LOC = "P2"  ;
NET "Out3"  LOC = "P3"  ;
NET "Out4"  LOC = "P4"  ;
#Inputs
NET "In1"  LOC = "P5"  ;
NET "In2"  LOC = "P6"  ;

1. Die Ausgabe funktioniert nur einmal. Also sobald ich einen Taster 
drückt, wechseln die LEDs einmalig. Sie schalten aber beim Loslassen 
nicht mehr zurück. Wenn ich das Programm richtig geschrieben hab (???), 
liegt das daran, dass die beiden Eingänge intern noch keine Pull-Ups 
haben - also das "Loslassen" nicht mehr erkannt wird. Wie realisiere ich 
es, dass die Eingänge standardmäßig auf 1 sind?

2. Den Port myIn (noch von Früher) krieg ich nicht mehr weg - sonst 
wirft das "Translate" einen Fehler. Kann mir jemand sagen, woher das 
kommt? Wo muss ich ihn noch rauslöschen, wenn ich ihn im main.vhd 
rauswerfe?
Auch wenn ich ihn aus dem vhd rausnehme, steht er nach dem synthesizen 
z.B. noch als "Top Level Port" drin, wenn man auf den Button "View RTL 
Schematic" drücke :S

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1.:

Im UCF:

NET "In1"  LOC = "P5"  | PULLUP;
NET "In2"  LOC = "P6"  | PULLUP;

2. Hmm....mal Clean Project Files gemacht nach dem Löschen des Ports? 
Versuch mal, alles std_logic statt Bit zu nehmen....vielleicht gehts 
dann.

Autor: Armin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ach, dass das "pullup" mit |-Strich drangeschrieben werden muss, war mir 
nicht klar. Danke.


"Clean Project Files" hat auch geholfen. Langsam wird's...


was bietet std_logic statt Bit für Vorteile, bzw wo ist der Unterschied?

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

Bewertung
0 lesenswert
nicht lesenswert
> was bietet std_logic statt Bit für Vorteile, bzw wo ist der Unterschied?
bit kennt nur 0 und 1, std_logic dagegen ist 9-wertig und kennt z.B. 
auch den Zustand Z für einen hochohmigen Ausgang. An den Schnittstellen 
(oder wenigstens an den Pins) wird deshalb üblicherweise std_logic 
verwendet.

Autor: Armin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
doll.
jetzt hab ich den externen widerstand wieder ausgelötet und des haut 
wieder nicht hin.
Laut datenblatt hat das Ding gar keine pullups. Dreck!
Man kann sich das Leben auch schwer machen

trotzdem danke
(benutze XC9572XL -.-)

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso, diese antiken Stromfresser....naja, da muss man sich nicht 
wundern.

Autor: Artur H. (hohoho)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gibt es denn eine andere CPLD Reihe, die für Hobbybastler interessant 
wäre ( also nicht nur in TQFP oder BGA erhältlich ist ) ?
Ich würde demnächst auch gerne mit CPLDs die ersten Schritte wagen, aber 
außer dem XL95xx ( PLCC 44 / 84 ) habe ich keine anderen vernünftigen 
gefunden :(

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

Bewertung
0 lesenswert
nicht lesenswert
> Gibt es denn eine andere CPLD Reihe, die für Hobbybastler interessant
> wäre ( also nicht nur in TQFP oder BGA erhältlich ist ) ?
Nichts, was es sich neu zu lernen lohnt...  :-/
Die ispLSI Dinger von Lattice sind auch schon ewig alt.

Kauf dir doch zum Einstieg das Pollin-CPLD-Board, dann sparst du dir 
erst mal das Löten. Und ein TQFP100 ist auch nicht soooo schwer zu 
löten.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, wie Lothar schon sagte, ein CPLD ist nur in den wenigsten Fällen 
sinnvoll. Heutzutage nimmt man dafür FPGAs. Das 
Preis/Leistungs-Verhältnis ist wesentlich besser. CoolRunner II wäre bei 
Xilinx noch was halbwegs aktuelles, aber da kannst du gleich einen 
kleinen Spartan 3 nehmen. Um TQFP als Minimum kommste aber eh nicht mehr 
herum......CPLDs/FPGAs zielen nun mal nicht auf Bastler ab....

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.