Tri-State ausgänge (XC95144XL)

Gast #2878284
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.
Angehängte Dateien:
Moderator (Firma: Titel) Persönliche Seite #2878334
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...
Gast #2878412
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
Gast #2878431
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.
Gast #2878440
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.
Gast #2879046
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren