Forum: Mikrocontroller und Digitale Elektronik SN74LS193 Verständnisfrage


von Gustl B. (-gb-)


Angehängte Dateien:

Lesenswert?

Hallo,

ich möchte einen SN74LS193 in VHDL beschreiben. Dazu habe ich mir ein 
PDF mit Schaltplan gesucht und auch hier angehängt.
Im nächsten Schritt habe ich die Verbindungen eingefärbt.
Dann habe ich den einzelnen Verbindungen Namen gegeben und diese in VHDL 
beschrieben und so weiter ... aber, es funktioniert nicht wie es soll, 
ich vermute ich verstehe den Schaltplan nicht, also ein Paar Symbole 
daraus.

1. Das Dreieck ist ein "Treiber"?
2. Das Dreieck mit dem Kringel auf der rechten Seite ist quasi ein 
"NOT"?
3. Ist das Dreieck mit dem Kringel auf der linken Seite auch ein "NOT"?
4. Die RS-FFs haben am R und Clock Eingang auch einen Kringel - ein 
"NOT"?

Ja also ich habe das erstmal alles also jeden Kringel als "NOT" 
behandelt.

Wenn man dann die Eingänge
DOWN auf High
CLEAR auf Low
LOAD auf High
legt, dann sind aber z. B. am 1. FF (oben) der R und der S Eingang 
konstant beide auf Low. Das ändert also nie seinen Zustand.

Und dann sind das da ja laut Zeichnung RS-FFs, also die toggeln nicht 
wenn R und S beide High sind.

Findet Ihr Fehler?

Vielen Dank!

: Bearbeitet durch User
von Jens (Gast)


Lesenswert?

Gustl Buheitel schrieb:
> 1. Das Dreieck ist ein "Treiber"?
Wenn es einzeln ist, ja.
Im Kästchen ist es der Takteingang.

> 2. Das Dreieck mit dem Kringel auf der rechten Seite ist quasi ein
> "NOT"?
Kringel invertiert, ja.

> 3. Ist das Dreieck mit dem Kringel auf der linken Seite auch ein "NOT"?
Ja. Einmal bezieht sich das auf den Eingang und einmal auf den Ausgang.

> 4. Die RS-FFs haben am R und Clock Eingang auch einen Kringel - ein
> "NOT"?
Die reagieren auf die fallende Taktflanke.

Jens

von -gb- (Gast)


Lesenswert?

OK Danke! Jetzt verstehe ich es aber auch nicht besser. In dem einzelnen 
Bild hab ich die Signale für das obere FF eingezeichnet. Also alle die 
statisch sind. Und wenn man da jetzt an der Clock wackelt ändert sich 
trotzdem nichts weil R und S beide auf 0 festsitzen. Wo ist mein 
Denkfehler?

von R. F. (rfr)


Lesenswert?

Um einen Ladevorgang durchzuführen, muss Set gesetzt sein, dann ein 
Clockimpuls mit beiden Flanken durchgeführt werden und fertig.

Set ist dann High, wennData oinput High ist, das ist nicht 
eingezeichnet. Setze Dieses und Up auf 1 und down auf 0.

Load setze bitte auf Low.

Eigentlich solltle das dann funktionieren.

Robert

von -gb- (Gast)


Lesenswert?

Data 0 ist egal weil bei dem AND alle 1 sein müssten, Load aber eine 0 
vorgibt.

Ich möchte den IC erstmal so beschreiben, dass er nach oben zählt wenn 
man Up wackelt. So wie im Datenblatt auf Seite 6. Da sind Clear auf Low, 
Load auf High und Down auf High. Die Dateneingänge werden nicht beachtet 
weil ich nichts laden möchte.

Mein Problem ist, dass wenn ich diese 3 Eingänge auf die Werte setze die 
sie in dem Signalverlauf auf Seite 6 haben, R und S beide auf 0 sind. 
Also auch wenn dann Up wackelt passiert nichts.

von R. F. (rfr)


Lesenswert?

Das ist aber das Fehlverhalten deines Modelles und nicht das des Chips 
an sich. Viulleicht sollte man das mal am Quellcode diskutieren.

von -gb- (Gast)


Lesenswert?

Ich würde das gerne an der Zeichnung und dem Signalverlauf auf Seite 6 
des Datenblattes diskutieren. Da sieht man schön welche Level die 
Signale haben und dann kann man das in der Schaltung auch durchgehen.

Wie ich das sehe sollte es doch genügen Down, Clear, Load auf ein festes 
Level zu legen wie eben da auch auf Seite 6 und dann an Up zu wackeln 
damit der hochzählt.

Was ich gemacht habe ist genau die Level aus dem Diagramm auf Seite 6 an 
die 3 statischen Eingänge eingezeichnet und dann gebückt was an R und S 
des oberen FFs anliegt. Wo habe ich da den Fehler?

