SP5FCS
Adam
Liczba postów: 1,072
Dołączył: 02-02-2009
|
RE: Synteza SPHM DDS
Tablice z parametrami DSP
Po włączeniu zasilania modułu DSP należy załadować do niego odpowiedni zestaw parametrów według aktualnej modulacji oraz potrzeb operatora (kolor). Taki zestaw zawiera nastawy kilkudziesięciu parametrów określających sposób obróbki sygnału przez DSP. Każdy parametr jest wysyłany w postaci prostej ramki składającej się z 3 bajtów: nagłówka, numeru parametru i wartości parametru, np. 7E 09 00 to polecenia wyłączenia kompresora.
Przykładowy zestaw parametrów dla jednego koloru:
Kod:
0x7E,0x09,0x00, 0x7E,0x07,0x00, 0x7E,0x04,0x00, 0x7E,0x03,0x00,
0x7E,0x01,0x00, 0x7E,0x05,0x00, 0x7E,0x0B,0x01, 0x7E,0x0C,0x00,
0x7E,0x0D,0x04, 0x7E,0x0E,0x03, 0x7E,0x15,0x60, 0x7E,0x16,0x00,
0x7E,0x17,0x5A, 0x7E,0x18,0x00, 0x7E,0x19,0x64, 0x7E,0x1F,0x8A,
0x7E,0x20,0x06, 0x7E,0x29,0x14, 0x7E,0x2A,0x3C, 0x7E,0x2B,0x00,
0x7E,0x2C,0x01, 0x7E,0x2D,0x00, 0x7E,0x2E,0x02, 0x7E,0x2F,0x01,
0x7E,0x33,0x67, 0x7E,0x34,0x03, 0x7E,0x35,0x51, 0x7E,0x36,0x64,
0x7E,0x37,0x00, 0x7E,0x38,0x27, 0x7E,0x39,0x08, 0x7E,0x3A,0x48,
0x7E,0x3E,0x8E, 0x7E,0x3F,0x96, 0x7E,0x41,0x98, 0x7E,0x43,0x87,
0x7E,0x44,0x68, 0x7E,0x45,0x14, 0x7E,0x47,0x64, 0x7E,0x48,0x2A,
0x7E,0x4A,0x00, 0x7E,0x4B,0x00, 0x7E,0x4C,0x15, 0x7E,0x4D,0x28,
0x7E,0x51,0x3C, 0x7E,0x52,0x06, 0x7E,0x53,0x96, 0x7E,0x54,0x99,
0x7E,0x55,0x64, 0x7E,0x5B,0x06, 0x7E,0x5C,0x00, 0x7E,0x5F,0x00,
0xFF
Wadą oryginalnego zapisu parametrów z Picastara jest utrudniona edycja parametrów bezpośrednio w sterowniku. Pozycja parametru w ramce może się zmieniać dlatego trzeba odszukiwać gdzie w niej jest określony parametr i tam go zapisywać po edycji. Zaletą jest możliwość określania jakie parametry będą zmieniane, jeśli dany parametr jest w ramce parametrów to będzie ustawiany. Daje to duże możliwości indywidualnej konfiguracji parametrów DSP na każdym kolorze.
W moim rozwiązaniu chciałem zachować powyższe zalety eliminując niedogodności dotyczącą edycji parametrów w sterowniku.
W sterowniku XmegaTFT zastosowałem inny zapis parametrów. Każda tablica koloru/modulacji (256 bajtów) składa się z dwóch sektorów po 128 bajtów. Rozmiar tablicy 128 wynika z wielkości sektora pamięci 24C512.
1/ Pierwszy sektor zawiera tablicę nastaw wszystkich parametrów DSP. Adres w tablicy jest numerem parametru wg. opisu Picastar (0x00-wolny, 0x01-denoiser, 0x02-noise blanker, ..... 0x5B-poziom compresora). W parametrach ON/OFF pod określonym adresem wstawiamy (0-off, 1-on), przy parametrach zmiennych nastawę parametru. Parametry kończą się na adresie 0x67-squelch, reszta tablicy jest wolna. Edycja tej tablicy polega na wpisaniu pod adres parametru wymaganej wartości dla danej modulacji oraz koloru.
2/ Drugi sektor zawiera listę parametrów które będą ustawiane dla danego koloru. Jeśli tablica zaczyna się bajtami: 0x09,0x07,0x04,0x03 to oznacza że ustawiany najpierw jest compresor on/off, potem vox on/off, auto notch on/off, noise blanker on/off itd. Taki układ pozwala indywidualnie dobierać ustawiane parametry, zmieniać dowolnie ich ilość i kolejność w tablicy. Rozkazy blokowania/odblokowania przeliczeń DSP są dodawane automatycznie przez program sterownika. Program nie sprawdza poprawności zakresów nastaw, musimy sami tego pilnować.
Poniżej mamy fragmenty sektorów zawierające pierwsze 16 bajtów:
Kod:
flash char code_dsp_parametry[] = {
0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x04,0x03,0x00, //00
flash char code_dsp_rozkazy[] = {
0x09,0x07,0x04,0x03,0x01,0x05,0x0B,0x0C,0x0D,0x0E,0x15,0x16,0x17,0x18,0x19,0x1F,
Jak to działa ? Program pobiera z wybranej tablicy z drugiego sektora pierwszy bajt w którym jest zawarty numer ustawianego parametru. Według pobranego numeru pobiera nastawę z pierwszego sektora, składa ramkę z 3 bajtów i wysyła do DSP. Po wysłaniu ramki pobiera kolejny bajt z drugiego sektora i wysyła kolejną ramkę z nastawę i itd. aż trafi na parametr o numerze 0xFF który jest znakiem końca listy ustawianych parametrów. Program wczytuje maksymalnie 64 bajty z listy. Podczas edycji parametrów w setupie nie ma problemu z odszukaniem odczytem/zapisem wybranego parametru. Mamy zatem parametry w postaci regularnej tablicy i swobodę ustalania listy ustawianych parametrów.
Kończąc opis obsługi modułu DSP chciałbym szczególnie podziękować Kolegom: Darkowi SQ5KHA, który rozpracował oryginalny moduł DSP z PicaStara, wykonał nowy projekt druku oraz dokładnie opisał wykorzystywaną listę parametrów DSP oraz Koledze Piotrowi SP9FKP który jest pomysłodawcą wykorzystania DSP w Husarku oraz wykonał wersję z oprogramowaniem DSP w pamięci EPROM. Bez wsparcia i pomocy Kolegów z Grupy Husar tak szybkie zaimplementowanie obsługi DSP w sterowniku radia byłoby niemożliwe. To kolejny przykład rozwijania projektu w ramach współpracy grupowej.
73 Adam
|
|