mikrocontroller.net

Forum: FPGA, VHDL & Co. einstellbaren 48-52kHz Sinus erzeugen,


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.
Autor: Jonas B. (jibi)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hm hat jemand eine Idee:
Ohles fpga-board (Spartan3an) soll einen Sinus erzeugen, 48-52 kHz 
Ausgangsfrequenz, Amplitude möglichst gleich über den kompletten 
Ausgangsbereich. Leider ist die maximale Samplingrate des DAC's auf dem 
Board ca. 125kHz, das wären also nur knapp 3 Samples pro Periode...

What should I do?

- Square Wave erzeugen + RCRCRC ergibt einen netten Sinus, allerdings 
unterschiedliche Ampliduten.
- PWM + Filterung + AGC (siehe Anhang) funktioniert fast, allerdings 
scheint die Regelung bei knapp 51kHz auszusetzen...
Hm...
Oder einfach einen externen schnelleren DAC besorgen...
Irgendwelche Ideen?

Autor: Dergute W. (derguteweka)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

Vielleicht ist hier:

Jonas B. schrieb:
> RCRCRC

noch etwas Potential fuer ein besseres Filter?

Gruss
WK

Autor: GHz-Nerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du nur diesen schmalen frequenzbereich abdecken musst würde ich 
ganz einfach ein Rechteck der entprechenden frequenz (sprich exakt 2 
saples pro Periode) ausgeben und tiefpass filtern...
Bei einem sauberen 50% duty cycle muss sich das filter dann primär um 
die Unterdrückung der ungeraden Oberwellen kümmern, was die nötige 
Filterordnung im Rahmen hält.

Ein normaler GPIO pin würde es dann übrigens auch tun.

Autor: Jonas B. (jibi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Wenn du nur diesen schmalen frequenzbereich abdecken musst würde ich
>ganz einfach ein Rechteck der entprechenden frequenz (sprich exakt 2
>saples pro Periode) ausgeben und tiefpass filtern...
>Bei einem sauberen 50% duty cycle muss sich das filter dann primär um
>die Unterdrückung der ungeraden Oberwellen kümmern, was die nötige
>Filterordnung im Rahmen hält.

>Ein normaler GPIO pin würde es dann übrigens auch tun.

Also quasi die erste Stufe des RCRCRC Filters "simulieren"? Gute 
Idee...werd ich mal testen.

Autor: Falk B. (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jonas B. schrieb:

> Ohles fpga-board (Spartan3an) soll einen Sinus erzeugen, 48-52 kHz
> Ausgangsfrequenz, Amplitude möglichst gleich über den kompletten
> Ausgangsbereich.

> - PWM + Filterung + AGC (siehe Anhang) funktioniert fast, allerdings
> scheint die Regelung bei knapp 51kHz auszusetzen...

Wozu AGC? Man nimmt

1.) nicht PWM sondern einen Sigma Delta Wandler, damit vereinfacht sich 
der Ausgangsfilter deutlich und man braucht keine exorbitanten 
PWM-Takte.
2.) Bei PWM und Sigma Delta ist bei korrekter Filterdimensionierung die 
Amplitude konstant, keinerlei Regelbedarf.

Autor: Jonas B. (jibi)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Was haltet ihr davon? hab ich gerade durch Zufall gefunden, sieht ganz 
vielversprechend aus.

Autor: Falk B. (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Viel Zuviel Aufwand, PWM bzw. Sigmal Delta ist einfacher und liefert 
bessere Ergebnisse.

Autor: Jonas B. (jibi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Wozu AGC? Man nimmt

>1.) nicht PWM sondern einen Sigma Delta Wandler, damit vereinfacht sich
>der Ausgangsfilter deutlich und man braucht keine exorbitanten
>PWM-Takte.
>2.) Bei PWM und Sigma Delta ist bei korrekter Filterdimensionierung die
>Amplitude konstant, keinerlei Regelbedarf.

Yes man :D Danach hab ich gesucht. Vielen Dank!!