Was ich aber auch nicht verstehe ist, dass da auf Seite 6 wenn der 
hochzählt das niederwertigste Bit, also QA auch wackelt. Wie kann das 
sein bei einem RS-FF das nicht auf 0 zurückgesetzt wird?
(An den R Eingang gehen nämlich nur Signale die beim hochzählen im 
Diagramm statisch sind.)
Mit einem JK-FF sähe das schon anders aus.

von Gustl B. (-gb-)


Angehängte Dateien:

Lesenswert?

Was ich machen möchte ist den IC so beschreiben dass ich den 
Signalverlauf aus dem Datenblatt (Anhang) nachbilden kann.

Zuerst möchte ich da das einfache Hochzählen testen bzw. verstehen.

Also da wo unten in dem Diagramm "Count Up" steht. Da sind die 
Dateneingänge egal und CLR ist 0, NOT LOAD ist 1, DOWN ist 1 und an UP 
wird gewackelt.

Genau das habe ich im Schaltplan eingezeichnet und komme zu dem 
Ergebnis, dass am oberen FF R und S konstant (weil nur von statischen 
Signalen abhängig) auf 0 liegen.
Selbst wenn die beide auf 1 lägen würde ich den Signalverlauf nicht 
verstehen weil ein RS-FF nicht toggelt sondern den Zustand behält. Das 
wird nie zurückgesetzt und somit dürfte das niederwertigste Bit nicht 
mit dem halben Takt wackeln.
Wo ist mein Denkfehler? Habe ich in die Zeichnung falsche Level 
eingezeichnet (die 1 und 0)?

Danke!

: Bearbeitet durch User
von spontan (Gast)


Lesenswert?

Dein Denkfehler liegt beim Signal S, es ist auf 1.

von Gustl B. (-gb-)


Lesenswert?

OK, das ist ja schön, aber wieso ist es auf 1?

NOT LOAD ist auf 1, nach dem NOT (unten links) auf 0, geht also mit 0 
ins AND.

DATA INPUT A ist egal.

CLR ist 0, nach dem NOT ist es also 1 und geht mit 1 ins AND.

Am AND kommen also 0, 1 und egal an. Daraus macht das AND ein 0 und das 
NOT direkt dahinter eine 1.

Weil am S Eingang noch ein NOT ist, wird aus dieser 1 wieder eine 0.

Wo ist der Fehler genau?

von spontan (Gast)


Lesenswert?

>Wo ist der Fehler genau?

Die Frage ist entscheidend. Sieht nicht nach einem Denkfehler von dir 
aus.

Hab diverse Hersteller durchgesehen. Gab auch die Variante mit JK-FF, 
aber alle haben diese Negierung an S.

Ist seltsam, nimm die Negierung raus und schon funktioniert der Zähler 
wie er soll.

Nun stellt sich die Frage:
Was macht die Negierung und wo kommt ihre Berechtigung her? Die 
Innenschaltung des FF ist nicht dargestellt. Damit endet die von außen 
zuordbare Logik. Ich würd nicht so weit gehen wie du. Die 
Weiterverarbeitung des Siganl S im FF ist dir nicht bekannt. Also weißt 
du auch nicht, ob intern eine 0 oder 1 beim Takt am Eingang den Ausgang 
schaltet.

Außen am FF liegt eine 1 an. Und die würd ich als relevant ansehen.

von -gb- (Gast)


Lesenswert?

OK das Datenblatt zweifele ich sehr an weil auch wenn da jetzt eine 1 am 
S anliegt, das RS-FF wird nie zurückgesetzt. Also sollte es konstant 
gesetzt bleiben.

Selbst wenn R jetzt statt 0 auch eine 1 wäre, also S und R eine 1 dann 
würde ein RS-FF nicht toggeln sondern den Zustand behalten?!

Daher vermute ich ein JK-FF und zwar ohne das NOT oben beim S und mit 
einem NOT unten am R also damit beide Eingänge auf 1 liegen und es mit 
dem halben Takt toggelt.

Ich finde aber kein 74LS193 Datenblatt in dem das so steht, sondern 
immer nur die unverständliche Variante.

von Helmut S. (helmuts)


Lesenswert?

> Daher vermute ich ein JK-FF

Im Datenblatt ist ein T-Flipflop.
Wie das im 74LS193 realisiert ist spielt für die Simulation und die 
Synthese keine Rolle. Spätestens in der Synthese gibt es eh nur noch 
D-Flipflops plus Logikgatter.

Um das Bauteil in VHDL zu beschreiben muss man nur die Zeitdiagramme und 
Logiktabellen im Datenblatt anschauen.

von -gb- (Gast)


Lesenswert?

Also ich sehe da kein T-FF. Die hier haben doch R, S und Clock.

