Forum: FPGA, VHDL & Co. CPLD: 200MHz Counter


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Ralf S. (ralf_s572)


Lesenswert?

Guten Morgen!

Ich hab mal vor 20 Jahren kurze Zeit was mit VHDL gemacht und alles 
wieder vergessen. Im Moment versuche ich, wieder alles auf die Reihe zu 
bekommen. Deshalb 2 Fragen.

1. Frage: Wenn ich 200MHz zählen will, welche max. Frequenz sollte ein 
CPLD haben? Min. 200MHz oder das doppelte (falls es solche CPLD 
überhaupt gibt)?

2. Frage: Der Counter soll freilaufend sein und der Zählerstand mit 
einer asychronen Sample-Flanke gespeichert(gelatched) werden. Der 
Counter darf aber nicht gestört werden und soll immer weiterzählen. Ist 
das überhaupt möglich, da nach 5ns schon der nächste Zählimpuls kommt.

von Ralph B. (rberres)


Lesenswert?

Verwendet nicht z.B. der Racal Dana 1991 auch einen CLPD für den 
Reziprogzähler? Wie sieht es mit den aktuellen Keysight Zählern aus?

Ralph Berres

von René F. (therfd)


Lesenswert?

Vielleicht könnte das für dich interessant sein:
https://hackaday.com/2014/06/29/counting-really-really-fast-with-an-fpga/

von Duke Scarring (Gast)


Lesenswert?

Ein MachXO2 von Lattice ist mit 400 MHz am Eingangspin spezifiziert. Das 
hatte ich mal getestet und das passte auch (unter Laborbedingungen und 
mit Anpassung des DC-Offsets ging auch etwas über 600 MHz noch).

Duke

von Ralf S. (ralf_s572)


Lesenswert?

Hallo,
danke für die Links. Mit dem Thema kratzt man wirklich am Rand der 
DIY-Physik. Das Problem ist nicht, die hohen Frequenzen zu zählen, 
sondern den Zählerstand in ein Latch zu bekommen. Wenn das z.B. 20ns 
braucht, ist man schon verloren, weil der Zähler bei 200MHz um 4 Ticks 
weiter gezählt hat. Ich hab auf Mouser mal einen abgekündigten 
Motorola-Zähler-Chip gesehen, der hatte 800ps Durchlaufzeit. Evtl. muss 
ich auch meinen Anwenundsfall umstellen und den Zähler gaten, dann kann 
ich den Stand in Ruhe auslesen.

von Anarchist (Gast)


Lesenswert?

Um mit 200 MHz zählen zu können musst du den CPLD mit mindestens 400 MHz 
takten.

von Sigi (Gast)


Lesenswert?

Warum sollte man denn bei einem cpld mit klasischen Makrozellen nicht 
direkt mit dem Eingangssignal FF schalten können? Leuchtet mir nicht 
ganz ein.
Ein FPGA basiertes 'cpld' außen vor gelassen.

von Ralf S. (ralf_s572)


Lesenswert?

Anarchist schrieb:
> Um mit 200 MHz zählen zu können musst du den CPLD mit mindestens 400 MHz
> takten.

Wieso? Der Clock ist doch das Eingangssignal. Oder hab ich was nicht 
verstanden? Ist das vielleicht bei FPGA so? Ich will ja einen CPLD.

von Achim S. (Gast)


Lesenswert?

Ralf S. schrieb:
> Wenn ich 200MHz zählen will, welche max. Frequenz sollte ein
> CPLD haben?

Das hängt unter anderem auch von der Zählerbreite ab (ab einer gewissen 
Zählerbreite werden mehr Logikstufen fällig). Am einfachsten entwirfst 
du den Zähler und ein 200 MHz Takt-Constraint und lässt dein 
Entwicklungssytem prüfen, ob ein bestimmtes CPLD noch ausreicht oder ob 
ein schnelleres nötig wird. Erst wenn das Entwicklungssystem dir die 
ausreichende Geschwindigkeit bestätigt brauchst du die Hardware zu 
besorgen.

Ralf S. schrieb:
> und der Zählerstand mit
> einer asychronen Sample-Flanke gespeichert(gelatched) werden.

Dann musst du unbedingt zuerst die asynchrone Flanke eintakten und dann 
mit dem daraus entstehenden synchronen Signal den Zählerstand in ein 
Register abspeichern. Wenn du direkt mit asynchronen Eingängen arbeiten 
würdest wäre die Wahrscheinlichkeit sehr hoch, dass unterschiedliche 
Stellen deines Zählers in unterschiedlichen Taktperiode gespeichert 
würden (der gespeicherte Zählerstand also unsinnige Werte annehmen 
würde).

Anarchist schrieb:
> Um mit 200 MHz zählen zu können musst du den CPLD mit mindestens 400 MHz
> takten.

