Forum: FPGA, VHDL & Co. Aufbau eines dekadischen Zählers


von Tetraman (Gast)


Lesenswert?

Ich bin auf der Suche nach einer Schaltung, die den Wert eines 
Quarzoszillators (1 MHz) dekadisch herunterrechnet. Die Frequenzwerte 
(1MHz, 100KHz, 10 KHz, 1KHz, 100Hz, 10 HZ und 1 Hz) sollen mittels 
Schalter (Dreh-) einstellbar sein.
Was für eine Schaltung und was für einen IC bräuchte ich dafür?
Ich bin absoluter Neuling in diesem Bereich und bräuchte dringend Hilfe.

von gast (Gast)


Lesenswert?


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


Lesenswert?

Die Bausteine meiner Wahl wären 74390 oder 74490
(jeweils 2-fache Dezimalzähler)    oder ein CPLD ;-)

von Helmut S. (helmuts)


Lesenswert?

Als Teiler nimmst du am besten den 74HC(HCT)390. Da hast du gleich zwei 
Teiler /2 und 2 Teiler /5 in einem Gehäuse. Falls dein Oszillator 
CMOS-Pegel liefert, dann nimm den 74HC390. Der hat mehr Störabstand.

1. IC

Eingang -->Teiler/5-->Teiler/2--> Ausgang/10

Ausgang/10 -->Teiler/5-->Teiler/2--> Ausgang/100


2. IC

Ausgang/100 -->Teiler/5-->Teiler/2--> Ausgang/1000

Ausgang/1000 -->Teiler/5-->Teiler/2--> Ausgang/10000

u.s.w


Mit den Ausgängen gehst du auf deinen Drehschalter(kurze Leitung!)

Vom Drehschalter geht es zum Treiber-IC, z.B. 74HC244.
Da schaltest du dann z.B. 4 der internen Gatter parallel um einen
niedrigen Ausgangswiderstand zu bekommen. In Reihe zum Ausgang noch 
einen 47 Ohm Widerstand und dann zur BNC-Buchse, fallst du das so 
brauchst.
Damit hättests du einen 50 Ohm Ausgang an den du beliebig lange 
BNC-Kabel anschließen kannst. Brauchst du das?

von faustian (Gast)


Lesenswert?

Der GANZ klassische '90 tuts auch dafuer, aber ist eben nur eine Dekade 
pro IC.

von Tetraman (Gast)


Lesenswert?

Die Schaltung soll dazu dienen ein unterschiedliches Clocksignal zu 
erzeugen, welches dann auf einen CPLD XC9572XL PC44 (Pin I/O GCK1) gehen 
soll.

Der Oszillator ist aus dem Reichelt-Katalog 
(http://www.reichelt.de/?;ACTION=3;LA=444;GROUP=B42;GROUPID=3174;ARTICLE=13673;START=0;SORT=artnr;OFFSET=16;SID=28mlnnhqwQARwAAFKdeYU903fcae0ab1e3850cdf828b8e3c48736 
, im Katalog S.519 )

von Duke Scarring (Gast)


Lesenswert?

@Tetraman:

Das ist eine gute Idee den Takt variabel zu gestalten. Ich habe auf 
meinem CPLD-Experimentierboard den Taktgenerator auch (leider erst 
nachträglich) variabel gestaltet.

Im CPLD sind sonst ganz schnell die Makrozellen alle, wenn man den Takt 
intern runterteilen möchte.

Die Frage ist, was und zu welchem Zweck ihr in Eurem CPLD machen wollt. 
Für LED-Spielereien braucht man eher langsame Take (1-500 Hz), für 
SPI-Slaves eher schnelle (20MHz).

Für Experimentalaufbauten ist es auch legitim, den Takt mit einem 
Funktionsgenerator zu erzweugen.

Duke

von Tetraman (Gast)


Lesenswert?

