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


von Armin (Gast)


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)
1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
use IEEE.STD_LOGIC_ARITH.ALL;
4
use IEEE.STD_LOGIC_UNSIGNED.ALL;
5
6
7
entity main is
8
port(  myIn: in bit;
9
    In1: in bit;
10
    In2: in bit;
11
    Out1: out bit;
12
    Out2: out bit;
13
    Out3: out bit;
14
    Out4: out bit);
15
end main;
16
17
architecture RTL of main is
18
begin
19
  Out1 <= In1;
20
  Out2 <= not In1;
21
  Out3 <= In2;
22
  Out4 <= not In2;
23
end RTL;

pinbelegung:
1
#Outputs
2
NET "Out1"  LOC = "P1"  ;
3
NET "Out2"  LOC = "P2"  ;
4
NET "Out3"  LOC = "P3"  ;
5
NET "Out4"  LOC = "P4"  ;
6
#Inputs
7
NET "In1"  LOC = "P5"  ;
8
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

von Christian R. (supachris)


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.

von Armin (Gast)


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?

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


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.

von Armin (Gast)


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 -.-)

von Christian R. (supachris)


Lesenswert?

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

von Artur H. (hohoho)


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 :(

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


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.

von Christian R. (supachris)


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....

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.