logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

DIY FRPWM o rozdzielczości pikosekundowej, na układzie FPGA.

10 Lip 2021 17:22 2514 22
  • O autorze
    Konto nie istnieje
    Poziom 1  
    Konto nie istnieje napisał 0 postów. Jest z nami od 1978 roku.
  • #2 19515207
    krisRaba
    Poziom 31  
    W sumie bardzo sprytne rozwiązanie :)
    A jak rozwiązałeś to wpisywanie wartości 0ps na starcie i żądanego opóźnienia później? Bo albo nie napisałeś, albo ja nie wyłapałem. W sumie trzeba to wpisywać w każdym cyklu, więc jest trochę tego przerzucania.

    Z innej beczki.. faktycznie w sterowaniu silników potrzebne Ci były tak wyżyłowane parametry PWMa?
    Nie kryję, że czytając artykuł na telefonie nie widziałem jeszcze kto jest autorem (jest na końcu), więc zastanawiałem się ile autor rzeczywistych układów na tym odpalił ;)
    Potem patrząc jednak na nicka i pamiętając różne dyskusje.. no przyjmuję, że gdzieś to było potrzebne.

    Co do faktu, że nie da się kupić gotowego rozwiązania o parametrach z kosmosu, to poza bardzo niszowymi zastosowaniami, osobiście staram się wtedy szukać innego sposobu realizacji, bo może wymyśliłem coś, co inny robią dużo prościej ;)
    Kiedyś np. robiłem sterowanie sinusoidalne silnikiem BLDC i trochę wymyślając koło na nowo wpakowałem w algorytmie floaty, wyliczanie wartości sinusa itp. Procek miał co robić. Potem zobaczyłem notę aplikacyjną, gdzie podobne rzeczy zrobili na jakiejś nowej serii attiny :P
    Liczby stałoprzecinkowe, LUT dla sinusa, operowanie regulatorów na wartościach beż żadnego przeliczania na zrozumiałe dla człowieka itp ;) Heh.. także ten ;)
    Oczywiście nie zawsze tak jest i też miałem przypadki, że brakowało mi w sprzęcie czegoś oczywistego i trzeba to było dorzeźbić, ale.. podchodzę z rezerwą :D
  • #3 19515236
    Konto nie istnieje
    Poziom 1  
  • #4 19515406
    krisRaba
    Poziom 31  
    atom1477 napisał:
    To są bloki DELAY dynamiczne, czyli takie którym można zmieniać ustawienia w tracie działania.

    Ok, tylko że gdy PWM pracuje, to z tego co rozumiem:
    - na starcie masz 0ps i chcesz by zbocze PWM wystartowało bez opóźnienia
    - po zboczu narastającym musisz wpisać np. 100ps by zbocze opadające było opóźnione
    - po zboczu opadającym musisz wpisać znów 0ps, by zbocze narastające było w fazie z zegarem, bez opóźnienia..
    i tak w kółko w każdym cyklu..
    Coś w rodzaju DMA wyzwalanego zboczami? ;)

    Jeśli dobrze zrozumiałem, to wspominałeś chyba o problemach w okolicy 0% i 100%, gdzie pojawia się problem, bo np. ciężko przedłużać impuls, który się wcale na wyjściu nie pojawił, czyli 0+(x)ps DELAYa ;) I stąd te wzmianki o bootstrapie oraz o spoczynkowym 50% itp, tak?

    atom1477 napisał:
    Ktoś musi tworzyć te wyżyłowane rozwiązania, które potem Wy, maluczcy elektronicy*, kupujecie jako gotowe scalaki :D

    Czyli nie były potrzebne.. :lol:

    Ale samo rozwiązanie ciekawe. Za wymyślenie "propsy" :D

    Swoją drogą ja lubię wymyślać różne sprzętowe "automaty" na peryferiach MCU, by CPU jak najbardziej się nudził ;) Gorzej jak potem trzeba podmienić procka, a alternatywny nie wszystko obsługuje :P W FPGA pewnie nie ma aż takich problemów z przenoszeniem? Choć sama funkcja DELAY na GPIO, którą wykorzystałeś pewnie jest różnie implementowania, no i tak jak wspominałeś nie wszędzie ma identyczne możliwości.. No ale załóżmy, że to już taki ficzer budowany pod konkretny klocek ;)
  • #5 19515551
    Konto nie istnieje
    Poziom 1  
  • #6 19515683
    _johnny_
    Poziom 9  
    Podejrzewam, że problem zwiekszajacego sie zegara dla ukladow pwm dawno zauważono i w tym celu opracowano inne metody "zamiany impulsów na wartość średnią" jak BAM. Bardzo łatwo można przy pomocy takiego rozwiązania zwiększać efektywną rozdzielczość
    https://www.christian-marty.ch/ElectricThings/BitAngleModulation.html
  • #7 19515698
    Konto nie istnieje
    Poziom 1  
  • #8 19515786
    Janusz_kk
    Poziom 38  
    Autorze, weź przykład jak jest artykuł napisany, jest kod z objaśnieniami.
  • #9 19516208
    krisRaba
    Poziom 31  
    Dość zabawne, że jako zalety BAM wymieniają, że wystarczy 8 odświeżeń na cykl zamiast 256.. LOL czyli porównują programowy PWM i na tej podstawie wyciągają wnioski świetności BAM kontra PWM?
    Idąc tym tropem, to jaki powinien być zegar CPU żeby przemielić funkcję odświeżania BAM i uzyskać podobne rezultaty jak opisane w tym temacie? ;)
  • #10 19516246
    _johnny_
    Poziom 9  
    krisRaba napisał:
    Dość zabawne, że jako zalety BAM wymieniają, że wystarczy 8 odświeżeń na cykl zamiast 256.. LOL czyli porównują programowy PWM i na tej podstawie wyciągają wnioski świetności BAM kontra PWM?
    Idąc tym tropem, to jaki powinien być zegar CPU żeby przemielić funkcję odświeżania BAM i uzyskać podobne rezultaty jak opisane w tym temacie? ;)


    BAM jest stosowany w każdym wyświetlaczu ledowym zmniejszając potrzebne pasmo transmisji do zapewnienia odcieni szarości. Tak jak kolega zauważył wystarczy 8 transmisji co 8 różnych odcinków czasowych lub np. 16 transmisji dla 16bitowej skali szarości.
  • #11 19516270
    krisRaba
    Poziom 31  
    Mi akurat chodziło o co innego :P Odpalając PWM wcale nie aktualizuję go 256 razy na cykl, bo bawi się w to timer i jego otoczka ;) Stąd wspomniane porównanie jest dziwne i prawdziwe może tylko na Arduino na biurku, gdzie ktoś postanowił zrobić software-PWM, którego w bardziej krytycznych zastosowaniach nie wykorzystasz, bo jego stabilność jest mocno wątpliwa...
    A czy są sprzętowe generatory BAM? Jeśli faktycznie jest to w wielu wyświetlaczach, choć zapewniam, że nie we wszystkich, to może są..

    Dodano po 45 [minuty]:

    Tak myśląc o tym BAM, to podejrzewam coś innego. Tam pewnie będzie jakiś myk, że nie potrzebujesz timera dla każdego kanału, tylko po jakichś rejestrach przesuwnych czy innych ciśniesz po prostu dane. Masz wtedy jeden zegar dla wszystkich rejestrów, a zmienność danych zapewnia określone "wypełnienie".
    Przy dużej ilości LED bardzo by to upraszczało hardware..
  • #12 19516501
    Konto nie istnieje
    Poziom 1  
  • #13 19521511
    coberr
    Poziom 20  
    krisRaba napisał:
    Ale samo rozwiązanie ciekawe. Za wymyślenie


    Ale kol. Atom tego nie wymyslił :)
    tego typu rozwiązania hulają już sobie w najlepsze od kilkunastu lat - chociażby w mikrokontrolerach TMS320F28x i wyższych. Nazywa się taki blok tam: HRPWM.
  • #14 19521638
    Konto nie istnieje
    Poziom 1  
  • #15 19521837
    coberr
    Poziom 20  
    atom1477 napisał:
    No to przecież podałem linka do tego*.
    Ale tam mają minimalnie 55ps.
    Mi trzeba było o wiele mniej.


    aaa to jakoś mnie to umknęło :) - ślepota niestety...
  • #16 19636632
    _lazor_
    Moderator Projektowanie
    Dlaczegoś ten temat mnie ominął to teraz napisze.

    Co powiesz o tym?
    https://www.st.com/content/ccc/resource/train...G4-WDG_TIMERS-High_Resolution_Timer_HRTIM.pdf

    ekwiwalent 5.44GHz na mikrokontrolerze ;)
  • #17 19636659
    Konto nie istnieje
    Poziom 1  
  • #18 19636700
    _lazor_
    Moderator Projektowanie
    tylko po co 500GHz a potem testowanie na analizatorze sprzętu audio? To jak skalpelem ciachać tuszkę.

    jaki był okres dla tego czerwonego przebiegu opisanego tym tekstem:
    atom1477 napisał:
    PWM przełączany pomiędzy próbkami 255 i 256 (czyli tylko PWM niskorozdzielczy) (przebieg czasowy wyświetlony w powiększeniu 256 razy):
  • #19 19636718
    Konto nie istnieje
    Poziom 1  
  • #20 19636736
    _lazor_
    Moderator Projektowanie
    atom1477 napisał:
    Test jest zrobiony analizatorem audio bo taki był najwygodniejszy do pokazania szumów.


    Sprytne to jest to że po prostu nie widać szumów powyżej 50kHz ;D

    Faktycznie jest szpila na 3kHz i by było fajnie bo na 9kHz jest mniejsza szpila jak ma być przy prostokącie, ale nagle boom 15kHz masz szpile, która jest po prostu podłym wskaźnikiem że na PCB coś jest jednak nie tak.
    Wyższe częstotliwości pewnie by pokazały jeszcze więcej szumów.
  • #21 19636749
    Konto nie istnieje
    Poziom 1  
  • #22 19636754
    _lazor_
    Moderator Projektowanie
    No ok pozostałe też wyglądają jak z szeregu fouriera. Jednak widać że prostokąt jest zaszumiony i to pewnie częstotliwością, której już nie widać na tej analizie.
  • #23 19636762
    Konto nie istnieje
    Poziom 1  

Podsumowanie tematu

Dyskusja dotyczy koncepcji PWM o ułamkowej rozdzielczości (FRPWM) na układzie FPGA, który osiąga wirtualne taktowanie rzędu 500 GHz. Uczestnicy omawiają wyzwania związane z implementacją PWM o wysokiej rozdzielczości, w tym problemy z opóźnieniami i koniecznością dynamicznego ustawiania parametrów DELAY w trakcie działania. Wspomniano również o alternatywnych metodach, takich jak Bit Angle Modulation (BAM), która nie zwiększa rozdzielczości, ale zmniejsza migotanie w sterowaniu LED-ami. Uczestnicy podkreślają, że istniejące rozwiązania na rynku, takie jak mikrokontrolery TMS320F28x, nie oferują porównywalnych parametrów. Dyskusja kończy się na temat zastosowania analizatorów audio do testowania wyników, co wywołuje kontrowersje dotyczące adekwatności takich pomiarów.
Podsumowanie wygenerowane przez model językowy.
REKLAMA