Wenn der Takt selbst gezählt werden soll (das Ganze also quasi einen 
Timer bildet, der die Zeitstamps der Sample-Flanken bestimmen soll), 
reichen auch die 200MHz.

von Ralf S. (ralf_s572)


Lesenswert?

Achim S. schrieb:

> Dann musst du unbedingt zuerst die asynchrone Flanke eintakten und dann
> mit dem daraus entstehenden synchronen Signal den Zählerstand in ein
> Register abspeichern. Wenn du direkt mit asynchronen Eingängen arbeiten
> würdest wäre die Wahrscheinlichkeit sehr hoch, dass unterschiedliche
> Stellen deines Zählers in unterschiedlichen Taktperiode gespeichert
> würden (der gespeicherte Zählerstand also unsinnige Werte annehmen
> würde).

Klingt interessant. D.h. erstmal mit einen D-FF synchronisieren. Bleibt 
aber vermutlich das Problem, dass ich den Zählerstand nicht rechtzeitig 
ins Register bekomme. Aber erstmal Danke!

von Thomas L. (Gast)


Angehängte Dateien:

Lesenswert?

Im Funkamateur 2005-02 war genau so eine Schaltung.

von Christoph Z. (christophz)


Lesenswert?

Ralf S. schrieb:
> Ich will ja einen CPLD.

Da ist die Auswahl in den letzten 20 Jahren halt massiv ausgedünnt 
worden.

Also entweder nehmen, was du von damals schon kennst (z. B. CoolRunner 
2) oder Lattice:
https://www.latticesemi.com/Products/FPGAandCPLD/ispMACH4000VZ

Alles andere sind FPGAs

von Achim S. (Gast)


Lesenswert?

Ralf S. schrieb:
> Klingt interessant. D.h. erstmal mit einen D-FF synchronisieren.

richtig

Ralf S. schrieb:
> Bleibt
> aber vermutlich das Problem, dass ich den Zählerstand nicht rechtzeitig
> ins Register bekomme.

kommt darauf an, wie du "rechtzeitig" definierst. Bei einem asynchronen 
Steuersignal hast du ja immer Fälle, bei denen unklar ist, ob die Flanke 
des Steuersignal im n-ten Takt n oder im n+ersten Takt auftritt. Wenn du 
das Steuersignal zunächst einsynchronisierst, verschiebst du halt die 
Wirkung des Signals definiert um einen Takt nach hinten. Dafür haben 
dann alle Bits des Speicherregisters ausreichende 5ns Zeit, um den 
korrekten Zählerwert zu übernehmen.

http://www.lothar-miller.de/s9y/categories/35-Einsynchronisieren

Ein Problem entsteht daraus höchstens, wenn du den Zählerstand wirklich 
schon 5ns "früher" verwenden musst.

von W.S. (Gast)


Lesenswert?

Ralf S. schrieb:
> 1. Frage: Wenn ich 200MHz zählen will, welche max. Frequenz sollte ein
> CPLD haben? Min. 200MHz oder das doppelte (falls es solche CPLD
> überhaupt gibt)?

Nimm einen kleinen Coolrunner von Xilinx, die gibt es recht billig und 
die können bis über 600 MHz schnell zählen. Ich habe in meinen 
Eigenbau-Zählern so etwas drin. Auch für die Referenz, dort habe ich 200 
MHz werkeln.

Was da frequenzmäßig begrenzt, ist die Analogtechnik davor. Das habe ich 
beim Benutzen der Zähler gemerkt. Am ehesten geht als Komparator vor dem 
CPLD ein FIN1002  ggf. mit externer Mitkopplung, um eine kleine 
Hysterese zu erzeugen.

W.S.

von Gerhard H. (ghf)


Lesenswert?

200 MHz habe ich in einem Coolrunner2 mit 128 Macrozellen schon 
hinbekommen, mit Torzeit-Generator und SPI-Interface. Ich glaube, 64 
Zellen hätte gerade so gereicht. Die kleinen Coolrunners sind deutlich 
schneller.
Bei 200 MHz muss der Takt "schön" sein.

Gerhard

von Ralf S. (ralf_s572)


Lesenswert?

W.S. schrieb:
> Ralf S. schrieb:
>> 1. Frage: Wenn ich 200MHz zählen will, welche max. Frequenz sollte ein
>> CPLD haben? Min. 200MHz oder das doppelte (falls es solche CPLD
>> überhaupt gibt)?
>
> Nimm einen kleinen Coolrunner von Xilinx, die gibt es recht billig und
> die können bis über 600 MHz schnell zählen. Ich habe in meinen
> Eigenbau-Zählern so etwas drin. Auch für die Referenz, dort habe ich 200
> MHz werkeln.
>
> Was da frequenzmäßig begrenzt, ist die Analogtechnik davor. Das habe ich
> beim Benutzen der Zähler gemerkt. Am ehesten geht als Komparator vor dem
> CPLD ein FIN1002  ggf. mit externer Mitkopplung, um eine kleine
> Hysterese zu erzeugen.
>
> W.S.

