Forum: FPGA, VHDL & Co. Tri-State ausgänge (XC95144XL)


von Alex (Gast)


Angehängte Dateien:

Lesenswert?

Hi Leute,
hab vor kurzem mit Vhdl angefangen und hab jetzt ein Problem mit 
Tri-state Ausgängen.

Ich hab mehrere Zähler die zum Inkrementieren auf Masse gezogen werden 
müssen.
Dazu verwende ich den XC95144XL. Schalte also ein Ausgang des XC95144XL 
zwischen Z und 0(so alle 240ms soll er für 30ms auf 0 schalten).
1
.... 
2
o_Ausgefallenes_Signal_1 : out  STD_LOGIC ;
3
....
4
o_Ausgefallenes_Signal_1 <= '0';
5
...
6
o_Ausgefallenes_Signal_1 <= 'Z'; 
7
...
In der Simulation klappt alles wie gewollt.

Jeder Zähler hat eine Ausgangsspannung von 2,5V.
Wenn ich einen Zähler an den FPGA anschließe fällt die Ausgangsspannung 
auf 200mV ab. Mit dem Oszi sehe ich, dass der FPGA im richtigen Moment 
schaltet. Aber wenn er den Ausgang auf Hochohmig 'Z' schaltet, bleibt 
die Spannung auf 200mV, nimmt also nicht den Spannungswert des Zählers 
an.

Ich finde einfach nicht den Fehler.
Habt ihr irgendeine Anregung oder Idee?

Ich benutze ISE Project Navigator mit der web Licens.

Danke.

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


Lesenswert?

Alex schrieb:
> Dazu verwende ich den XC95144XL.
Ein CPLD also.
> Wenn ich einen Zähler an den FPGA anschließe
Welches FPGA?
(Am Rande: es heißt: das Feldprogrammierbare Gatearray)

> Aber wenn er den Ausgang auf Hochohmig 'Z' schaltet, bleibt die Spannung
> auf 200mV, nimmt also nicht den Spannungswert des Zählers an.
Du stocherst da irgendwie im Trüben. Ich würde kurz mal ein ganz 
einfaches Projekt aufsetzen, das mit einem Taster den Ausgang zwischen 0 
und Z hin- und herschaltet. Dann siehst du, ob die Tristate-Sache 
überhaupt funktioniert.

> Jeder Zähler hat eine Ausgangsspannung von 2,5V.
Hast du mal ein Datenblatt zu den Zählern? Evtl. fehlt da ein Pullup...

> Code.txt
Poste deinen Code bitte als *.vhdl Datei. Du wirst ein buntes Wunder 
erleben: Syntaxhighlighting...

von bko (Gast)


Lesenswert?

@Alex:

also ich sehe da schonmal ein mögl. Problem: zwei Takte...
>process (i_clk)
>    begin
>      if rising_edge(i_clk) then
>        vorteiler <= vorteiler + 1 ;
(...)
>  end process;

>  --Ausgefallene Signale
>process (vorteiler_clk)
>  if rising_edge(vorteiler_clk) then
>      --Counter
>        if int_start = '1' then

nimm doch mal lieber nur einen Takt für den Anfang:

So wie hier beschrieben mit enables(ganz unten)
http://www.mikrocontroller.net/articles/Taktung_FPGA/CPLD

von Pullup-Verkäufer (Gast)


Lesenswert?

Alex schrieb:
> Wenn ich einen Zähler an den FPGA anschließe fällt die Ausgangsspannung
> auf 200mV ab. Mit dem Oszi sehe ich, dass der FPGA im richtigen Moment
> schaltet. Aber wenn er den Ausgang auf Hochohmig 'Z' schaltet, bleibt
> die Spannung auf 200mV, nimmt also nicht den Spannungswert des Zählers
> an.

Sagmal, nen pull-up hast du aussen aber schon dran?
Sonst kann der wenn du Z anlegst beliebig hi oder low sein, weils kein 
Ausgang ist, sondern ein hochohmiger Eingang.

von Pullup-Verkäufer (Gast)


Lesenswert?

Interessant auch, dass man auf einen mit out definierten Ausgang 
überhaupt ein Z zuweisen kann. Macht ja nur für inout Sinn, weil der 
output-Buffer abgeschaltet werden muss, was für einen Ausgang nicht so 
Sinn macht.

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


Lesenswert?

Pullup-Verkäufer schrieb:
> Interessant auch, dass man auf einen mit out definierten Ausgang
> überhaupt ein Z zuweisen kann.
Warum?
Könnte ja z.B. ein ROM sein, das ja auch nur Daten ausgeben kann...

von Klaus F. (kfalser)


Lesenswert?

Lothar Miller schrieb:
> Pullup-Verkäufer schrieb:
>> Interessant auch, dass man auf einen mit out definierten Ausgang
>> überhaupt ein Z zuweisen kann.
> Warum?
> Könnte ja z.B. ein ROM sein, das ja auch nur Daten ausgeben kann...

Trotzdem hat er möglicherweise recht.
Versuch doch bitte das Signal als inout zu deklarieren.

von Christian R. (supachris)


Lesenswert?

Muss nicht inout sein. Bei Xilinx gehts auf jeden Fall, auch ein out mit 
'Z' zu belegen. Natürlich muss dann draußen irgendwas dran sein, sonst 
floatet es rum und man misst nur Mist.

von Alex (Gast)


Lesenswert?

Danke Leute!

Durch die Bedienungsanleitung des Zählers ging ich davon aus, dass der 
Zähler ein Pull-Up hat. Deswegen hab ich es gar nicht in betracht 
gezogen das zu überprüfen.
Na ja man lernt ja aus Fehlern :)

Die Zwei Takte sind beabsichtigt auch wenn es keine schöne Lösung ist.
Ich kann den nicht an eine globale Taktleitung rausführen, wird auch so 
gehen müssen.

Gruß
Alex

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


Lesenswert?

Alex schrieb:
> Die Zwei Takte sind beabsichtigt auch wenn es keine schöne Lösung ist.
Wenn man sich dessen bewusst ist, sind solche abgeleiteten Takte auf 
CPLDs auch mal erlaubt...  ;-)

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.