Ja ich könnte Zeitdiagramm und Logiktabelle verwenden aber das wollte 
ich bewusst nicht. Ich wollte und will genau die Schaltung beschreiben 
und wenn ich das mache so wie sie gezeichnet ist dann macht sie nicht 
das was das Zeitdiagramm sagt.

von Helmut S. (helmuts)


Lesenswert?

R und S sind asynchrone Eingänge.
Das T am Takteingang meint T-Flipflop. T=toggle

Die Implementierung in einem FPGA auf Gatterebene wäre "Wahnsinn", da 
die Flipflops durch "gating" der Takte gesteuert werden.

Am besten du nimmst den 74LS190/191 als Basis. Der lässt sich vernünftig 
in VHDL beschreiben und auch implementieren.

: Bearbeitet durch User
von -gb- (Gast)


Lesenswert?

Ja also das FF reagiert auf die Taktflanke wie im Datenblatt 
beschrieben. Aber wenn es R und S hat dann toggelt es nicht sondern 
setzt, löscht oder behält den Wert zur Taktflanke entsprechend dem was 
an R und S anliegt.

Bei S = 0 und R = 0 behält es den Wert, bei S = 0 und R = 1 setzt es den 
Wert auf 0 und bei S = 1 und R = 0 setzt es den Wert auf 1.

Bei R = 1 und S = 1 würde ein JK-FF toggeln, aber ein RS-FF nicht.

Das lässt sich schon alles schön in VHDL beschreiben, ich wüsste nur 
gerne was da tatsächlich im 74LS193 drinnen ist, also ist das Datenblatt 
hier korrekt und es ist ein RS-FF mit Takteingang der flankengesteuert 
ist oder ist das Datenblatt falsch?

Wenn es was anderes ist dann würde ich mich sehr über ein korrektes 
Datenblatt freuen.

von Helmut S. (helmuts)


Lesenswert?

> RS-FF mit Takteingang ?

Das Datenblatt ist richtig.

Es ist ein T-Flipflop mit asynchronem Set und Reset Eingang.

von Gustl B. (-gb-)


Lesenswert?

Ok, ich finde nur Beschreibungen von T-FFs die einen "Toggle" Eingang 
haben aber keinen Set/Reset.
(Daher meine Vermutung mit dem JK-FF weil das auch toggelt, aber noch 
zwei Eingänge wie R und S hat.)

Wie verhält sich ein solches FF? Im Datenblatt zählt es synchron zur 
steigenden Flanke von UP.

Und wie sieht es mit den Logikleveln an R und S aus? Sind die von mir 
eingezeichneten 1 und 0 richtig?

: Bearbeitet durch User
von Helmut S. (helmuts)


Lesenswert?

Mit jeder aktiven Taktflanke invertiert der Ausgang. Das englische Wort 
dafür heißt "toggle".

Der S ist low aktiv (runder Kreis im Schaltbild)

Der R ist high aktiv.

von Gustl B. (-gb-)


Lesenswert?

Ok das ist schonmal was! Wie verhalten sich R und S zum Takt? Also 
werden die nur zur Taktflanke "beachtet" oder immer, auch ohne Takt? 
Also ich meine selbst wenn der Takt anliegt und das eigentlich 
hochzählt, aber R aktiv ist bleibt es trotzdem auf 0 hängen?
Und wenn der Takt anliegt und das gerade seinen Wert von 1 auf 0 ändern 
sollte, aber S auf 0 liegt, wird es dann eine 1?

Und: Passen die von mir eingezeichneten Werte? Dann wäre S aktiv, weil 
es nach dem NOT am FF eine 0 im FF ist, oder bedeutet "low aktiv" schon 
dieses "NOT" am Eingang?

Was passiert wenn R und S aktiv sind? Gewinnt R?

: Bearbeitet durch User
von Helmut S. (helmuts)


Lesenswert?

S und R überschreiben alles egal ob da ein Takt kommt.

Wenn S aktiv(0) ist, geht der Ausgang immer auf 1, unabhängig vom Takt.
Wenn R aktiv(1) ist, geht der Ausgang immer auf 0, unabhängig vom Takt.

von Gustl B. (-gb-)


Lesenswert?

Ok, dann noch:

"S aktiv(0)" ist das vor oder hinter dem "NOT" am Eingang?

von Helmut S. (helmuts)


Lesenswert?

S aktiv(0)

Das ist vor dem "not-Kreis", also die blaue Linie.

von Gustl B. (-gb-)


Lesenswert?

Super! Danke! Dann guck ich mal ob ich das so umgesetzt bekomme ...

von Helmut S. (helmuts)


Lesenswert?