Die Coolrunner sind ja wirklich kleine Teufel.
Nochmal zur Vergewisserung: CPLD haben ihr Programm im eigenen Flash und 
FPGA müssen ihr Programm erst extern reinladen?

von Ralf S. (ralf_s572)


Lesenswert?

Thomas L. schrieb:
> Im Funkamateur 2005-02 war genau so eine Schaltung.

Danke für den Bericht. Der Autor hat auch eine Site: 
https://dl1dsn.de/projects/counter/counter.htm

von Gerhard H. (ghf)


Lesenswert?

Ralf S. schrieb:

> Die Coolrunner sind ja wirklich kleine Teufel.
> Nochmal zur Vergewisserung: CPLD haben ihr Programm im eigenen Flash und
> FPGA müssen ihr Programm erst extern reinladen?

Ja, die Coolrunner haben eigenes Flash auf dem Chip.
Es gibt aber auch FPGAs, die zumindest den FlashChip mit im Gehäuse
haben. Die eigentliche Unterscheidung ist, dass CPLDs vor jedem
FlipFlop eine riesige Summe-von-Produkten-Matrix haben während
FPGAs einfachere Blöcke haben, aber viel mehr davon.
Bei > 128 FlipFlops werden CPLDs rasch uninteressant weil die einzelnen
Blöcke quadratisch komplizierter werden während es beim FPGA nur
mehr Blöcke werden.

Zum Programmieren des CPLDs braucht man einen Dongle von Xilinx
für ~ €250. Es soll aber auch chinesische für 1/10 geben.
Im Prinzip kann man das auch für einen uController selber schreiben.
Für einen Anfänger vergrössert sich aber der Fehlersuchraum 
beträchtlich.

Die Entwicklungssoftware ist ISE V14 oder so. Die neue Software
Vivado kennt die Coolrunner nicht mehr. Die Software kann man
kostenfrei von Xilinx runterladen.

Gruß, Gerhard

von Ralf S. (ralf_s572)


Lesenswert?

Gerhard H. schrieb:

>
> Zum Programmieren des CPLDs braucht man einen Dongle von Xilinx
> für ~ €250. Es soll aber auch chinesische für 1/10 geben.
> Im Prinzip kann man das auch für einen uController selber schreiben.
> Für einen Anfänger vergrössert sich aber der Fehlersuchraum
> beträchtlich.
>
> Die Entwicklungssoftware ist ISE V14 oder so. Die neue Software
> Vivado kennt die Coolrunner nicht mehr. Die Software kann man
> kostenfrei von Xilinx runterladen.
>
> Gruß, Gerhard

Guter Punkt: In dem Projekt oben wurde mit einer Centronic-Schnittstelle 
programmiert. Braucht man wirklich diesen Dongle? Oder lassen sich die 
alten CPLD/FPGA noch mit einfachen Mitteln programmieren und die neuen 
mit Dongle?
https://www.fischl.de/thomas/elektronik/cpld/index.html

: Bearbeitet durch User
von drauf geschissen (Gast)


Lesenswert?

Ralf S. schrieb:
> Oder lassen sich die
> alten CPLD/FPGA noch mit einfachen Mitteln programmieren und die neuen
> mit Dongle?

Der Coolrunner 2 zählt nicht zu denn alten CPLD wie der verlinkte 
XC9500.
Und der Coolrunner wurde auch nicht von Xilinx entwickelt sonder von 
philips.

von Gerhard H. (ghf)


Lesenswert?

Auch die modernen, großen FPGAs lassen sich noch simpel programmieren.
Wenn man was falsch macht, bekommt man als diagnostics aber meist nur:
"nö, ich will nicht!"  Es gibt APP-notes von Xilinx dazu.
Gerade als Anfänger kommt man mit "Teile und herrsche" schneller weiter.
Wenn man sich das Programmieren des Chips aus der eigenen Umgebung / uC
antun will, kann man sich auch ein Spartan leisten, das kostet auch 
nicht
mehr und ist nicht vom Aussterben bedroht.

von W.S. (Gast)


Lesenswert?

Gerhard H. schrieb:
> Zum Programmieren des CPLDs braucht man einen Dongle von Xilinx
> für ~ €250.

Ähem... nicht unbedingt. Wer noch ein Windows XP hat, der kann sich aus 
dem Bodensatz seiner Bastelkiste ein "Parallelkabel #3" bauen und damit 
sein CPLD brennen. Voraussetzung ist allerdings eine alte 
Centronics-Schnittstelle am PC.

