Rozpoczęcie pracy z SigmaDSP – podobnie jak z każdym innym procesorem – wymaga jedynie (!) zestawu uruchomieniowego z programatorem/debuggerem oraz czasu na zapoznanie się z dokumentacją układu i środowiska programistycznego. Zastosowane przez Analog Devices podejście oparte na „graficznym programowaniu” procesorów przy użyciu środowiska narzędziowego SigmaStudio zapewnia w pełni intuicyjne tworzenie aplikacji DSP. Proces przebiega w sposób identyczny do rysowania schematu blokowego, odzwierciedlającego przepływ rzeczywistego sygnału audio, a w większości przypadków polega wręcz na zestawianiu połączeń pomiędzy urządzeniami – takimi jak miksery, filtry, korektory, kompresory, ograniczniki – dokładnie tak, jak ma to miejsce podczas konfiguracji fizycznego systemu audio. „Program” rysowany jest z dostarczonych przez producenta, udokumentowanych (mniej lub bardziej szczegółowo) i sprawdzonych bloków funkcjonalnych, od najprostszych (typu sumowanie sygnału), aż do złożonych (typu Pitch Transposer, Noise Cancelling lub Beam Forming). Po połączeniu bloków w aplikację wystarczy załadować wynik kompilacji do procesora i… gotowe.
Umożliwia to zastosowanie procesorów Sigma DSP przez osoby niemające obeznania z asemblerem, językiem C, a – co bardzo ważne – do rozpoczęcia pracy nie jest też konieczna zaawansowana wiedza w zakresie cyfrowego przetwarzania sygnału. Przed opracowaniem omawianego ekosystemu ADI klasyczne programowanie DSP ograniczone było do wąskiego grona specjalistów, posiadających zarówno szerokie umiejętności programistyczne, jak i znajomość zaawansowanego aparatu matematycznego. Pozostali – np. realizatorzy, muzycy czy konstruktorzy DIY, nieposiadający tej wiedzy, ale doskonale znający metody i używane do obróbki sygnału urządzenia – skazani byli na korzystanie z gotowych rozwiązań bazujących na DSP, co dzięki procesorom rodziny ADAU i środowisku SigmaStudio uległo diametralnej zmianie.
Obecnie oferta SigmaDSP składa się z kilkunastu układów należących do kilku rodzin. Zestawienie wybranych procesorów, wraz z porównaniem najważniejszych parametrów, zaprezentowano w tabeli 1.
Reprezentatywnym przedstawicielem układów z wbudowanym kodekiem audio jest model ADAU1701, występujący też w wersji z mniejszą pamięcią programu – ADAU1702. Budowę wewnętrzną ADAU1701 pokazano na rysunku 1.
Jakość wbudowanych przetworników AD/DA jest wystarczająca i w większości przypadków aplikacyjnych umożliwia rezygnację z układów zewnętrznych – o ile wystarczą nam dwa kanały analogowe wejściowe i cztery wyjściowe (THD+N > 83 dB, SN > 100 dB).
ADAU1701 – oprócz wbudowanych przetworników AD/DA – ma także elastycznie konfigurowany, cyfrowy interfejs szeregowy. Maksymalna częstotliwość próbkowania może wynosić 192 kHz przy rozdzielczości 24 bitów. DSP pracuje w trybie synchronicznym, taktowanym kwarcem lub zewnętrznym sygnałem zegarowym pozyskanym z interfejsu cyfrowego, niestety bez możliwości konwersji częstotliwości próbkowania pomiędzy cyfrowymi kanałami wejściowymi i wyjściowymi (układ pozbawiony jest modułu konwertera częstotliwości próbkowania ASRC). Interfejs cyfrowy daje możliwość wymiany danych w typowych formatach I²S (LJ, RJ) i TDM (multipleksowanie czasowe kilku kanałów). Interfejs kanałów wyjściowych może być skonfigurowany w trybie master – wtedy ADAU1701 generuje przebiegi taktujące BCLK/LRCK (maksymalnie przetwarzanie do 96 kHz) – lub w trybie slave, w którym za generowanie przebiegów odpowiada współpracujący układ (do 192 kHz). Interfejs szeregowy umożliwia połączenie z zewnętrznymi przetwornikami AD/DA, kodekami audio, odbiornikami/nadajnikami SPDIF, konwerterami ASRC, cyfrowymi mikrofonami MEMS lub z cyfrowymi końcówkami mocy.
ADAU1701 wyposażony jest tryb pracy Selfboot, umożliwiający samodzielną pracę DSP bez zewnętrznego procesora sterującego. W trybie tym konfiguracja oraz parametry są odczytywane i zapisywane do zewnętrznej pamięci EEPROM I²C. Aby tryb pracy samodzielnej był bardziej elastyczny i umożliwiał interakcje z użytkownikiem, procesory wyposażone są w programowane linie GPIO oraz wbudowany, uniwersalny przetwornik AD o rozdzielczości 8 bitów. Takie rozwiązanie ułatwia podłączenie typowych elementów manipulacyjnych, takich jak przełączniki, enkodery czy potencjometry, co upraszcza opracowywanie aplikacji czułych na koszty BOM.
Reasumując, możemy stwierdzić, że ADAU1701 to pełnoprawny SoC Audio, znacząco upraszczający projekt urządzenia. Pomimo kilku ograniczeń układ jest chętnie stosowany w konstrukcjach DIY. W zasadzie jest to procesor „pierwszego wyboru” z rodziny SigmaDSP – tym bardziej że występuje w lutowalnej „amatorsko” obudowie LQFP48 o rastrze 0,5 mm, która przy odpowiedniej aplikacji umożliwia realizację układu na taniej, dwustronnej płytce drukowanej.
Popularnym wyborem, ale delikatnie ustępującym najnowszym rozwiązaniom, są układy z serii ADAU144x. Strukturę wewnętrzną ADAU144x pokazano na rysunku 2. Układy pozbawione są wbudowanych przetworników AD/DA, obsługują jednak tryb autonomiczny Selfboot oraz oferują rozbudowany interfejs GPIO z przetwornikiem AD o rozdzielczości zwiększonej do 10 bitów. Procesory z omawianej rodziny wyposażone są w zwiększoną pamięć i taktowany szybszym zegarem rdzeń DSP o podwyższonej wydajności, a struktura uzupełniona jest dodatkowo w sprzętowy układ wielokanałowego konwertera częstotliwości próbkowania ASRC (zależnie od układu: w ADAU1442 – 16 kanałów, 8 domen zegarowych, zaś w ADAU1445 – 16 kanałów, 2 domeny zegarowe; najtańszy ADAU1446 pozbawiony jest bloku ASRC). Blok ASRC umożliwia bezpośrednią współpracę ze źródłami audio o różnych częstotliwościach próbkowania, a krosownica sygnału FARM umożliwia elastyczne konfigurowanie sygnałów z różnych domen zegarowych. Istotnym wyposażeniem układów jest wbudowany, kompletny odbiornik i nadajnik sygnału w standardzie SPDIF (96 kHz), eliminujący konieczność zastosowania zewnętrznych układów WM/CS/DIX blokujących zasoby interfejsów cyfrowych DSP (należy pamiętać, że model ADAU1446 jest pozbawiony bloku SPDIF). Układy ADAU144x mają także konfigurowalny sprzętowo, buforowany generator sygnału zegarowego, ułatwiający współpracę z układami wymagającymi sygnału MCLK (np. z przetwornikami DAC).
Kilka dostępnych typów układów umożliwia precyzyjne dopasowanie do potrzeb konkretnej aplikacji i pozwala zaoszczędzić kilka dolarów, jeżeli użycie ASRC lub SPDIF nie jest konieczne. Procesory ADAU144x są wzajemnie kompatybilne „w górę”. Układy dostępne są w obudowach TQFP/LQFP100 o rastrze wyprowadzeń 0,5 mm, wyposażonych we wkładkę radiatorową.
Zarówno ADAU1701, jak i ADAU144x wykonują obliczenia w rozdzielczości 28 bitów (format 5.23) w trybie normalnym i 56 bitów w trybie podwójnej precyzji – wybór trybu pracy zależy od konfiguracji bloków programu.
Rodziny: ADAU145x oraz jej rozbudowana kontynuacja ADAU146x, ze względu na wspólne cechy, mogą zostać omówione razem. Podstawowe cechy okazują się identyczne, a same procesory są zamienne w „górę”, podobnie jak rodzina ADAU144x. Strukturę wewnętrzną ADAU146x zaprezentowano na rysunku 3. Najważniejszą jej cechą jest rozbudowana pamięć i dwukrotnie zwiększona wydajność. W zależności od potrzeb można dobrać układ „pełnowymiarowy” bądź dostępny w wersji ekonomicznej (z mniejszym rozmiarem pamięci, niższym taktowaniem rdzenia i okrojonym blokiem ASRC/SPDIF). Układy ADAU145x/6x także pozbawione są przetworników AD/DA. Interfejs cyfrowy rozszerzony został do 48 kanałów, nieporównywalnie większa jest też elastyczność konfiguracji trybów pracy, co zwększa zakres możliwych do zastosowania przetworników AD/DA. Istotną zmianą jest rozbudowa interfejsu komunikacyjnego SPI/I²C, który w ADAU145x/146x rozdzielony został na osobne interfejsy master i slave. Umożliwia to nie tylko komunikację z DSP w celu konfiguracji lub obsługi trybu Selfboot, ale także (w trybie master) konfigurację współpracujących układów, np. przetworników AD/DA lub współpracę z zewnętrzną pamięcią SPI RAM/Flash bezpośrednio przez procesor DSP (np. w celu uzyskania bardzo długich opóźnień cyfrowych sygnału).
Podobnie jak poprzednicy, omawiane procesory oferują tryb pracy samodzielnej Selfboot, pracujący tym razem z pamięcią zewnętrzną EEPROM – nie tylko poprzez interfejs I²C, ale także SPI, co zdecydowanie przyspiesza ładowanie programu i umożliwia stosowanie pamięci o poszerzonej adresacji. Wyprowadzenia cyfrowe interfejsu GPIO oraz wejścia przetwornika AD zostały rozdzielone AD – linie konwertera AD GPIO wyprowadzone są na dedykowane piny ADAU145x/6x. W przypadku ADAU1463/67 dodatkowo powiększony został interfejs GPIO (z 14 do 26 wyprowadzeń), co przydaje się w aplikacjach samodzielnych. Wszystkie układy z rodziny ADAU145x/146x oferują wbudowany, konfigurowany programowo układ generujący sygnał zegarowy. Procesory ADAU145x/146x wykonują obliczenia w rozdzielczości 32 bitów (format 8.24) w trybie normalnym i 64 bitów w trybie podwójnej precyzji.
Układy zamknięte są w niewielkich obudowach LFCSP72 o rozmiarach 10×10 mm i rastrze wyprowadzeń 0,5 mm. Dostępne w ramach omawianej rodziny układy ADAU1463/1467, o zwiększonej do 26 liczbie wyprowadzeń GPIO, zamknięte są w obudowach LFCSP88 12×12 mm.
Warto też wspomnieć o procesorach ADAU1772, ADAU1777, ADAU1778, które mają wbudowany rdzeń DSP zgodny z SigmaDSP, ale przez producenta nie są wymieniane na liście procesorów SigmaDSP. W istocie są to... kodeki audio z wbudowanym rdzeniem DSP.
Wysoka integracja oraz miniaturowe obudowy LFCSP, WLSCP pozycjonują układy głównie w obszarze zastosowań mobilnych. Szybkie rdzenie DSP (ADAU1788) o niskiej latencji umożliwiają realizację m.in. energooszczędnych układów aktywnego tłumienia hałasu, wbudowanych w zestawy słuchawkowe – co ważne, jest to możliwe przy zachowaniu bardzo małych rozmiarów układu, co ma pierwszorzędne znaczenie w aplikacjach mobilnych. Przykładowo układ ADAU1788 ma obudowę WLSCP o wymiarach 2,695×2,3 mm z rastrem 0,35 mm. Niestety, pomimo ciekawych parametrów, układy nie nadają się do samodzielnego wykorzystania w konstrukcjach DIY.
Oczywiście do każdego z wymienionych układów dostępny jest oficjalny zestaw uruchomieniowy – za zestaw z programatorem trzeba zapłacić kilkaset złotych. Korzystając z alternatywnych płytek uruchomieniowych, należy nabyć programator USBi w cenie ok. 500 złotych, niestety jest to sporo więcej niż w przypadku większości podstawowych programatorów do klasycznych procesorów STM32 czy AVR. Przykładowy zestaw uruchomieniowy na bazie ADAU1466 pokazano na fotografii tytułowej.
Każdy z opisanych procesorów współpracuje z środowiskiem SigmaStudio (rysunek 4), co jest najważniejszą cechą układów i jednocześnie ich największym atutem. Oprogramowanie narzędziowe SigmaStudio (aktualna wersja 4.7) jest udostępnione za darmo, wymaga jedynie rejestracji na stronie producenta. Jak wspominałem wcześniej, jest to środowisko graficzne, w którym „rysujemy” schemat z gotowych, parametryzowanych bloków funkcjonalnych. Zwalnia to programistę z konieczności żmudnego opanowywania asemblera DSP i zagłębiania się w tony dokumentacji. Dzięki niewielkiemu nakładowi sił potrzebnych na opanowanie „programowania” SigmaDSP, możliwa jest realizacja nawet złożonych, jednostkowych projektów, w bardzo krótkim czasie.
W tym miejscu kończę skrótowe przedstawienie procesorów SigmaDSP i zachęcam do pobrania i instalacji SigmaStudio przed publikacją kolejnego odcinka naszego kursu.
Adam Tatuś, EP