Hi!
Ich hatte (mal wieder) so eine Idee ...
Es ging darum, einen Sinus abzutasten und dann den per Software auszuwerten. Harmonische, Störungen, Frequenz etc. Dazu hab ich den ADE9103 ausgewählt (wer kommt jetzt drauf welche Art von Sinus das ist?). Ganz entscheident ist, dass der Takt für den ADE9103 exakt die geforderten 16.384 MHz hat. Das wird über einen TCXO realisiert der zusätzlich per DAC fein abgestimmt wird *1). Denn in den Datenstrom werden Zeitmarker eingefügt die synchron mit der realen Zeit (Unix time) sein müssen. Aus den 16.384 MHz wird ein 1 kHz-Signal abgeleitet das ein uC bekommt der somit 1 ms genau die Zeit kennt. Zusätzlich (wenn ich schon dabei bin) braucht der uC einen 8 MHz Takt (per PLL aus den 16.384 MHz abgeleitet). Und einen Reset.
Mein erster naiver Gedanke war, das per CPLD zu machen. Enttäuschend war aber, dass das so riesen Dinger sind. Naja, egal. Ich hab dann versucht das per WinCUPL hinzubekommen. Aber mit der Doku konnte ich nichts anfangen. Dumm-dreiste Idee: Ich versuch das mal per ChatGTP. Hahaha! Das war der reine Müll! Das ChatGTP hat sich einfach eine Syntax zusammengebastelt. Schlüsselwörter die nicht existieren. Nach dem Hinweis, dass das so nicht geht, einfach neuer Unsinn und dann wieder neue "innovative" Syntax. Nach 2 Stunden hab ich das dann in die Tonne getreten.
Da ich mich ein wenig mit Verilog auskenne, dann halt so. Aber die FPGAs die ich kannte waren alle zu mächtig und zu groß. Also hab ich rumgesucht und von Renesas den SLG47910V gefunden. Nach DaBla-Studium hab ich mich entschlossen, dass das der richtige Weg ist. Also das Demo-Board bestellt (wurde letztes Jahr verschenkt) und durch den ganzen Berg durchgeknabbert. Die Seltsamkeiten von Yosys entdeckt und gelöst und ... tataaa! Heute kommen die ersten und erwünschten Signale aus dem FPGA!
Einige werden die Nase rümpfen, dass das ja gar kein echter[tm] FPGA ist und nix kann. Aber für die Anwendung kann er mehr als genug. Die Resourcen-Belegung ist aktuell im Bereich von 1 .. 3%. Der Preis ist mit 2,50 € überschaubar.
Unangenehm ist lediglich die Programmierung. Entweder im Demoboard das OTP programmieren, einlöten und hoffen, oder per uC den Bitstream beim Start hochladen. Ein externes Flash das in circuit programmierbar ist scheint (meines Wissens nach) nicht zu gehen. Ein Flash geht schon, aber in-circuit??? Die Simulation per GTKWave geht leider nicht mehr (ging zu Anfang), das steigt mit für mich sinnlosen Fehlermeldungen aus. Na, dann halt mit dem Oszi oder mit dem LA.
Also ich bin zufrieden.
Und der ForgeFPGA ist schon die Lösung für ein anderes Projekt für das ich mehrere Quadratur-Dekoder bis 50 MHz und SPI brauch (mechanisches Messsystem mit 0.5 µm Auflösung).
So, ihr könnt losmeckern!
1) Hab so was ähnliches schon mal gemacht für eine RTC. Die hab ich auf 1 Sekunde Abweichung / Monat hinbekommen (das sind dann gut 7 Stellen Genauigkeit). Genauer lies ich der Chip nicht abstimmen. Das ganze wurde per NTP innerhalb weniger Stunden Laufzeit realisiert.