Es geht aber auch an neueren PC deutlich billiger. Ich habe auch einen 
Brenner aus China, der am USB werkelt und (wimre) so um die 20..30€ 
gekostet hat.

W.S.

von Gerhard H. (ghf)


Lesenswert?

W.S. schrieb:
> Gerhard H. schrieb:
>> Zum Programmieren des CPLDs braucht man einen Dongle von Xilinx
>> für ~ €250.
>
> Ähem... nicht unbedingt. Wer noch ein Windows XP hat, der kann sich aus
> dem Bodensatz seiner Bastelkiste ein "Parallelkabel #3" bauen und damit
> sein CPLD brennen. Voraussetzung ist allerdings eine alte
> Centronics-Schnittstelle am PC.

Ein oder zwei parallel cables habe ich noch neulich in irgendeiner
Kiste im Keller gesichtet. Ich glaube nicht, dass ich die noch jemals
brauche. Wer noch einen Parallelport und XP hat, der kann sich gerne
melden. Wann's gschei macht...

> Es geht aber auch an neueren PC deutlich billiger. Ich habe auch einen
> Brenner aus China, der am USB werkelt und (wimre) so um die 20..30€
> gekostet hat.

Das schrub ich doch im hier nicht zitierten Teil. Added value wäre
gewesen "Der XYZZY funktioniert bei mir"

Gerhard

von Christian R. (supachris)


Lesenswert?

Wir haben einige von den Digilent USB Programmern im Einsatz, die kosten 
auch relativ wenig und klappen wunderbar. Mit XC3Sprog kann man auch ein 
billiges FTDI Board nutzen.

von Ralf S. (ralf_s572)


Lesenswert?

W.S. schrieb:
> Gerhard H. schrieb:
>> Zum Programmieren des CPLDs braucht man einen Dongle von Xilinx
>> für ~ €250.
>
> Ähem... nicht unbedingt. Wer noch ein Windows XP hat, der kann sich aus
> dem Bodensatz seiner Bastelkiste ein "Parallelkabel #3" bauen und damit
> sein CPLD brennen. Voraussetzung ist allerdings eine alte
> Centronics-Schnittstelle am PC.
>
> Es geht aber auch an neueren PC deutlich billiger. Ich habe auch einen
> Brenner aus China, der am USB werkelt und (wimre) so um die 20..30€
> gekostet hat.
>
> W.S.

Die letzte Centronics habe ich beerdigt, als mein 24-Nadel-Drucker von 
Epson 1994 den Geist aufgegeben hat. Die Karte müsste sogar noch einen 
ISA-Slot gehabt haben. Gibt es eigentlich USB zu Centronics-Adapter?

von Christian R. (supachris)


Lesenswert?

Ralf S. schrieb:
> Gibt es eigentlich USB zu Centronics-Adapter?

Ja aber die funktionieren AUSSCHLIESSLICH mit Druckern.

von Ralf S. (ralf_s572)


Lesenswert?

Christian R. schrieb:
> Ralf S. schrieb:
>> Gibt es eigentlich USB zu Centronics-Adapter?
>
> Ja aber die funktionieren AUSSCHLIESSLICH mit Druckern.

Bei Reichelt gibt es noch PCI Einsteckkarten..

von Markus F. (mfro)


Lesenswert?

Hab' ich was verpasst? Die CoolRunner und CoolRunner II lassen sich doch 
mit dem Xilinx Platform Cable programmieren, oder nicht?

Und das gibt's für 25€ aus China.

von W.S. (Gast)


Lesenswert?

Ralf S. schrieb:
> Bei Reichelt gibt es noch PCI Einsteckkarten..

Das nützt nix. Habe selber noch sowas. Das ging noch unter Windows XP, 
aber schon bei Windows 7 kommt man da vom Programm aus nicht mehr heran. 
Das einzige, was da noch geht, ist das Einrichten eines Druckers an 
diesem Port.

W.S.

von Ralf S. (ralf_s572)


Lesenswert?

W.S. schrieb:
> Ralf S. schrieb:
>> Bei Reichelt gibt es noch PCI Einsteckkarten..
>
> Das nützt nix. Habe selber noch sowas. Das ging noch unter Windows XP,
> aber schon bei Windows 7 kommt man da vom Programm aus nicht mehr heran.
> Das einzige, was da noch geht, ist das Einrichten eines Druckers an
> diesem Port.
>
> W.S.

MS hat da vermutlich die Sicherheitsrichtlinien verschärft und Ports 
defaultmäßig gesperrt.

von Key(in)sider (Gast)


Lesenswert?

Ralph B. schrieb:
> Wie sieht es mit den aktuellen Keysight Zählern aus?
53230A sollte reichen

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]
  • [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.

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