Ziel der gesamten Aufgabe, die ich bewältigen muss: Ein Demoboard für 
den Boundary-Scan zu schaffen. Dabei soll ein CPLD XC9572XL PC44 und ein 
EPROM (2716) eingesetzt werden. Der Takt soll sowohl manuell 
(entprellter Schalter) als auch automatisch funktionieren (mittels 
Drehschalter).
Eine 7-Segment-Anzeige und ein Lauflicht (wenn möglich mit 10 LEDs) 
sollen mit integriert werden.

von Tetraman (Gast)


Lesenswert?

Mir wurde jetzt als Tipp gegeben den 4029 oder den 4518 zu verwenden. 
Ist das der richtige Ansatz?

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


Lesenswert?

Tetraman schrieb:
> Ist das der richtige Ansatz?
Viele Wege führen nach Rom ;-)
Jeder der angesprochenen Baustein kann deine Aufgabe lösen.
Jeder auf seine Art.

BTW:
Ich würde nach wie vor ein CPLD nehmen...

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Lothar Miller schrieb:
> Tetraman schrieb:
>> Ist das der richtige Ansatz?
> Viele Wege führen nach Rom ;-)
> Jeder der angesprochenen Baustein kann deine Aufgabe lösen.
> Jeder auf seine Art.
>
> BTW:
> Ich würde nach wie vor ein CPLD nehmen...
Ich würde DAS CPLD nehemn welches er eh schon benutzt.

Tetraman schrieb:
> Ziel der gesamten Aufgabe, die ich bewältigen muss: Ein Demoboard für
> den Boundary-Scan zu schaffen. Dabei soll ein CPLD XC9572XL PC44 und ein

Nur das Teilen durch 10 würd ich durch Teilen durch 2/4/8/16... 
ersetzen.

von Stefan K. (syliosha)


Lesenswert?

Das Teilen durch 10 ist für den CPLD kein Ding, da der CPLD auf die 
Flanken des Signales Reagiert und die für den entsprechenden "Teiler" 
quasi nur hochzählen brauch und dann in Abhänigkeit von dem Wert einen 
Pin auf High oder Low setzen.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Stefan Kunz schrieb:
> Das Teilen durch 10 ist für den CPLD kein Ding, da der CPLD auf die
> Flanken des Signales Reagiert und die für den entsprechenden "Teiler"
> quasi nur hochzählen brauch und dann in Abhänigkeit von dem Wert einen
> Pin auf High oder Low setzen.
Trozdem ist es efizienter ganzzahlige Potenzen von 2 zu teilen.

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


Lesenswert?

> das Teilen durch 10 würd ich durch Teilen durch 2/4/8/16... ersetzen.
Menschen denken wegen ihrer zehn Finger nun mal dekadisch...
Höchstens Schreiner und Sägewerker denken und rechnen oktal  ;-)

> Trozdem ist es efizienter ganzzahlige Potenzen von 2 zu teilen.
Aber 10kHz und der Kehrwert davon sind für Menschen einfacher zu rechnen 
als irgendwas mit 16384Hz oder 8192Hz   ;-)

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Lothar Miller schrieb:
> Höchstens Schreiner und Sägewerker denken und rechnen oktal  ;-)
outsch :(

>> Trozdem ist es efizienter ganzzahlige Potenzen von 2 zu teilen.
> Aber 10kHz und der Kehrwert davon sind für Menschen einfacher zu rechnen
> als irgendwas mit 16384Hz oder 8192Hz   ;-)
Naja ich find binäres rechnen eigentlich einfacher als das dekadische :)
Aber ich benutz ja auch 19,66 Mhz Quarze anstelle von 20 Mhz :D

von Tetraman (Gast)


Angehängte Dateien:

Lesenswert?

Ich fand die Idee von Helmut S ganz gut und habe diese versucht 
umzusetzen. Guckt bitte mal drauf, ob ich alles richtig umgesetzt habe.

Muss das Signal noch anschließend verstärkt werden, also bevor es an den 
CPLD geht ?

von Helmut S. (helmuts)


Lesenswert?

