mikrocontroller.net

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


Autor: Tetraman (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

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

Autor: Helmut S. (helmuts)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: faustian (Gast)
Datum:

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

Autor: Tetraman (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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... 
, im Katalog S.519 )

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Tetraman (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Tetraman (Gast)
Datum:

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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Stefan Kunz (syliosha)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
1 lesenswert
nicht 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   ;-)

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Tetraman (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Helmut S. (helmuts)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Uwe Bonnes (Gast)
Datum:
Angehängte Dateien:

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

Autor: Tetraman (Gast)
Datum:
Angehängte Dateien:

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

Autor: Entwickler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Tetraman (Gast)
Datum:
Angehängte Dateien:

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

Autor: Entwickler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Tetraman (Gast)
Datum:

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

Autor: markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.