Koleżankom i Kolegom Radioamatorom, Krótkofalowcom,
Konstruktorom i Waszym Rodzinom – w tych trudnych czasach –
po dotkliwej awarii naszego forum
Pogodnego czasu po Bożym Narodzeniu,
Dosiego Nowego Roku
oraz Radosnych Trzech Króli

Życzy Zespół Home Made

Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Generator na Si5351A
#1
Przeglądając bloga Jasona NT7S natrafiłem na posty o układzie Si5351, który mnie od razu zainteresował. Jest to programowany generator o częstotliwości wyjściowej od 8kHz do 160MHz. Zależnie od wersji ma 3 lub 8 niezależnych wyjść. W odróżnieniu od Si570 wymaga zewnętrznego kwarcu 25MHz - 27MHz, ale za to jest dużo tańszy Smile

Nota katalogowa: http://www.silabs.com/Support%20Document...Si5351.pdf
Nota aplikacyjna dot. programowania układu: http://www.silabs.com/Support%20Document.../AN619.pdf

Zrobiłem moduł z najmniejszym z tych układów - Si5351A w obudowie MSOP10 z trzema wyjściami. Na płytce poza układem generatora znajduje się stabilizator 3.3V i translator poziomów tak by można było podłączyć mikrokontroler zasilany napięciem 5V. Złącze I2C ma rozkład wyprowadzeń zgodny z modułem Si570 przedstawionym przez Adama SP5FCS. Płytka zaprojektowana jest w EAGLEu.

       

W ramach pierwszych testów napisałem bibliotekę dla Arduino do obsługi tego układu. Obliczanie zawartości rejestrów dla zadanej częstotliwości jest dosyć uciążliwe, ponieważ układ zawiera dwie pętle PLL, których współczynnik powielania / podziału zadaje się za pomocą liczby wymiernej w postaci ułamka zwykłego a+b/c. Bez noty AN619 ani rusz, pomocna była też strona YU3MA. Mój kod jest w dosyć wczesnym stadium i na pewno nie jest optymalny - dość powiedzieć, że używam liczb zmiennoprzecinkowych. Nie są też jeszcze zaimplementowane wszystkie funkcje układu i nie jest obsługiwany pełen zakres częstotliwości. Pomimo tego kod jest już "używalny". Do biblioteki dołączyłem przykładowy program, który pozwala ustawić częstotliwość za pomocą interfejsu szeregowego.

Bibliotekę można pobrać z GitHub.

Mam nadzieję, że w najbliższym czasie uda mi się poskładać jakiś prosty odbiornik SDR i będę prowadził dalsze testy. Wydaje mi się, że układ wart jest zainteresowania, szczególnie w kontekście Husara czy Husarka z dwoma odbiornikami.


Załączone pliki
.zip   SI5351A.zip (Rozmiar: 33.08 KB / Pobrań: 2,318)
Przemek SQ9NJE
http://www.sq9nje.pl
Odpowiedz
#2
Ja zrobiłem pewne uproszczenie myślowe i mam zamiar wypróbować swój algorytm oparty o arytmetykę stałopozycyjną. Ty masz już prototyp to może spróbujesz?
Zdjęcie chyba wyjaśnia na czym polega uproszczenie (na zafixowaniu zmiennej c )
[img]http:[/quote][/php]//lh4.googleusercontent.com/-mxerals8JPA/U3eIN7S9bBI/AAAAAAAAAXE/tumicf8a7eM/s2048-no/IMAGE_182.png[/img]


Załączone pliki Miniatury
   
Odpowiedz
#3
W pierwszym podejściu też zrobiłem tak, że mianownik zawsze był stały i był równy największej liczbie jaka mieści się w rejestrze. Takie podejście nie zawsze daje najlepsze przybliżenie i zależnie od żadanej częstotliwości czasem odchyłka była zauważalna. Przy czym częściowo przyczyniały się do tego błędy zaokrągleń.