Mein dringender Rat, nimm den 191er.
Der 193er verwendet zwei asynchrone Clocks um das gleiche Flipflop zu 
schalten und dann werden diese Clocks auch noch mit Gattern "verundet". 
Das ist etwas was man in VHDL nie machen würde. Irgendwie finde ich es 
unsinnig zu versuchen das in VHDL zu implemnetieren was jeder 
vernünftigen Design-Praxis widerspricht.

von Gustl B. (-gb-)


Lesenswert?

Ja richtig, aber ich habe zwei alte Platinen aus den 80ern die irgendwie 
8 und 11 Bit-Werte generieren die dann an DACs gehen. Und das Signal aus 
diesen DACs erzeugt dann auf einem Monitor ein Bild.

Meine Aufgabe ist es jetzt dieses Bild an den PC zu übertragen.
Dazu könnte ich direkt an die Eingänge der DACs gehen und das da 
abgreifen, aber ich könnte auch diese beiden Karte ersetzen wenn ich die 
alte TTL-Logik in den FPGA stopfe den ich sowieso verwender werde. Das 
sind nur ein paar ICs und bis auf den 74LS193 habe ich schon alle 
beschrieben. Einen Schaltplan hab ich anhand von Fotos auch schon 
erstellt.

Sollte das nicht klappen gehe ich an die DAC Eingänge.

von Axel S. (a-za-z0-9)


Lesenswert?

-gb- schrieb:
> ich wüsste nur
> gerne was da tatsächlich im 74LS193 drinnen ist, also ist das Datenblatt
> hier korrekt und es ist ein RS-FF mit Takteingang der flankengesteuert
> ist oder ist das Datenblatt falsch?

Das Datenblatt ist weder richtig noch falsch. Die Innenschaltung ist 
nicht exakt, sondern nur ein Prinzipschaltbild. Schau dir einfach mal 
das Datenblatt verschiedener '193 Derivate verschiedener Herstellern an. 
Manche zeigen die Innenschaltung mit D-FF, andere mit JK-FF. usw. usf.

Andererseits ist ein binärer 4-Bit Synchronzähler eine relativ einfache, 
reguläre Struktur. Die würde ich in VHDL einfach nach Lehrbuch 
hinschreiben. Was soll der Unsinn, das von einem IC abkupfern zu wollen?

von Gustl B. (-gb-)


Lesenswert?

Gute Frage, in der Tat ein Zähler ist sehr einfach in VHDL, aber da ich 
eine alte Platine möglichst 1:1 nachbilden will und leider (noch) nicht 
verstehe was die ICs dort genau machen weiß ich nicht ob der Zähler 
wirklich nur als Zähler verwendet wird.

Also eine Ahnung wie man den sonst noch verwenden könnte, aber ich bin 
schon öfters über sehr trickreiche Schaltungen gestolpert die teilweise 
ICs nicht genau so verwendet haben wie es im Datenblatt stand.

Ich werde es jetzt als toggelndes FF mit S und R umsetzen.

von Helmut S. (helmuts)


Lesenswert?

Wenn du mal den Schaltplan des Zählers zeigst, dann kann man den VHDL 
Code bestimmt vereinfachen.

Beispiel:
Es wird nur der Up oder Down Eingang benutzt. Das vereinfacht die 
Schaltung deutlich.

von Gustl B. (-gb-)


Angehängte Dateien:

Lesenswert?

So, fertig, funktioniert :-D

Also auf Wunsch gibt es auch das VHDL, das ist aber eher chaotisch weil 
ich alle Drähte einzeln benannt und beschrieben habe um zu lange 
Logikzuweisungen zu vermeiden. Für mich ist das besser debugbar weil man 
dann im Simulator auch den Zustand der einzelnen Drähte sehen kann.

Edit:
Also von den beiden Platinen die ich nachbauen möchte habe ich noch 
nicht den vollständigen Schaltplan. Also weitestgehend ist der 
vollständig aber ein paar Vias liegen unter ICs, die habe ich noch nicht 
alle nachverfolgt.

Auch habe ich noch nicht überprüft ob nicht unter ICs Verbindungen sind 
die weder auf der Platinenrückseite noch auf der Vorderseite zu sehen 
sind weil sie nur Beinchen des jeweiligen ICs unter diesem verbinden. 
Dazu muss ich mal eine helle Taschenlampe bemühen und schräg unter den 
IC leuchten um das dann auf der Rückseite als Schatten zu erkennen (ist 
leicht durchsichtig die Platine).

Zusätzlich bekommen die Platinen einige Signale vom "Hauptgerät" zu dem 
ich keinen Schaltplan habe und das extrem unübersichtlich ist. Da werde 
ich mal einen Logic-Analyzer ranhängen. Der Plan ist jedenfalls diese 
Platinen durch eine eigene mit FPGA zu ersetzen und das dann an den PC 
zu schicken.

Es wird noch spannend ...

: Bearbeitet durch User
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.