App note Punkt3: fvco = fxtal *( a+b/c) Habe nirgendwo gefunden, ob b/c ein echter Bruch sein muss. D.h. b/c muss <1 sein Kann jemand helfen?
Rudi D. schrieb: > D.h. b/c muss <1 sein Ja, da b<=(c-1). _"The fractional ratio a + (b/c) has a valid range of 15 + 0/1,048,575 and 90"_
Robert M. schrieb: > Ja, da b<=(c-1). > > _"The fractional ratio a + (b/c) has a valid range of 15 + 0/1,048,575 > and 90"_ Diese Einschränkung ist aber in den Formeln für P1 und P2 nicht erkennbar, b/c könnte auch >1 sein. Allerdings weiss ich ja nicht wie die Pll's im si5351 konstruiert sind. Will gerne einen Wobbler bauen für AM- und FM-ZF. Bei AM kein Problem, da b =0 sein kann und der Wobbelhub, 100 Steps, mit a alleine realisiert werden kann. Die Genauigkeit der Wobbelincrements wird dann <1 Step sein, was ausreicht. Einen Wobbler mit AD9850 habe ich ja schon realisiert, d.h. die SW in Assembler, siehe https://www.radiomuseum.org/forum/gemeinschaftsprojekt_dds_heimsenderlein.html Bei FM-ZF 10,7 MHz wird es schwierig da, bei fvco =850 MHz, a von 77 bis 81 geht. Wenn man a auf 77 lässt geht b/c von 0,625 bis 4,3397. Könnte aber von SW-Seite gelöst werden, wenn b/c <1 sein muss. Anderseits: der rel. Hub ist ja nur 4,6% für 500 kHz Hub. Bei fvco = 235 Mhz ginge sich b/c <1 aus, min. fvco ist aber 375 MHz, also außerhalb Datenblatt. Also lösen kann ich es z.B. mit einem Mix aus beiden Absätzen oberhalb. Ein Diskussionspartner wäre angenehm. Zuerst war ich ja abgeschreckt von den mehr als 160 Parametern des si5351, aber einige kleine Inputs von rfzero, Hans Summers und Cesarsound sind ausgezeichnet. Wobbeln mit klassischem c ist viel zu langsam, egal ob mega328 oder BluePill, also versuche ich die Programmierung auf Registerniveau, was, so hoffe ich, schneller sein wird. >10 Hz Wobbelspeed wäre schon schön.
Rudi D. schrieb: > Will gerne einen Wobbler bauen für AM- und FM-ZF. Dann nimm lieber einen DDS-IC. So ein PLL-System wie der SI5351 braucht zum einen immer eine Zeit zum Einschwingen während ein DDS quasi sofort auf der gewünschten Frequenz ist. Zum anderen ist das jeweilige Ausrechnen der diversen Einstellregister bei einem PLL-System umständlicher. Das will man nicht pro Wobbeldurchlauf einige hundertmal tun müssen. Obendrein ist so ein PLL-IC wie der SI5351 ein Taktgenerator und liefert erstmal nur ein Rechteck. Ein DDS hingegen kann einen (mehr oder weniger) guten Sinus liefern. Also überdenke nochmal dein Konzept. W.S.
Rudi D. schrieb: > Diese Einschränkung ist aber in den Formeln für P1 und P2 nicht > erkennbar, b/c könnte auch >1 sein. Nein, b/c<1. P1,P2,P3 enthalten die kodierte Darstellung (18 bzw. 20 Bit breite Register) von a, b und c. D.h. du musst ertsmal a,b,c bestimmen und dann nochmal, laut Formeln in der App-Note, die kodierte Darstellung davon berechnen um die jeweiligen Register damit zu füllen. Rudi D. schrieb: > Will gerne einen Wobbler bauen für AM- und FM-ZF. Bei AM kein Problem, > da b =0 sein kann und der Wobbelhub, 100 Steps, mit a alleine > realisiert werden kann. Wenn du den OMD (Output Multisynth Divider) fest auf einen möglichst geraden, ganzzahligen Teilerfaktor von z.B. 70 legst und nur die PLL bzw. den FMD (Frequency Multisynth Divider) im Factional-Modus betreibst, lässt sich am Ausgang von etwa 8,6...12,8MHz wobbeln, mit einer Schrittweite < 1Hz (für Fref = 10...40MHz). Mit einem 13MHz Tiefpass am Ausgang bekommst du dann bei Bedarf auch ein schönes, sinusförmige Ausgangssignal. Wenn das Ausgangssignal besonders sauber bezüglich Nebenwellen sein soll, dann müsste man auch z.B. auf den Boundary Spurs der PLL achten und die Teilerfaktoren im FMD und OMD anpassen. Rudi D. schrieb: > Bei FM-ZF 10,7 MHz wird es schwierig da, bei fvco =850 MHz, a von 77 > bis 81 geht. Wenn man a auf 77 lässt geht b/c von 0,625 bis 4,3397. a=77 und b/c=4,3397 geht nicht. Was möglich wäre ist aber a=81 und b/c=0,3397. Rudi D. schrieb: > Wobbeln mit klassischem c ist viel zu > langsam, egal ob mega328 oder BluePill, also versuche ich die > Programmierung auf Registerniveau, was, so hoffe ich, schneller sein > wird. Was hat die Programmiersprache mit Wobbeln zu tun? Dauert die Berechnung von a,b,c zu lange? Die Register des Chips müssen über I2C mit zu berechnenden Werten befüllt werden. Es ist aber nicht notwendig für jede neue Frequenz alle Register des Si5351 neu zu schreiben.
Robert M. schrieb: > Rudi D. schrieb: > Was hat die Programmiersprache mit Wobbeln zu tun? Dauert die Berechnung > von a,b,c zu lange? Das ist ja der Grund warum ich mir das antue auf Registerniveau zu arbeiten um nur die unbedingt nötigen Register zu ändern, um die Wobbelgeschwindigkeit zu beschleunigen. Eine neue Frequenz mit si5351.set_freq(xxx) einzustellen braucht 4,4 ms -nur kleiner Unterschied mega328 oder BluePill- was bei 100 Wobbelschritten für einen Durchlauf eben 440 ms dauert, was IMHO unbrauchbar ist. > Die Register des Chips müssen über I2C mit zu > berechnenden Werten befüllt werden. Es ist aber nicht notwendig für jede > neue Frequenz alle Register des Si5351 neu zu schreiben. Das habe ich vor und will je Wobbelstep möglichst nur wenige Register neu einstellen. Danke für den interessanten Vorschlag. Das werde ich gerne mit einplanen. Mit dem im Link beschriebenen DDS mit AD9850 kommt man auf minimal 14ms bei 256 Wobbelschritten je Durchlauf. In Assembler natürlich. Mein Interesse ist es zu testen, wie weit man mit dem si5351 kommen kann, wenn man alles zur Beschleunigung ausreizt. Mir ist schon klar, dass der si5351 nicht für diese Anwendung entwickelt wurde. Nochmal herzlichen Dank für den Input.
W.S. schrieb: > Rudi D. schrieb: >> Will gerne einen Wobbler bauen für AM- und FM-ZF. > > Dann nimm lieber einen DDS-IC. So ein PLL-System wie der SI5351 braucht > zum einen immer eine Zeit zum Einschwingen während ein DDS quasi sofort > auf der gewünschten Frequenz ist. Zum anderen ist das jeweilige > Ausrechnen der diversen Einstellregister bei einem PLL-System > umständlicher. Das will man nicht pro Wobbeldurchlauf einige hundertmal > tun müssen. Obendrein ist so ein PLL-IC wie der SI5351 ein Taktgenerator > und liefert erstmal nur ein Rechteck. Ein DDS hingegen kann einen (mehr > oder weniger) guten Sinus liefern. > > Also überdenke nochmal dein Konzept. > > W.S. Das DDS Konzept ist im Link beschrieben und es gab einen Bausatz. Danke für den Hinweis.
Anbei dzt. Zustand: Grünes Gehäuse Mit Atmel mega328 und Speicherung der letzten Einstellung Loser Aufbau mit Bluepill noch ohne ext. NVRAM Beide Modelle zu langsam im Wobbelbetrieb.
Rudi D. schrieb: > Beide Modelle zu langsam im Wobbelbetrieb. Prinzipiell hat der SI5351 erst mal einen Flaschenhals da er mit I2C betrieben wird und man dort (nach Datenblatt) nur mit 400 KHz arbeiten kann. Aber auch wenn es 1MHz sein könnten bleibt das ein Flaschenhals gegenüber einem SPI das man mit mindestens der zehnfachen Geschwindigkeit betreiben könnte. Ein ATMega328 wird für die ganzen Berechnungen tatsächlich etwas zu langsam sein um "schnell" wobbeln zu können, ein STM32 (Bluepill) würde da schon deutlich Vorteile bringen, aber der Flaschenhals der Datenübertragung bleibt. Sollte die Rechengeschwindigkeit eines BluePills nicht ausreichen würde ein STM32F407 sicherlich einen Gewinn in der Rechen- geschwindigkeit von etwa 3 bis 4 bringen. Sollten in deiner Berechnung der Registerwerte noch Floating-Point-Operationen vorkommen dann wäre das eine zusätzliche Bremse für optimale Geschwindigeit. In meiner Implementierung der SI5351- Ansteuerung kommt das Wort double oder float jedenfalls nicht vor. Die "letzte" Optimierungstufe wäre die Vorausberechnung einer Sweep-Tabelle mit Registerinhalten, die muss nur einmal vor Einstellen des Sweeps aufgebaut und berechnet werden sodass keine zusätzliche Rechenzeit während des aktiven Sweeps ge- braucht wird. Das wird für einen 328 oder Bluepill evtl. den Speicher sprengen. So gesehen wäre für deinen Zweck eine Lösung mit einem DDS der Sorte AD9850 (o.ä) die bessere, solange die Ausgangs- frequenz ausreicht. SPI ist hier sicher schneller als I2C.
hf werker schrieb: > Sollte > die Rechengeschwindigkeit eines BluePills nicht ausreichen > würde ein STM32F407 sicherlich einen Gewinn in der Rechen- > geschwindigkeit von etwa 3 bis 4 bringen. Bleib mal auf dem Teppich. Bei meinem Wobbler (der vom Funkamateur) steckt ein AD9951 und ein PIC16 drin. Der Flaschenhals ist hier die serielle Strippe, die die Verbindung zwischen Wobbler und PC macht. Da ist es nötig, sich Gedanken zum Übertragen der Ergebnisse zum PC zu machen. Dennoch reicht die Geschwindigkeit insgesamt, um so etwa 3..5 komplette Durchläufe pro Sekunde zu machen - je nach Fenstergröße des Programms auf dem PC. Ich hatte deshalb für feinere Untersuchungen an Quarzen da noch einen einstellbar gebremsten Betriebsmodus (sozusagen Slow Motion) eingebaut, weil Meßobjekte von hoher Güte eben auch eine längere Einschwingzeit benötigen. Allerdings ist der PIC in Assembler programmiert. Um bei sowas einen PIC16 oder einen ATmega zu überfordern, muß man sich schon ziemlich dämlich anstellen. W.S.
W.S. schrieb: > Bleib mal auf dem Teppich. Ich sehe keinen Grund oder Anzeichen warum ich weg vom Teppich sein sollte. Für solche dummen Sprüche solltest du belegen was du behauptest.
hf werker schrieb: > Ich sehe keinen Grund oder Anzeichen warum ich weg vom > Teppich sein sollte. Wer da meint, daß ein Cortex M3 für einen Wobbler nicht ausreichen könnte, ist bereits weg vom Teppich - oder er hackt auf einem falschen Konzept herum, was letztlich auch nur ein Zeichen für das Weiterverfolgen eines suboptimalen Konzepts ist. Der seit Jahren funktionierende Gegenbeweis steht auf meinem Basteltisch und wobbelt. Und das mit nur einem kleinen PIC16 drin. Und eben dies hat man auch auf den Basteltischen recht vieler anderer Leute. Was ich zu dem Ansinnen sage, einen PLL-Taktgenerator für einen Wobbler zu nehmen, steht bereits viel weiter oben. Es ist eine recht ungünstige Sache, um das mal vorsichtig zu sagen. Klar: wer nix anderes hat, der macht auch sowas oder wie der Volksmund sagt: in der Not frißt der Teufel Fliegen. Aber zur Verbesserung der Situation einen Cortex M4F vorzuschlagen, klingt nicht nach einem HF-Werker. W.S.
1. Regel: W.S. hat immer Recht 2. Regel: Sollten jemals Zweifel aufkommen dass andere Wahrheiten zutreffen könnten oder Lösungen ausserhalb des eigenen Horizonts möglich sind trifft automatsich Regel Nummer 1 in Kraft.
W.S. schrieb: > einen PLL-Taktgenerator für einen Wobbler > zu nehmen, steht bereits viel weiter oben. Es ist eine recht ungünstige > Sache, um das mal vorsichtig zu sagen. Klar: wer nix anderes hat, der > macht auch sowas oder wie der Volksmund sagt: Habe natürlich was anderes. Ich hab doch schon geschrieben, dass ich den si5351 nicht für die optimale Lösung halte und einen Link eingefügt für ein Projekt mit AD9850, der aber im UKW Bereich nicht wobbeln kann. 10,7 natürlich kein Problem. Wobbelgeschw. einstellbar von 2 Hz- für Quarzfilter auf Wunsch eines Bausatzkäufers - bis 70 Hz. Hier ein Bild eines Gerätes. Meines ist nicht so schön.Die SW habe ich nicht veröffentlicht tiny 4313 + AD9850 ist aber egal, da 7 Jahre alt.
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.