Ich habe mich nun einige Zeit mit dem FPGA-Board aus dem c´t-Lab sowie mit VHDL (und LabView) beschäftigt. Dabei ist bisher ein kleines Signallabor inklusive LabView-Frontend entstanden: - Frequenz-/Periodenmesser - 4-kanaliger modulierbarer DDS-Signalgenerator - Pulsgenerator mit getrennt einstellbaren Puls- und Pausendauern Alle Komponenten sind in VHDL implementiert. Dabei ist auch eine neue adressierbare SPI-Schnittstelle entstanden. Die detaillierte Beschreibung gibt es als Wiki-Artikel mit dem Titel FPGA Lab, der Quellcode steht im SVN-Repository. Neben diesem Thread hier gibt es auch einen im c´t-Lab-Forum (http://thoralt.ehecht.com/phpbb/viewtopic.php?f=25&t=393). Kritik und Anregungen bitte in einem dieser beiden Threads.
Ich habe nun eine Klassenbibliothek für .NET veröffentlicht, mit der man das c´t-Lab und das FPGA-Lab steuern kann. Eine detaillierte Beschreibung und die Verweise zum Quellcode kann man hier einsehen: http://www.mikrocontroller.net/articles/Ct_Lab_Client_Library
Hallo zusammen, ich habe jetzt die FPGA-Karte und mein altes Projekt wieder reaktiviert, alles funktioniert noch. Die .NET-Bibliothek habe ich auf Mono (eine .NET-Umgebung unter Linux) übertragen. Auch das hat nach ein paar Änderungen geklappt. Ich nutze nun Ubuntu 16.04 und MonoDevelop. Die ganzen Unit-Tests habe ich etwas modernisiert (sie basieren nun auf SpecsFor). Ich plane weiters, das Projekt auf GitHub zu übertragen und endlich auch eine GUI zu bauen (mit Gtk#). Zeitlich will ich mich nicht festlegen, ich wollte nur bekannt geben, dass das Projekt wieder erwacht. Die Domain des c´t-Lab-Forum hat sich geändert, der o.g. Link lautet daher nun: http://www.thoralt.de/phpbb/viewtopic.php?f=25&t=393
:
Bearbeitet durch User
Ich habe nun zu diesem Projekt neue Wikiseiten angelegt: https://www.mikrocontroller.net/articles/CtLab_Library https://www.mikrocontroller.net/articles/CtLab_FPGA_SigLab Der Quellcode steht nun auf GitHub: https://github.com/JosiCoder/CtLab/ Mit der Bedienoberfläche habe ich schon angefangen, bis ich da was veröffentliche, wird es aber noch etwas dauern.
:
Bearbeitet durch User
Du hast Zeit bis zum 23.12.! Danach gilt es nicht mehr :-)
So, hab mir die Sourcen angesehen: Ohne Dir zu nahetreten zu wollen, folgender Kommentar: - Zuviele Module für so wenig Funktion - Bei der Phase wird abgesägt, statt interpoliert ? - Ich finde es verdächtig, dass Du 50Mhz UND 100MHz brauchst. Eigentlich reicht einer.
Ich nehme an, Du sprichst hier über die VHDL-Module. Ja, ich weiß, da habe ich nicht wirklich viel Erfahrung. Ich wollte mir z.B. offenhalten, die SPI-Schnittstelle in anderen Projekten wiederverwenden zu können. Vielleicht habe ich es mit der Modularisierung tatsächlich übertrieben. Ich habe aber z.B. sehr darauf geachtet, Taktdomänen sauber zu trennen und externe Signale ordentlich einzusynchronisieren. Ob mir das gelungen ist? Wie meinst Du das mit der abgesägten Phase? Ja es stimmt, interpoliert habe ich da nichts. Ich habe zumindest versucht, die vier Sinusviertelperioden auch wirklich symmetrisch zueinander hinzubekommen, wie hier angeregt: https://www.mikrocontroller.net/articles/Digitale_Sinusfunktion Zum Takt: Die FPGA-Karte hat einen externen 50-MHz-Takt, den ich intern auf 100 MHz hochsetze. Habe ich da was übersehen? Weltbester FPGA-Pongo schrieb im Beitrag #4814414: > So, hab mir die Sourcen angesehen: Ohne Dir zu nahetreten zu wollen, > folgender Kommentar: > > - Zuviele Module für so wenig Funktion > > - Bei der Phase wird abgesägt, statt interpoliert ? > > - Ich finde es verdächtig, dass Du 50Mhz UND 100MHz brauchst. Eigentlich > reicht einer.
:
Bearbeitet durch User
Ich glaube, ich weiß, was Du mit den beiden Takten meinst: In Main.vhd reiche ich tatsächlich beide an diverse Komponenten durch (aber je Komponente immer nur einen der beiden). Das ist schon so lange her, dass ich das gemacht habe. Es könnte doch sein, dass ich bei 100 MHz nicht in allen Komponenten die Timings einhalten konnte. Und einen Takt herunter zu teilen, dass soll man ja doch gerade nicht machen.
Du könntest aus Deiner Entwicklung ein paper machen. Wissenschaftliche Veröffentlichungen zu Sinusgeneratoren in FPGAs sind momentan wieder IN: Hier haben zwei Japaner einen solchen entwickelt und bei IEEE präsentiert: https://www.researchgate.net/publication/269331819_The_flexible_sound_synthesizer_on_an_FPGA Eignet sich sogar für Musik!
Markus W. schrieb: > Du könntest aus Deiner Entwicklung ein paper machen. Wissenschaftliche > Veröffentlichungen zu Sinusgeneratoren in FPGAs sind momentan wieder IN: Ja, es ist immer wieder erstaunlich, was so präsentiert wird. Vor allem, daß man sowas im Jahre 2013 immer noch als "neu" verkaufen kann. Hochpräzise Sinusgeneratoren (vor allem auch auf FPGA-Basis) gibt es in der Industrie in Hülle und Fülle und der Umstand, daß der dort Präsentierte sehr genau ist, ist einfach der Tatsache geschuldet, daß sie den Cordic genau genug prozessieren, was sich ja beliebig weit treiben lässt. Das Problem von Sinusgeneration in diskreten Systemen bleibt aber das der Abtastrate: Sobald man die Frequenz variieren möchte, bekommt man einen Bruch in der Phase und die ist auch mit dem CORDIc nicht zu lösen, sondern nur über Filterung zu glätten und mit einem entsprechend designten analogen Filter ist das aber mit einem zweistufigen DDS-System in ähnlicher Weise möglich. Mit dem CORDIC kommt man daher nur scheinbar um das Problem der Phasengranularität herum. > Eignet sich sogar für Musik! Nicht wirklich! Abgesehen von dem Umstand, daß selbst in der eletronischen Musik kein Mensch einen klinisch reinen Sinus benötigt, da es den in der Natur nicht gibt und als Grundlage für Synthesizer auch kaum taugt, ist das was dort als musikalische Klangkurve präsentiert wird, mit ADSR auch komplett überholt. Die dadurch aufgeprägten Verläufe der Amplitude verzerren den Sinus und damit die effektiv wahrgenommene Frequenz in unnatürlicher Weise und ruinieren infolge der Granularität die angebliche Qualität und Präzision der Frequenz wieder. Das taugt für Musik so gut wie die Synthies der 80er :-) Von den klinisch reinen Sinussen hat man sich aus mehreren Gründen inzwischen auch ziemlich verabscheidet. Die werden nicht mal mehr für Modulation eingesetzt. Und wenn es anders herum darum ginge, die für die Stimmung von Musikinstrummenten benötigten exakten Frequenzen zu generieren, sind 12 parallele 2-Stufen-DDS mit Filterungen wensentlich einfacher, zielführender und vor allem rauscharmer zu produzieren. Und wenn man dazu FPGAs hernimmt und sie RICHTIG auslastet (d.h. nicht einfach dumpf parallel instanziiert, sondern geschickt pipelined) dann sind da auch mehr, als 100 Generatoren drin :-)
Markus W. schrieb: > Du könntest aus Deiner Entwicklung ein paper machen. Wissenschaftliche > Veröffentlichungen zu Sinusgeneratoren in FPGAs sind momentan wieder IN: Ich habe gar nicht behauptet, irgendwas Neues zu präsentieren. Dass ein im Hobbyraum entstandener DDS nicht mit Fertiglösungen mithalten kann, ist mir schon klar. Aber dann kann man das Elektronikbasteln auch komplett sein lassen. Ich wollte einfach mit dem c't-Lab sowie mit FPGAs experimentieren, weil ich das eben nicht tagtäglich mache. Sich mit einer Technologie vertraut zu machen, geht halt am besten über ein eigenes kleines Projekt. Die CtLab Library ist vielleicht auch für Leute interessant, die andere c't-Lab-Module nutzen als das FPGA-Modul. Sie ist auch deswegen so stark gegliedert, damit man sie für andere c't-Lab-Module erweitern kann.
Was man mal gebrauchen könnte, wäre eine breit aufgezogenen Steuerung mit genug Ausgängen Analog und Digital. Ich bin momentan dran, mir da was aufzubauen, um 256 Kanäle einlesen und steuern zu können. Habe dazu in der Bucht fertig verdrahtete Analog-MUX aufgetrieben. Jetzt brauche Ich nur noch 256 Analoge Ausgänge als Speisung...
Markus W. schrieb: > Was man mal gebrauchen könnte, wäre eine breit aufgezogenen Steuerung > mit genug Ausgängen Analog und Digital. Um beim Thema zu bleiben: c't-Lab mit 8x ADA-IO > Ich bin momentan dran, mir da > was aufzubauen, um 256 Kanäle einlesen und steuern zu können. Die Frage ist doch immer auch: Wie schnell? Welcher Spannungsbereich? Galvanisch getrennt?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.