Tetraman schrieb:
> Ich fand die Idee von Helmut S ganz gut und habe diese versucht
> umzusetzen. Guckt bitte mal drauf, ob ich alles richtig umgesetzt habe.
>
> Muss das Signal noch anschließend verstärkt werden, also bevor es an den
> CPLD geht ?


1. Beim Teler durch 5 muss man den Ausgang CT-2 nehmen.

2. Wenn du 50% Tastverhältnis willst(eventuell gar nicht notwendig in 
deiner Anwendung), dann musst du erst durch 5 und dann durch 2 teilen.


1MHz --> /5--/2-- 100kHz -- /5--/2 -- 10kHz ----

Mach deine Leitungen zum Schalter kurz und nimm dreiadrig-Flachband 
(Masse-Signal-Masse). Dann sollte das Signal auch am CPLD noch taugen.

von Uwe Bonnes (Gast)


Angehängte Dateien:

Lesenswert?

Der Verilog Code passt in ein XC9536XL und sollte so etwa tuen, was Du 
willst.

von Tetraman (Gast)


Angehängte Dateien:

Lesenswert?

Habs mal so weit geändert, dass als erstes 5 und dann durch 2 geteilt 
wird.
Muss der CT=0 beschalten werden?

von Entwickler (Gast)


Lesenswert?

> Muss der CT=0 beschalten werden?

Grundsätzlich gilt:

  a.) Unbenutzte Ausgänge bleiben offen / werden nicht angeschlossen.

  b.) Unbenutzte Eingänge müssen (fast) immer auf einen definierten
      Pegel gelegt werden.

Also musst Du CT=0 beschalten. Das ist ein Reset, der den Counter auf 
Null setzt. Schau im Datenblatt nach und überlege Dir, welcher Pegel 
(High oder Low) Du drauf geben musst.

von Tetraman (Gast)


Angehängte Dateien:

Lesenswert?

also ich habe jetzt die Ausgänge nach deiner Regel so offen gelassen und 
den CT=0 auf Masse gelegt.

von Entwickler (Gast)


Lesenswert?

So sieht das schon recht gut aus.

Ein kleiner "Schönheitsfehler" bleibt: Der Drehschalter prellt auch. 
D.h. wenn Du z.B. von Manuell-Takt auf 1 Hz umschaltest, kann und werden 
mehrere Impulse an das CPLD gegeben, u.U. auch so kurze, dass es zu 
Fehlern im CPLD kommen kann. D.h. sinnvoll umschalten kannst Du mit dem 
Drehschalter nur, wenn die Schaltung ausgeschaltet ist.

Eine einfache Lösung um dieses Problem zu umgehen, fällt mir auf die 
Schnelle auch nicht ein.

von Tetraman (Gast)


Lesenswert?

Gibt es vielleicht entprellte Schalter oder auch zeitverzögerte 
Schalter, die ich evtl. während des Schaltens dazwischenschalten kann?

von markus (Gast)


Lesenswert?

Wenn du mit dem Drehschalter nur gleichspannungen Schaltest, dann kann 
man den entprellen mit einfachen Tiefpässen...

Wie man eine Schaltung realisieren könnte:
ein dazu bräuchtest du noch sieben 2-fach &-Verknüpfungen.
An einen Pin kommt der jeweilige Takt, an den anderen Pin kommt die 
Gleichspannung vom Drehschalter.
So kann man Digitale Signale einfach schalten.

SG
Markus
(ich weiss der Beitrag ist von 2009 und jetzt ist 2015. Vlt hilft es 
trotzdem jemandem)

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


Lesenswert?

markus schrieb:
> ich weiss *der Beitrag ist von 2009*
Und die Lösung mit dem Tiefpass greift zu kurz. Ein Tiefpass allein 
reicht nicht zur Entprellung. Da ist mindestens noch ein Schmitttrigger 
nötig.

Und danach einfach mit UND-Gattern umzuschalten kann ganz hässliche 
Glitches mit sich bringen. Nicht umsonst braucht ein Taktumschalter im 
Taktmanager eines FPGAs wesentlich mehr Bauteile.

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