HomeMade

Pełna wersja: QCX-SSB z QRP-LABS
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Stron: 1 2 3 4 5 6
(21-05-2020 23:34)SQ5KVS napisał(a): [ -> ][...] Z mojego rozumienia dokumentacji do Si5351, w trybie "integer" można mieć tylko dwa wyjścia na plla i pllA jedno i pllB drugie, Trzecie musi być podłączone do a lub b w trybie fractional, jeśli ma mieć dowolnje różną częstotliwość?

To zależy od tego, jakie to mają być te 3 różne częstotliwości Smile

Ogólnie sprawa wygląda tak, że tam masz dwie PLL (A i B) oraz dzielniki (tzw. MS) niezależne do każdego portu wyjściowego. Jest więc takie przejście:
XTAL(25-27 MHz) -> PLL(600-900MHz) -> MS(2,5kHz - 225MHz)
Dodatkowo za MS jest jeszcze dodatkowy dzielnik, który umożliwia zejście z częstotliwością poniżej pewnego progu (coś chyba koło 2MHz) aż do okolic 2,5kHz.

Zarówno PLL (mnożnik) jak i MS (dzielnik) może być ustawione w trybie "integer" oraz w trybie "fractional", przy czym zaleca się, aby MS było ustawione w trybie "integer" kiedy tylko się da, bo wtedy sygnał wyjściowy jest bardziej czysty.

Dodatkowo jeszcze jest takie ograniczenie, że powyżej częstotliwości 112,5MHz na wyjściu, MS może być ustawione tylko w trybie "integer" (na jednej z wartości dzielnika: 4, 6 lub 8).

No i teraz, w zależności od tego jakie mają być te 3 różne częstotliwości, to oczywiście można sobie wyobrazić taką konfigurację, że MS0 i MS1 są zasilane z PLL-A, oba są w trybie integer, choć na wyjściu mają inne częstotliwości, a dodatkowo MS2 jest zasilane z PLL-B, jest również w trybie "integer" i na wyjściu ma jeszcze inną częstotliwość.

W ogólności jednak dla znacznej większości konfiguracji 3 różnych częstotliwości będzie wymagało ustawienia (PLL, MS lub obu) w trybie "fractional".
Jednak we wszystkich zastosowaniach Si5351 jakie widziałem, to chyba nie widziałem żadnego, w którym wymagane byłyby 3 zupełnie różne częstotliwości na każdym kanale. Zwykle potrzebne są co najwyżej dwie (albo wręcz jedna, tylko z przesunięciem fazy, jak przy I/Q) - a to da się zrobić niezależnie i z "integer" na MS.

Choć oczywiście są i takie konfiguracje, których się fizycznie nie da zrealizować:

[attachment=16278]

Pozdrawiam,
Rafał SP3GO
DSP jest proste.... do momentu w którym zaczniesz wgryzać się w teorię Smile

Po czystości kodu Guido widać że nie ma czasu Smile W tym kodzie jest jeszcze sporo miejsca na optymalizację (niekoniecznie pod kątem efektów, choć może też).
Po szukaniu w necie ile czasu zajmują atmedze różne operacje okazało się ze dzielenie 32bitowe robi się prawie tak samo wolno jak dzielenie przez float'a i duużo wolniej niż mnożenie.
W swoim AGC na atmedze (w burzeninie) używałem podstawy będącej wielokrotnością dwójki, dzięki temu wszystkie dzielenia dawało się zamienić na przesunięcie binarne. I tak np:
Kod:
avg_bias =  ((992*avg_bias)>>10) + (x<<5);
to to samo co:
Kod:
avg_bias = 0,96* avg_bias  + 0,125*x;

tylko pomnożone o 1024;
to przy samplowaniu 9600Hz jest dolnoprzepustowy filtr eksponencjalny o f=50Hz, na atmedze wykonuje się nieco ponad mikrosekundę Smile
A gdyby przekompilować to na taki procek: LGT8F328P , praktycznie w naszym rozwiązaniu zamiennik 328, jest wsparcie w arduino a rozdzielczość 12bitów. Taka podrasowana atmega328
W tych chińskich podrasowanych kopiach chyba wymagany jest inny programator. A i zegar do 32MHz na pewno dużo wniesie do sprawy.

Znalezione w sieci:
"LGT8F88A powstał na podstawie LGT8XM, który stanowi zoptymalizowany 8 bitowy rdzeń RISC, głównie zoptymalizowano go pod kontem maksymalizacji wydajności i równoległości. Tu podobnie jak w AVR wykorzystano architekturę Harwardzką. Instrukcje są wykonywane w 2 stopniowych “strumieniach” co powoduje zmniejszenie zużycia energii przez pamięć flash. Ponadto wprowadzono Smart Cache dla instrukcji dzięki czemu można pobrać na raz więcej instrukcji i tym samym skutecznie zmniejszyć operacje dostępu do pamięci. Dzięki czemu uzyskano 40% zmniejszenie zużycia energii w porównaniu z innymi 8 bitowcami."
Chodziło mi głównie o dwa dodatkowe bity na przetworniku Zgodność procesorow jest bardzo duża dodatkowo są wersje Arduino na nich
No tak, ale Atmega328 jest już tania jak barszcz. Nie wiem po ile ten chiński procek. Ale fajną rzeczą w jest że ma też DAC.
Oczywiście można dokleić do Atmegi ADC (12 bitów / 2 kanały po 10zł w TME, 100ksps) i DAC (tu można PWM ale ja nie lubię PWM do dac...) tylko to już nie jest arduino board Smile I zaraz się okaże że taniej STM'a czy cuś..
Te procki to prawie darmo dają ;-)

https://pl.aliexpress.com/item/400095914...web201603_

W sumie powinno dać się bez większych problemów skompilowanie tego na STM32 pod arduino.
Albo można i to zastosować:
https://botland.com.pl/pl/moduly-i-zesta...b-ram.html

tylko trzeba programisty, który to ogarnie ;-)
Aczkolwiek nie będzie to już niskoprądowe.

Parę słów na elektrodzie:
https://www.elektroda.pl/rtvforum/topic3452382.html
RPi to armata na muchę ;-)
A na potrzeby tego projektu, to ja bym widział takiego BluePill'a, czyli STM32F103.
Też bardzo tani, a znacznie szybszy i większe możliwości... no i też chyba 12-bit ADC na pokładzie...

Pozdrawiam,
Rafał SP3GO
Mam swoje (złe) zdanie o arduino, w sensie wydajności bibliotek które tam są nawrzucane.. Ale jeśli pod avr czy jakimś gcc da się to oprogramować...

Rafał, ten datasheet jest okropny. Pomijam że jest chińsko - angielski, w trzech miejscach jest podana różna rozdzielczość ADC:
"12-channel 12-bit ADC" - strona 2,
"8-bit 12 channel ADC" - strona 3,
"10-bit Resolution," - strona 277 Smile
Chyba ma jednak 12 bitów ale to trochę wkurza ile tam jest błędów.
To co jest jeszcze fajne to wzmacniacz x1/x8/x16/x32 przed ADC co zwiększa dynamikę teoretycznie do 100dB .. Smile
BluePille są fajne, ale też za niewiele większe pieniądze można mieć STM32F401 (256k flash)
https://pl.aliexpress.com/item/400008463...5c0fvDPuE0
lub 407-kę
https://pl.aliexpress.com/item/400060251...web201603_
Stron: 1 2 3 4 5 6
Przekierowanie