Autor: Jonas B. (jibi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity PWM is
  port (
   clk : in std_logic;
   PWM_in : in std_logic_vector (7 downto 0) := "00000000";
   PWM_out : out std_logic
  );
end PWM;

architecture PWM_arch of PWM is
  signal  PWM_Accumulator : std_logic_vector(8 downto 0);
begin
  process(clk, PWM_in)
  begin
    if rising_edge(clk) then      
      PWM_Accumulator  <=  ("0" & PWM_Accumulator(7 downto 0)) + ("0" & PWM_in);
    end if;
  end process;

  PWM_out <= PWM_Accumulator(8);
end PWM_arch;

So ich werd mal den Code testen, das jetzt viel einfachere 
Ausgangsfilter sollte doch ein Tiefpass sein. Wie hoch wähle ich die 
Grenzfrequenz, First order sollte ja reichen oder? vielen dank.

Autor: Ach Du grüne Neune (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jonas B. schrieb:
> Was haltet ihr davon? hab ich gerade durch Zufall gefunden, sieht
> ganz vielversprechend aus.

Die Idee gefällt mir trotzdem ganz gut. Statt 8 Flip-Flöpse 
hintereinander zu schalten, könnte man auch einen einzigen CD4020 oder 
CD4040 einsetzen. Es werden dann lediglich noch die 7 Widerstände und 
ein Kondensator benötigt.

Autor: Jonas B. (jibi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Die Idee gefällt mir trotzdem ganz gut. Statt 8 Flip-Flöpse
>hintereinander zu schalten, könnte man auch einen einzigen CD4020 oder
>CD4040 einsetzen. Es werden dann lediglich noch die 7 Widerstände und
>ein Kondensator benötigt.

Die haben ja reichlich FlipFlöpse in das fpga reingefercht. Auf Anhieb 
wüsste ich aber nicht wie ich der alten ISE, die in dieser Konfiguration 
abkaufen könnte... Das gäb wieder zähe Verhandlungen :D

Deswegen beherzige ich erstmal Falks Tip :D

Autor: Dergute W. (derguteweka)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach Du grüne Neune schrieb:
> Statt 8 Flip-Flöpse
> hintereinander zu schalten, könnte man auch einen einzigen CD4020 oder
> CD4040 einsetzen.

Nee, das sind keine Ripplezaehler sondern Schieberegister. Aber da 
musste dann sicherstellen, dass die z.b. nach dem Einschalten auch immer 
"das richtige" schieben. Das sind so Schaltungen, die vor 30 Jahren mal 
hip waren.

Wenn eh' schon ein FPGA da ist, dann kann man das gut entweder mit einem 
Rechteckausgang und entsprechendem Tiefpass (hoeherer Ordnung, Cauer, 
etc.) machen, oder mit einem simpleren Tiefpass und z.b. 1...x Bit 
SigmaDelta oder PWM oder whatever. Kommt halt drauf an, was man braucht, 
was man kann und was man will...

Gruss
WK

Autor: Lothar M. (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jonas B. schrieb:
> So ich werd mal den Code testen
Das, was da zu sehen ist, ist eine
https://de.wikipedia.org/wiki/Deltamodulation

> Wie hoch wähle ich die Grenzfrequenz
Kann man ausrechnen. So hoch wie nötig, um die niedrigste Frequenz, die 
von der FPGA-Taktfrequenz abhängt und mit den Eingangswerten 00000001 
und 11111110 auftritt ausreichend zu dämpfen.
> First order sollte ja reichen oder?
Hängt vom Ergebnis der obigen Rechnung ab.

Ich würde das etwa so anfangen:
http://www.lothar-miller.de/s9y/categories/31-DDFS

Ein Schritt weiter ist dann, das daraus gewonnene Sinussignal in eine 
PWM einzuspeisen und mit einem RC-Glied zu filtern:
http://www.lothar-miller.de/s9y/archives/57-Sinusausgabe-mit-PWM.html

Alternativ könntest du da natürlich statt der PWM auch deinen 
Deltamodulator dranhängen...

Autor: Falk B. (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jonas B. schrieb:
> o ich werd mal den Code testen,

Das ist aber erstmal KEIN Sigma-Delta-Wandler, nur der DDS-Zähler.

> das jetzt viel einfachere
> Ausgangsfilter sollte doch ein Tiefpass sein.

Ja.

> Wie hoch wähle ich die
> Grenzfrequenz,

Naja, wenn wir mal von 60dB Unterdrückung ausgehen, sollte dein Filter 
vielleicht 200kHz Grenzfrequenz haben und dein Sigma Delta Wandler mit 
mindestens 20 MHz getaktet sein.

>First order sollte ja reichen oder?

Ja.

Autor: Lothar M. (lkmiller) (Moderator) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Falk B. schrieb:
> Jonas B. schrieb:
>> o ich werd mal den Code testen,
> Das ist aber erstmal KEIN Sigma-Delta-Wandler, nur der DDS-Zähler.
Habe ich auch erst gedacht und habs vorsorglich mal nichts gesagt und 
das Ding simuliert... ;-)

Der "Akku" sieht zwar aus wie ein DDFS-Akku, ist aber dafür zu kurz und 
zeitig deshalb das PDM-Signal. Putzige Sache, muss ich mir merken.

: Bearbeitet durch Moderator
Autor: Falk B. (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar M. schrieb:
> Der "Akku" sieht zwar aus wie ein DDFS-Akku, ist aber dafür zu kurz und
> zeitig deshalb das PDM-Signal. Putzige Sache, muss ich mir merken.

Sachen gibt's 8-0

Autor: Jonas B. (jibi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich würde das etwa so anfangen:
>http://www.lothar-miller.de/s9y/categories/31-DDFS

>Ein Schritt weiter ist dann, das daraus gewonnene Sinussignal in eine
>PWM einzuspeisen und mit einem RC-Glied zu filtern:
>http://www.lothar-miller.de/s9y/archives/57-Sinusausgabe-mit-PWM.html

>Alternativ könntest du da natürlich statt der PWM auch deinen
>Deltamodulator dranhängen...

Ich wünschte ich könnte dir meinen bisherigen Projektverlauf 
aufzeigen... aber ziemlich genauso wie du beschrieben hast bin ich 
vorgegangen  XD

Leider bin ich auch nur mit der halben Wahrheit rausgerückt... Die 
Erzeugung des Signals ist nur der Anfang.
Das Sinussignal soll ein DUT speisen und anschließend wieder zurück zum 
FPGA-Board auf die vorhandenen AD-Wandler. Dann würde ich gerne das 
Spektrum analysieren. Ein FFT-Core dafür hab ich sogar erzeugen können, 
erstaunlicher weise läuft der sogar, in der Testbench die ich erzeugt 
habe. Ich hab ihn dafür einfach gestartet und immer den gleichen Wert 
(imäginarteil auf null gesetzt) in den real teil geschrieben. sobald 
"done" auf high geht seh ich nur im dc band einen wert. das macht wieder 
mut :D. Eigentlich muss ich die ganzen Teile nur zusammenfügen. Wenn es 
ja wirklich nur so einfach wäre..

>Naja, wenn wir mal von 60dB Unterdrückung ausgehen, sollte dein Filter
>vielleicht 200kHz Grenzfrequenz haben und dein Sigma Delta Wandler mit
>mindestens 20 MHz getaktet sein.

>>First order sollte ja reichen oder?

>Ja.

Ok. Also 82ohm und 10nF. Danke.

Autor: Lothar M. (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jonas B. schrieb:
> Also 82ohm und 10nF. Danke.
Die Grenzfrequenz wird tatsächlich niedriger ausfallen, weil da die 
Bahnwiderstände der Ausgangs-FET noch mit reinkommen.
Ich würde das hochohmiger auslegen...

: Bearbeitet durch Moderator
Autor: Jonas B. (jibi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Tip, meinst du 820ohm und 1nF ist gut?

Autor: Falk B. (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jonas B. schrieb:
> Danke für den Tip, meinst du 820ohm und 1nF ist gut?

Ja, denn so ein FPGA-Ausgang ist kein 1A Leistungstreiber.

Autor: Jonas B. (jibi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ja, denn so ein FPGA-Ausgang ist kein 1A Leistungstreiber.

Ja danke.

Autor: Jonas B. (jibi)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hm bei mir kommt immer nur 'X' und auch eine Fehlermeldung:

Warning: There is an 'U'|'X'|'W'|'Z'|'-' in an arithmetic operand, the 
result will be 'X'(es).
ISim>

Kannst du mal deinen Code posten, oder sagen was du geändet hast?
:D Danke

Autor: Jonas B. (jibi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab das nur so geändert, das die doofe Sensitiv-Liste keine Rolle 
mehr spielt. War das falsch?
  library IEEE;
  use IEEE.STD_LOGIC_1164.all;
  use IEEE.STD_LOGIC_UNSIGNED.ALL;

  entity sigmadeltadac is
    port (
    clk : in std_logic;
    PWM_in : in std_logic_vector (7 downto 0) := "00000000";
    PWM_out : out std_logic
    );
  end sigmadeltadac;

  architecture PWM_arch of sigmadeltadac is
    signal  PWM_Accumulator : std_logic_vector(8 downto 0):="000000000";
    begin
    process begin
      wait until rising_edge(clk);
        PWM_Accumulator  <=  ("0" & PWM_Accumulator(7 downto 0)) + ("0" & PWM_in);
     
    end process;

    PWM_out <= PWM_Accumulator(8);
  end PWM_arch;

Autor: Audiomann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Könnte man mir bitte erklären, wodas Problem ist, lumpige 52kHz bei 
125kHz Abtastrate zu erzeugen? Das sind weit unterhalb der 50%. In 
Relation 18kHz mit 44,1 und das macht jede 80er-Jahre-Technik 
erfolgreich.

Autor: Jonas B. (jibi)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
>Könnte man mir bitte erklären, wodas Problem ist, lumpige 52kHz bei
>125kHz Abtastrate zu erzeugen?

Ein sauberer Sinus benötigt mehr als 2 Abtastpunkte bei der 
Ausgabe...ganz einfach.

Autor: Jürgen S. (engineer) Benutzerseite
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Audiomann schrieb:
> Könnte man mir bitte erklären, wodas Problem ist, lumpige 52kHz bei
> 125kHz Abtastrate zu erzeugen? Das sind weit unterhalb der 50%. In
> Relation 18kHz mit 44,1 und das macht jede 80er-Jahre-Technik
> erfolgreich.

Das ist wirklich etwas knapp. Man darf bei der Betrachtung nicht 
vergessen, dass bei Audio immer mitschwingt, dass der obere Teil des 
Bandes energetisch nicht so stark besetzt ist. Gleichwohl lässt sich 
gerade ein einzelner Sinus damit sehr gut herstellen. Klassische 
DDS-Aufgabe. Bis 40% ist das sehr gut machbar. Allerdings u.U. mit 
Regelung oder Kalibrierung der Amplitude.

Das mit dem gefilterten Rechteck ist sicher nicht besser, als den Weg 
über den DAC. Wenn der DAC das nicht kann oder der Filter wirklich zu 
schwierig ist, würde ich per PDM aus dem FPGA rausgehen. Mit einem 
100MHz-System kriegt man bei 100kHz Grenzfrequenz (-3dB) mit einem 
normalen einstufigen R-C-Filter auf 60dB sfdr und das bei einer 
ungeregelten linearen PDM-Integration.

200 MHz, geregelte PDM mit Doppel-T und Präsenzanhebung in der SV, 
laufen bei mir bis 3dB@200kHz (Analogsynth-Modellierung) mit >90dB 
Signalgüte. Für 50kHz sind da mindestens 16 Bit drin.

Für externe Nutzung einen OP, der das niederohmig macht, bzw ein 
Audio-Amp-Modul.

Autor: Jonas B. (jibi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>200 MHz, geregelte PDM mit Doppel-T und Präsenzanhebung in der SV,

:D What?

Bin auch schon ein Stück weiter. Hab die ampere mal hochgeskillt :D

library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity PWM is
  port (
   clk : in std_logic;
   PWM_in : in std_logic_vector (15 downto 0) := "0000000000000000";
   PWM_out : out std_logic
  );
end PWM;

architecture PWM_arch of PWM is
  signal  PWM_Accumulator : std_logic_vector(16 downto 0):= "00000000000000000";
begin
  process(clk, PWM_in)
  begin
    if rising_edge(clk) then      
      PWM_Accumulator  <=  ("0" & PWM_Accumulator(15 downto 0)) + ("0" & PWM_in);
    end if;
  end process;

  PWM_out <= PWM_Accumulator(16);
end PWM_arch;


Dann nutz ich einen cordic ip-core un berechne mir einfach von einem 
zähler den passenden sinus. Funktioniert. Sehr schön. Jetzt muss ich 
eigentlich nur noch die FFT passend zum ADC "synchronisieren". Moment, 
wenn ich die solange anhalte bis ein neuer Wert vom ADC verfügbar ist 
und nur wenn alle Werte einmal eingetragen (also für jedes Band ein 
Sample) lass ich sie loslaufen und nutze die Ergebnisse... Könnte 
funktionieren

Autor: c-hater (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jonas B. schrieb:

> Leider ist die maximale Samplingrate des DAC's auf dem
> Board ca. 125kHz, das wären also nur knapp 3 Samples pro Periode...

Wo ist dein Problem? Knapp 3 ist immer noch deutlich größer als 2. Die 
Physik wird also keine Einwände erheben.

Alles, was du brauchst, ist also ein analoges Rekonstruktionsfilter 
hinter dem DAC. Aber das braucht man sowieso meistens, eigentlich fast 
immer...

Autor: Jonas B. (jibi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Wo ist dein Problem?
Ich bin nicht Elon Musk.

>Knapp 3 ist immer noch deutlich größer als 2. Die
>Physik wird also keine Einwände erheben.

Es funktioniert ja auch alles. Im freien Fall. Im Vakuum mit Hühnern...

>Alles, was du brauchst, ist also ein analoges Rekonstruktionsfilter
>hinter dem DAC. Aber das braucht man sowieso meistens, eigentlich fast
>immer...

Ja dann schwankt mir aber die Amplitude zu stark, oder das Filter wird 
zu kompliziert für mich. Außerdem skaliert das nicht so schön. Wenn ich 
noch weitere Ausgänge benötige...

: Bearbeitet durch User
Autor: Dergute W. (derguteweka)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

Jonas B. schrieb:
> oder das Filter wird
> zu kompliziert für mich. Außerdem skaliert das nicht so schön.
Klaro. Und die fuer den Fuchs zu hoch haengenden Trauben sind eh' 
bestimmt viel zu sauer.

Was brauchste denn fuer einen Ausgangspegel fuer deinen Sinus und bei 
welcher Impedanz brauchst du den? Was haste FPGA intern als Takt 
rumfliegen?
Wie hoch ist die IO-Spannung an der FPGA-Bank? Wie sauber muss der Sinus 
sein -Klirrfaktor, Stoerabstand, etc.?
Je mehr Antworten du auf solche Fragen geben kannst, die konkrete Zahlen 
und Einheiten enthalten und nicht sowas wie "moeglichst", desto hoeher 
wird deine Chance ausfallen, dass hier eine konkrete Schaltung 
rauspurzelt.

Gruss
WK

Autor: Jürgen S. (engineer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jonas B. schrieb:
>>200 MHz, geregelte PDM mit Doppel-T und Präsenzanhebung in der SV,
>
> :D What?

1) Taktfrequenz der PDM
2) geregelt auf den Ausgang, also NACH dem Reko-Filter
3) Versteilerung des Frequenzgangs in der Signalverarbeitung zur 
Kompensation dessen Absenkung durch Reko-Filter

Autor: Jonas B. (jibi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Was brauchste denn fuer einen Ausgangspegel fuer deinen Sinus und bei
>welcher Impedanz brauchst du den? Was haste FPGA intern als Takt
>rumfliegen?

-0,3 Vpp , die Impendanz ist unbekannt und unter anderem gemessen 
werden.

-50MHz, per DCM geht auch mehr

>Wie hoch ist die IO-Spannung an der FPGA-Bank?

Gute Frage, ich denke irgednwas zwischen 3.3 und 1.5V... muss ich ins 
Datenblatt schauen...

>Wie sauber muss der Sinus
>sein -Klirrfaktor, Stoerabstand, etc.?

0,01% , > 90db

>1) Taktfrequenz der PDM
>2) geregelt auf den Ausgang, also NACH dem Reko-Filter
>3) Versteilerung des Frequenzgangs in der Signalverarbeitung zur
>Kompensation dessen Absenkung durch Reko-Filter

:D Ah ok..danke.

: Bearbeitet durch User
Autor: Dergute W. (derguteweka)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

Jonas B. schrieb:
>>Wie sauber muss der Sinus
>>sein -Klirrfaktor, Stoerabstand, etc.?
>
> 0,01% , > 90db

Da biste jetzt natuerlich etwas gekniffen. Denn 90dB S/N wirst du 
niemals aus einen naggischen Ditital-IO erwarten koennnen. Spezifiziert 
ist da natuerlich nix, erwarten kannste vielleicht 40dB, wenn da nicht 
von Nachbarpins oder aus der Spannungsversorgung irgendwas tierisch 
reinpfeift.
Also: externer DAC - wenn der DAC, den du hast, hoechstens 125ksamples 
macht, dann brauchst du ein entsprechend steilflankigen Tief/Bandpass. 
Der also 52kHz moeglichst ungedaempft durchlaesst, aber bei 125-52 = 
73KHz schon 90dB sperrt. Das wird mehr als 2x RC ;-)

Jonas B. schrieb:
> 0,3 Vpp , die Impendanz ist unbekannt und unter anderem gemessen
> werden.

Hm, ich glaub' das wird fuer dich die groesste Baustelle, wenn das 
irgendwas werden soll: Die analoge Signalverarbeitung/Messung. Und damit 
eben auch, wie der Tief/Bandpass dann entgueltig aussehen muss. Der 
Pegel ist noch gut zu handeln, da koennte man sicherlich was mit 
passiven LC-Filtern machen. Aber man muss halt wissen was - und obacht 
geben, nicht dass einem da von irgendwoher 10µV reinpfeifen und schon 
ist's Essig mit den 90dB.


Gruss
WK

Autor: Jonas B. (jibi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Denn 90dB S/N wirst du
>niemals aus einen naggischen Ditital-IO erwarten koennnen.

Selbst wenn, ich hätte eh Probleme das irgendwie messtechnisch zu 
erfassen, da beißt sich der Hund selbst in den Schwanz...im Moment 
probiere ich die Werte die aus dem Cordic rauspurzeln selbst in einem 
zweiten Kanal der FFT als Referenzspektrum zu nutzen, allerdings 
scheitert es im Moment noch an der mehr als umständlichen Bedienung. Das 
macht kein Spaß, daran muß ich erst arbeiten, also Ausgabe vom 
Fpga-Board direkt auf den Monitor. Ein Vga Signal kriege ich sogar schon 
erzeugt, jetzt brauch ich ein Kurvenmalalgorithmus in vhdl...

>Hm, ich glaub' das wird fuer dich die groesste Baustelle, wenn das
>irgendwas werden soll: Die analoge Signalverarbeitung/Messung. Und damit
>eben auch, wie der Tief/Bandpass dann entgueltig aussehen muss. Der
>Pegel ist noch gut zu handeln, da koennte man sicherlich was mit
>passiven LC-Filtern machen. Aber man muss halt wissen was - und obacht
>geben, nicht dass einem da von irgendwoher 10µV reinpfeifen und schon
>ist's Essig mit den 90dB.

Mit Spulen steh ich gerade auf Kriegsfuß, nachdem mein 
Frequenzgenerator(8165A) beim Ausschalten peng gemacht hat...rate mal 
was am Ausgang dran war...

Ich hab noch eine Soundkarte die kann 192kHz, also vielleicht kann ich 
da was mit "messen"...allerdings hab ich kein USB-Isolator und mein PC 
brauch ich dann schon irgendwie.

VG Jonas

Autor: Dergute W. (derguteweka)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

also ich wuerd' da mal empfehlen, langsam die Hosen runterzulassen: Was 
genau willst du da eigentlich als Gesamtkunstwerk machen?
Cordic mit PWM auf VGA...hmmmm...Nixfuerungut, aber du erscheinst mir 
doch etwas uebersteuert mit dem Projekt.

Gruss
WK

Autor: Jonas B. (jibi)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Nagut, du hast mich zwar falsch verstanden, aber nun gut ich hab mich 
auch auch ungut ausgedrückt - bitte um Gnade ich bin kein Profi, mir 
macht Basteln nur Spaß.
Ich baue ein Scanning-Tunnenling-Microscope. Und die Schaltung soll dazu 
dienen automatisch die parasitäre Kapazität der Cantilever-Spitze zu 
kompensieren, siehe Anhang. Sie soll auch die xy Position Stage steuern, 
den PDIC auswerten, die Samples aufbereiten, quasi alles. Ach ist schwer 
in Worte zu fassen, obwohl ich da gar nicht so schlecht drinne bin. Ich 
hau hier einfach mal ein paar Links rein, vielleicht wird es dann 
klarer.

https://github.com/rwb27/openflexure_block_stage/tree/master/stl
https://dberard.com/home-built-stm/
https://www.nanoandmore.com/AFM-Probe-Akiyama-Probe (Hab nett 
nachgefragt, Daniel hat mir Samples geschickt :D, hab Schokolade für die 
ganze Abteilung zurückgeschickt)

Autor: Jonas B. (jibi)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
ups

Autor: Falk B. (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jonas B. schrieb:
> Nagut, du hast mich zwar falsch verstanden, aber nun gut ich hab mich
> auch auch ungut ausgedrückt

Ungut? Willkommen in Orwells Welt!

https://de.wikipedia.org/wiki/Neusprech#Präfigierung

> - bitte um Gnade ich bin kein Profi, mir
> macht Basteln nur Spaß.

Und das Träumen.

>>Wie sauber muss der Sinus
>>sein -Klirrfaktor, Stoerabstand, etc.?

>0,01% , > 90db"

Und das allen mal nebenbei mit einem einfachen FPGA-IO bzw vorher noch 
mit einem handgestrickten R2R DAC.

Jaja.

Autor: Jonas B. (jibi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> - bitte um Gnade ich bin kein Profi, mir
>> macht Basteln nur Spaß.

>Und das Träumen.

Tut mir leid für dich, wenn du das verlernt hast. Deine Beiträge in den 
letzten Jahren klingen immer mehr verbittert. Ich hoffe echt bei dir ist 
alles in Ordnung?

>Und das allen mal nebenbei mit einem einfachen FPGA-IO bzw vorher noch
>mit einem handgestrickten R2R DAC.

Ich sehe das ja ein, das da viel Unsinn auch da bei ist, aber deswegen 
frage ich ja nach. Hast du den einen konkreten Tip für einen passenden 
DAC?

vg jonas

Autor: W.S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jonas B. schrieb:
> Leider ist die maximale Samplingrate des DAC's auf dem
> Board ca. 125kHz, das wären also nur knapp 3 Samples pro Periode...
>
> What should I do?

So, du hast also ein FPGA zur Verfügung. Dann verzichte doch einfach auf 
die ominösen DAC's und mache das Ganze diskret.

Wie? Im FPGA natürlich.

Du implementierst einen Zähler nebst einem Dekoder (oder ein 
Schieberegister, ist vielleicht einfacher), der eine Halbwelle, z.B. 
sin(-pi/2..+pi/2) abbilden soll. Den läßt du einfach vor- und 
zurücklaufen. Alternativ ein Bit mehr für nen Vollkreis und etwas mehr 
Dekodieraufwand, dann kannst du ihn einfach durchlaufen lassen. Wird ja 
wohl genug Platz dafür im FPGA sein.

So, und die n Ausgänge des Dekoders versiehst du mit n Widerständen, die 
du sinnvoll abstufst. Immer nur einen Ausgang aktiv, die anderen hi-Z, 
das rechnet sich für dich am einfachsten. Theoretisch kannst du auch die 
Hälfte der Widerstände einsparen, indem du den aktiven Ausgang je nach 
Halbwelle auf hi oder lo legst.

Und das Ganze kannst du mit fast beliebiger Frequenz rennen lassen, so 
daß du einen Vollkreis für deine ca. 50 kHz in 32 oder 64 Slots 
aufteilen kannst. Entsprechend entspannt wird dann das LC-Filter am 
Ausgang.

Ich hab sowas vor gefühlten 100 Jahren mal mit einfacher CMOS-Logik 
aufgebaut und der Sinus war gut genug für weitaus weniger als 1% 
Klirrfaktor.

W.S.

Autor: Jonas B. (jibi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Du implementierst einen Zähler nebst einem Dekoder (oder ein
>Schieberegister, ist vielleicht einfacher), der eine Halbwelle, z.B.
>sin(-pi/2..+pi/2) abbilden soll. Den läßt du einfach vor- und
>zurücklaufen. Alternativ ein Bit mehr für nen Vollkreis und etwas mehr
>Dekodieraufwand, dann kannst du ihn einfach durchlaufen lassen. Wird ja
>wohl genug Platz dafür im FPGA sein.

Die inflationäre Nutzung des Wortes einfach macht mir Mut XD. Aber 
soweit, waren wir schon.

http://www.lothar-miller.de/s9y/categories/31-DDFS

>So, und die n Ausgänge des Dekoders versiehst du mit n Widerständen, die
>du sinnvoll abstufst. Immer nur einen Ausgang aktiv, die anderen hi-Z,
>das rechnet sich für dich am einfachsten. Theoretisch kannst du auch die
>Hälfte der Widerstände einsparen, indem du den aktiven Ausgang je nach
>Halbwelle auf hi oder lo legst.

Auch dafür habe ich bereits mehr als ein Schaltplan gepostet...

>Ich hab sowas vor gefühlten 100 Jahren mal mit einfacher CMOS-Logik
>aufgebaut und der Sinus war gut genug für weitaus weniger als 1%
>Klirrfaktor.

Ohja, ich habe noch ein komplettes Sortiment 4000er IC's... Spaß.

Danke für deinen Beitrag :D

Autor: Dergute W. (derguteweka)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

Jonas B. schrieb:
> Ich
> hau hier einfach mal ein paar Links rein, vielleicht wird es dann
> klarer.

Umpf, das sieht ja anstrengend aus. Tldr.
Nur soviel: Das kommt mir irgendwie so vor, also ob ein Blinder mit 
seinem Stock den Weg vor sich scannt (hier also mit 50kHz), um so 
Hindernisse zu bemerken. Seh' ich das richtig?
Und so wie der Blinde dann auch laeuft, gibts noch irgendwas, was dann 
den Sensor in die andere Dimension bewegt?
Naja, wurscht.
Aus deinem schematic_cantilever.png seh' ich, dass da also nicht so 
besonders niederohmig der Sinus von Noeten ist.
Um den ominoesen Ableich mit VR auch noch elektronisch gestalten zu 
koennen, koennt' man auf die Idee kommen aus dem FPGA gleich 2 Sinuesse 
mit gleicher Frequenz und 180° +/- epsilon Phasenverschiebung und 
voneinander unabhaengig einstellbarem Pegel zu generieren, der eine 
kommt dann ggf. via R7 oder direkt an den Sensor, der andere direkt an 
C2.
Ausm Bauch raus schaetz' ich mal, dass der Sinus dafuer nicht ganz die 
90dB S/N brauchen wird, da pfeift noch so viel anderes in die Schaltung 
des OpAmps um R4 rum rein...
Also koennte man ggf. drandenken den Sinus tatsaechlich via naggischer 
FPGA-IOs, R2R-Netzwerk und einem als Impedanztransformator (und 
Pegelanpassung) geschalteten LC-Tiefpass  zu erzeugen. Also insgesamt 2x 
mit jeweils identischen Schaltungen, via FPGA kann man dann evtl. den 
Pegel und die Phasenlage der beiden Signale so abgelichen, dass halt 
irgendwas wissenschaftliches passiert, die Kurve schoen wird, 
wasweissich...
Problem: Ich wuerd' mit nicht mehr als vielleicht 4..5Bit Aufloesung 
beim R2R Netzwerk rechnen, ob man dann den Rest noch per Ueberabtastung 
und n-Bit (Bandpass-)Sigma/Delta Wandler hinkriegt, muesst' man mal 
gucken.

Aber Impedanzmaessig sollte das hinhauen: Wenn man 3.3V IOs hat, hat der 
Sinus aus dem R2R Netzwerk dann max. vielleicht 3Vpp - bei 
Leistungsanpassung also 1.5Vpp; wenn man das R2R Netzwerk mit z.B. 1..5k 
Widerstaenden nimmt, und per Tiefpass runtertransformiert, kommt man auf 
0.3Vpp bei 40...200 Ohm Impedanz, wenn man die stumpf mit einem 
entsprechenden R abschliesst, dann sollte sich das durch den Sensor und 
C2 nicht mehr gross aendern.
Problem wird nur sein, ob man da die Amplitude fein genug einstellen 
kann, ohne dass der Sinus zu fies wird. Wenn nicht, sollt' man auf 
richtige DACs umsteigen.

Aber fuer Analogphobiker sieht das alles garnicht gut aus...

Gruss
WK

Autor: Jonas B. (jibi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Nur soviel: Das kommt mir irgendwie so vor, also ob ein Blinder mit
>seinem Stock den Weg vor sich scannt (hier also mit 50kHz), um so
>Hindernisse zu bemerken. Seh' ich das richtig?

Ja.

>Und so wie der Blinde dann auch laeuft, gibts noch irgendwas, was dann
>den Sensor in die andere Dimension bewegt?

Ja oder das Sample, je nach Kontruktion.

Nanometergenau positionierbare Tische, kann ich tatsächlich drucken:

https://github.com/rwb27/openflexure_block_stage
Erklärung:
Youtube-Video "Building Prototypes Dan Gelbart  part 10 of 18  Flexures"

>...

>Aber fuer Analogphobiker sieht das alles garnicht gut aus...
Einfach wirds sicher nicht :D

VG Jonas

Autor: Dergute W. (derguteweka)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

So koennt' das z.B. ausschauen, wenn man aus dem FPGA per R2R Netzwerk 
und LC-Filter zur Signalverschoenerung und Impedanz/Pegelanpassung 
rausgeht und einen nur ein Band um 50kHz herum interessiert:
FPGA 3V3-IO

        2k2               680uH   680uH  270uH
MSB ---/\/\/\---+--------+--MMMM---MMMM-+-MMMM-+------+--- sine out
                |        |              |      |      |    <0.3Vpp
                /        |              |      |      \
                \        | 8n2      56n |      | 68n  /
           1k1  /       ---            ---    ---     \ 47R
                \       ---            ---    ---     /
                /        |              |      |      \
                \        |              |      |      |
         2k2    |       ---            ---    ---    ---
    ---/\/\/\---+
                |
                ... usw.

Gruss
WK

Autor: Jürgen S. (engineer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dergute W. schrieb:
> wenn man aus dem FPGA per R2R Netzwerk
> und LC-Filter zur Signalverschoenerung

Angesichts deiner Kenntnisse und sonstiger Beiträge - gerade in 
Signalverarbeitung - bin ich sehr erstaunt über diesen Vorschlag :-)

Ich lasse mal offen, inwieweit ausgerechnet dieser Filter das Signal 
noch weiter "verschönert" und wie sehr das sinnvoll ist, angesichts der 
katastrophalen Oberwellen, die ein R2R mit so einem Aufbau abgibt. Das 
Problem sind dabei bekanntlich nicht etwas die "Treppen", die glatt zu 
bügeln wären, sondern die Unsymmetrie solcher Wandler. Wenn alle das MSB 
nur um 1% falsch dimensioniert wird, hat man ein tieffrequentes, eben 
mit dem MSB schwingenden Rechteck im Signal, gegen das der Filter kaum 
oder garnicht hilft.

Wenn R2R, dann muss das sehr feinstufig sein und abgeglichen werden, 
d.h. eine Kalibrierung mit Vorverzerrung in der SV. Sowas wird auch 
gemacht, übertrifft aber Delta-Sigma-DACs nur mit sehr großem Aufwand. 
Diese beträgt bei "normalen" 1-Promille-Rs wenigstens 20 Bit = Rs für 
ein 16 Bit System und 32 Rs für ein 24 Bit System inklusive 
Echtzeitkalibrierung und thermischer Nachregelung. Die DIY Audio-Seite 
hat da Beispiele.

Zudem hat der o.g. Filter starkes IIR-Verhalten und ist sehr hochohmig. 
Über dessen Impulstreue muss ich dir nichts erklären, denke ich. 
Entweder liegt die Grenzfrequenz ausreichend hoch, dann ist die 
Filterwirkung auf die NF zu schwach oder sie liegt im Bereich der 
Zielfrequenz, dann ist die Trägheit zu hoch und es gibt Dämpfung und 
starke Abhängigkeit vom Ausgang.

----

Ich verstehe einfach nicht, warum man beim Audio immer wieder so 
umherpopelt! Statt es als Sonderthema zu behandeln, wäre es nötig, es 
genau so aufzufassen und zu behandeln, wie jede andere Mess- und 
Steuertechnik. Ich hatte oben eine PDM vorgeschlagen, die sehr einfach 
zu lösen ist:

Beitrag "Re: einstellbaren 48-52kHz Sinus erzeugen,"

Wie gesagt, geht das mit 2R und 2C und liefert einen supersauberen 
Sinus, weit jenseits eines einfach abgelichenen R2R.

Ich erinnere daran, dass man mit einer 64Bit PDM x Abtastfrequenz 
immerhin Audio-CDs bespielt und abhört und deren Qualität kennen wird. 
Die Anforderung hier liegt um einen Faktor höher, also postuliere ich 
als Minimum einen Datenstrom von 96kHz. Da die Soundkarten-Wandler-Chips 
seit wenigstens 10 Jahren serienmässig mit 192kHz arbeiten, braucht man 
nur einen entsprechenden AA-Filter.

Den würde ich aber ohne Induktivitäten aufbauen. Ist phasentechnisch 
einfacher zu steuern.

Weitere Sinusliteratur bis zum Abwinken mit Bezug zu höhren Frequenzen:


Beitrag "Lautsprecher mit Frequenz ansteuern"
Beitrag "Ultraschallmikro f. Fledermäuse?"
Beitrag "PWM Audio Signal"
Beitrag "Sinus aus R2R filtern"
Beitrag "1Bit Audio als Alternative zu PWM"
Beitrag "Verrückter R-2R Abschwächer (Audio)"
Beitrag "R2R-Wandler mit einem PLD"
Beitrag "Wie DSD512 erzeugen?"
Beitrag "Sinus über DDS erzeugen"
Beitrag "Sinus Generator"
Beitrag "iir Filter als Sinusgenerator"

Autor: Dergute W. (derguteweka)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

Mach's halt besser. Ich schrub nicht, dass das das Ultimo an Qualtitaet 
ist.
Aber da soll auch kein sauerstoffarmes-kupferkabel-Audio rauskommen, 
sondern ein Sinus um die 50kHz. Sonst nix.
Es ist supersimpel, braucht keine eigene Spannungsversorgung, keine 
komischen Niederspannungs-Rail-2-Rail-OpAmps, rauscht kaum und kost' 
fast nix. :-)

Und bevor du so umfassend und kompetent ueber das Filter staenkerst, 
guck's dir halt mal an. Das sollte eine Durchlassdaempfung von < 20dB 
bei 50kHz haben (soooo vieeel eben wegen der Impedanzanpassung, das soll 
so) und bei 150kHz irgendwo bei mehr als 100dB Sperrdaempfung(zumindest 
"auf'm Papier"). Da kann der R2R Wandler ruhig schlecht sein und das MSB 
krumm und schief.

Und wenn da ein 50kHz Sinus drueber gehen soll, wen kratzt da das 
Impulsverhalten?

Gruss
WK

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jonas B. schrieb:
> What should I do?

Eine SPI Schnittstelle stricken und darüber einen AD9833 steuern.
Der lacht über einen 50kHz Sinus, es sei denn, du hast außer der 
Frequenzeinstellbarkeit noch andere Ansprüche.

Autor: W.S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dergute W. schrieb:
> Problem: Ich wuerd' mit nicht mehr als vielleicht 4..5Bit Aufloesung
> beim R2R Netzwerk rechnen,

Dergute W. schrieb:
> Aber fuer Analogphobiker sieht das alles garnicht gut aus...

Tja, eben nicht bloß eins können. Ich halte an dieser Stelle einen 
stupiden R2R DAC für die verkehrte Lösung. Da kommt man eben nur als 
"Analogphobiker" drauf.

Nee, es geht weitaus besser und sparsamer so:
Stell dir einen invertierenden OpV vor, dessen E+ an VCC/2. OK soweit?
Im Gegenkopplungszweig einen 1 k Widerstand (nur als abstraktes 
Beispiel).

Jetzt stelle dir vor, du würdest den Vollkreis in 36 Schritte aufteilen 
und dir einen cos machen wollen. Das erste hierfür verwendete Pin des 
CPLD hat einen 1 K Widerstand zum E- des OpV. OK, ist beim Zustand Nr. 0 
eben quasi +1, also Vollausschlag, wenn das Pin aktiviert ist (also kein 
hi-Z) und auf low liegt. Beim Zustand 18 (entspricht Pi) ist das selbe 
Pin wieder aktiviert, nun aber auf hi liegend. Macht also quasi -1. In 
allen übrigen Zuständen (1..17, 19..35) ist es hi-Z.
Alle anderen verwendeten Pins werden nicht 2x, sondern 4x benutzt: das 
für 10° auch bei 170° und 190° und 350° und dessen Widerstand ist 
1k/cos(10°) und so weiter. Dann 20° und 160°, 30° und 150° usw. Und das 
für 90° kann ersatzlos entfallen. Hehe.

Wenn ich mich jetzt nicht verzählt habe, dann braucht man nur 9 Pins und 
9 Widerstände, die allerdings sauber abgeglichen sein wollen. Und 
natürlich eine Logik dazu im FPGA. Dafür hat man dann aber 36 
Stützstellen pro Ausgangsperiode und die mit Präzision, was das Filtern 
doch sehr erleichtert.

Und wem das nicht gefällt, der kann die Pinanzahl nach seinem Gusto 
erhöhen oder reduzieren.

W.S.

Autor: Jürgen S. (engineer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
W.S. schrieb:
> Wenn ich mich jetzt nicht verzählt habe, dann braucht man nur 9 Pins und
> 9 Widerstände, die allerdings sauber abgeglichen sein wollen.

Das sieht auf den ersten Blick besser aus, weil jeder Fehler nur linear 
eingeht, allerdings ist es im Vergleich nicht unbedingt so, denn mit den 
9 Bits ließe sich ein deutlich feinerer Sinus erzeugen, als mit den 36 
Punkten, wenn man ihn entsprechend dithered und damit das zunächst 
größere Störspektrum verteilt. Wenn du dir die Formeln dafür ansiehst 
oder es in der Simulation durchspielst, dann wird das evident.

Dergute W. schrieb:
> ach's halt besser. I
Habe ich ja. :D Eine lineare PDM ist bei ausreichender Frequenz (ca 
12MHz) locker besser und einfacher zu realisieren.

>audio
Wenn sich das erprobte System / die Methode fürs Audio eignet, dann 
sicher auch für das hiesige System. und es ist j anicht so, dass hier 
große Aufwände zu leisten wären.

Dergute W. schrieb:
> 150kHz irgendwo bei mehr als 100dB Sperrdaempfung
Die helfen dir aber bei den tieffrequenten Störungen des MSB nicht. Ein 
einfaches doppelt T hat mit dem Abstand der 12M gegen 50k eine mehr als 
ausreichende Dämpfung. Gerechnet, gebaut, getestet und in Kundensystemem 
(Ultraschall verbaut).

Autor: Jonas B. (jibi)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
>Eine SPI Schnittstelle stricken und darüber einen AD9833 steuern.
>Der lacht über einen 50kHz Sinus, es sei denn, du hast außer der
>Frequenzeinstellbarkeit noch andere Ansprüche.

Der ist mir ja auch schon mal über den Weg gelaufen. Werd ich mal im 
Hinterkopf behalten...danke!

>Und wem das nicht gefällt, der kann die Pinanzahl nach seinem Gusto
>erhöhen oder reduzieren.

Müssen die Widerstände dann nicht immer weniger Toleranz haben?



Also ich bin weiter gekommen. Sinusausgabe mit 50MHz PDM und einfacher 
Tiefpass 3.8k und 200pF (ergibt ne Gf von ca. 190kHz), läuft. Siehe 
Bilder, da gab es erst noch ein signed /unsigned Problem, aber ich hab 
das tatsächlich einfach lösen können in dem ich auf die Werte die aus 
der DDFS kommen noch 128 addiere.
127 hab ich auch probiert, ich war mir nicht sicher. Bei 128 sehe ich 
keine kleine Treppe.

Dann hab ich endlich den ADC zum laufen bekommen, an dem SPI_CLOCK von 
einem vorgeschalteten PGA hängt auch der Flash. Und direkt nach dem 
Reset spuken da noch Signale rum. Boah das war echt kniffelig 
rauszukriegen. Aber nun rennt er. Auch hab ich ein Arduino Due über 
rs232 angestöpselt, Linien malen in vhdl ist echt uncool. Ich denke das 
macht Sinn, das lässt sich doch viel leichter aus dem Ärmel schütteln. 
Allerdings wäre natürlich ein performante Live-Anzeige mit 75Hz des 
Scans fantastisch. Eventuell baue ich naher mal meine Soundkarte 
auseinander und mache die Eingangskondensatoren brückbar. Wenn ich dann 
mit der Frequenz auf sagen wir mal 20kHz oder 25kHz runter gehe, müsste 
ich gut die SNR ermitteln können. Ich mag das irgendwie Zahlen zu haben 
und vergleichen zu können. Die Audioeingänge müssten ja gepuffert sein, 
also sollte doch ein hochomiger Spannungsteiler zu Anpassung ausreichen, 
oder?

Danke für eure Nachrichten, ich hab alles gelesen.
Vg Jonas

Autor: Lothar M. (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jonas B. schrieb:
> 127 hab ich auch probiert, ich war mir nicht sicher. Bei 128 sehe ich
> keine kleine Treppe.
Eine Simulation des Ganzen bringt Gewissheit in die Ratestunde...

Autor: Jonas B. (jibi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Eine Simulation des Ganzen bringt Gewissheit in die Ratestunde...

Ja bei 50/50 kann man auch mal ausprobieren...das geht viel schneller - 
in dem Fall zu mindest. Bei dem Problem mit dem geteilten Pin des 
Flashes, hätte man das auch in der Simulation/Reports etc. irgendwo 
sehen können?

vg jonas

Autor: Jonas B. (jibi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sag mal Lothar, wie viele Warnungen (gefühlt) kann man ignorieren? Oder 
anders ausgedrückt, bekommt man das überhaupt warnungsfrei synthesiert? 
Ich kann die ganz bösen Purschen schon erkennen, aber manchmal ist das 
merkwürdig. Zum Beispiel kommt kein Fehler, wenn das TOP Modul Netze aus 
dem ucf nicht definiert. Das ist ganz böse, wobei das bestimmt bei den 
Warnungen dabei war...
Ach ja...

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jonas B. schrieb:
> Bei dem Problem mit dem geteilten Pin des
> Flashes, hätte man das auch in der Simulation/Reports etc. irgendwo
> sehen können?
Das steht im Schaltplan.

Ich finde das Zusammenlegen der SPI von ADC, PGA und DAC auf dem Board 
nicht sehr anfängerfreundlich. Damit wird das VHDL-Design m.E. recht 
umständlich.

Duke

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jonas B. schrieb:
> wie viele Warnungen (gefühlt) kann man ignorieren?
Einige bis viele.

> Oder anders ausgedrückt, bekommt man das überhaupt warnungsfrei synthesiert?
Nein.

Ich schaue inzwischen nur noch nach:
- Unassigned signals (871)
- Unwanted Latches (737)
- Unassigned signals (653)
- Internal tristates (2042)
- Combinatoric loops (2170)
- Vector null range (3350)
- Gated clocks (372)
und dem Timing Score.

Duke

Autor: Jonas B. (jibi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Das steht im Schaltplan.

Ja aber da ist kein Timingdiagram was den Datenschmutz auf der Leitung, 
kurz NACH DEM RESET kenntlich macht. Ich warte jetzt einfach ne viertel 
Sekunde und schalte dann erst den AMP ein. Aber du hast recht, auf 
irgendeiner Seite steht dazu was (kann mich dunkel errinnern).


>Ich schaue inzwischen nur noch nach:
>- Unassigned signals (871)
>- Unwanted Latches (737)
>- Unassigned signals (653)
>- Internal tristates (2042)
>- Combinatoric loops (2170)
>- Vector null range (3350)
>- Gated clocks (372)
>und dem Timing Score.

Danke ich dachte schon ich bin wirklich bekloppt.
Oh ja Latches hab ich auch gezeugt wie ein Großer... XD
Ach ich muss mal bissel aufräumen im Code...

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jonas B. schrieb:
> Ja aber da ist kein Timingdiagram was den Datenschmutz auf der Leitung,
> kurz NACH DEM RESET kenntlich macht. Ich warte jetzt einfach ne viertel
> Sekunde und schalte dann erst den AMP ein
Ja, ok. Mit dem Oszi habe ich nicht nachgemessen, in meinem Code steht 
eine Wartezeit von 10 µs drin, wobei 5 µs auch reichen sollten.

Duke

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.

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