Czy mógłbyś wrzucić swój arkusz? Nie za bardzo rozumiem co dzieje się w jego środkowej części. Moja percepcja jest dzisiaj jakaś ograniczona...

Jutro będę chcial jeszcze trochę popracować nad tym kodem i zrobić testy szybkości. Mam kilka pomysłów na optymalizację, można np. zastąpić dzielenie mnożeniem w procedurze znajdowania aproksymacji. To powinno trochę przyspieszyć obliczenia. Pozbycie się floatów będzie pewnie następnym krokiem i jeśli nawet nie będzie miało wpływu na szybkość, to na pewno znacznie zmniejszy rozmiar wynikowego programu.

Dzisiaj lutuję odbiornik ZetaSDR (bo wszystko było w szufladzie, hi) i jak dobrze pójdzie jutro będę mógł też trochę posłuchać. Ciekaw jestem czy przy przestrajaniu będzie słychać "stukanie" znane z Si570?
Przemek SQ9NJE
http://www.sq9nje.pl
Odpowiedz
#4
Cóż, skoro to jest uproszczenie, to i musi być cena za to, czyli rozdzielczość w ustawieniu częstotliwości. Zafiksowana zaś została największa wielokrotność 10, bo w dziesiętnym systemie liczę.
A artmetyka to operowanie na 20 bitowych słowach, co dla ARMa czy 32 bitowego AVRa nie jest problemem. Jedyną upierdliwą jest procedura dzielenia, co na 32 bitowych słowach może trochę potrwać.
W środku arkusza nic nie ma, chciałem tylko zobaczyć jaka jest rozdzielczość ustawienia częstotliwości na krańcach zakresów.
Jak się dorwe do PCta to arkusz załącze, z tableta mam nijaki problem z tym.

Robert
SP6VWX
Odpowiedz
#5
Heh, wszystko jasne! Mówiłem, że dzisiaj błyskotliwością nie grzeszę Smile

AVR, na którym to testuję jest 8 bitowy, ale to właściwie nie problem. Dzielenie zawsze jest wredne, o ile dobrze kojarzę avr-gcc robi dzielenie dwóch 8 bitowych liczb w jakieś 170 cykli, podczas gdy mnożenie jest sprzętowe i zajmuje 2 cykle.

Zapomniałem jeszcze dodać, że dostępny jest program na PCta, który pozwala wyklikać konfigurację i przygotowuje cała mapę rejestrów. Przy tym bardzo fajnie optymalizuje tą konfigurację, bo o ile to możliwe dobiera współczynniki tak, żeby PLL i dzielnik działały w trybie całkowitym, a nie ułamkowym. Do płynnego przestrajania trzeba jednak przeliczać wartości rejestrów na bieżąco.

ClockBuilder Desktop

I jeszcze gwoli uzupełnienia dokumentacji nota katalogowa użytego przeze mnie kwarcu.
Przemek SQ9NJE
http://www.sq9nje.pl
Odpowiedz
#6
Gdzie można kupić takiego scalaczka do testów- eksperymentów.
Coś nie mogę znaleźć.
Pozdrawiam
Odpowiedz
#7
Heh, podobnie jak z Si570 nie jest łatwo. Digikey albo Mouser. Za tydzień lub dwa powinienem mieć jeszcze kilka.
Przemek SQ9NJE
http://www.sq9nje.pl
Odpowiedz
#8
Widze ze w farnell sa SI5356 od reki i w dobrej cenie.
Wydaja sie byc to podobne scalaki.
Chyba sie skusze na sztuke do experymentow.
Odpowiedz
#9
W digikey jest http://www.digikey.com/product-detail/en...ND/3679848
Maja ich 554 sztuk po $3.35 za sztuke
Zreszta Si570 tez maja http://www.digikey.com/product-detail/en...ND/3991067

Pozdrawiam
Arek AC2FC
Odpowiedz
#10
+50$ wysyłka.
Odpowiedz


Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości