Witam Was kochani, mam na imię Grzegorz i pragnę zabrać Was w świat cyfrowego przetwarzania sygnałów (ang. digital signal processing). Dziedzina ta jest szaleni istotna we współczesnej elektronice cyfrowej. W publikacji tej przedstawię w skrócie zaprojektowaną, wykonaną i oprogramowaną platformę do pracy z sygnałami analogowymi przetwarzanymi w sposób cyfrowy. To wszystko dla potomnych! Projekt wykonany w całości przez autora tego post, wykorzystuje procesor sygnałowy pochodzący z telefonu komórkowego Nokia 5510. Z takiego cuda dokładnie:
Pracę nad projektem rozpoczęto od narysowanie schematu blokowego, który przedstawiono poniżej. Można wyróżnić cztery bloki.
Blok PSU (ang. Power Supply Unit) odpowiada za zasilanie układów. Dostarcza napięć +3V3A, +3V3D oraz 1V6. Napięcia 3V3 analogowe (A) oraz cyfrowe (D) zasila peryferia procesora DSP oraz pozostałe układy. Napięcie 1V6 wykorzystano do zasilenia rdzenia (ang. core) procesora.
Blok AUDIO I/O to wejścia oraz wyjścia sygnału analogowego. Płyta posiada wejścia LINE-IN i mikrofon oraz wyjścia LINE-OUT i słuchawki.
Blok CODEC to układ kodeka, który został pozyskany ze wspomnianego telefonu komórkowego. Układ ten to
TLV320AIC23 posiadający przetwornik ADC oraz DAC o rozdzielczości do 32 bitów (długość słowa).
Blok DSP przedstawia procesor sygnałowy
TMS320VC5416.
Ogólnie, tor cyfrowego przetwarzania sygnału analogowego przedstawia poniższy rysunek. Procesor sygnałowy operuje na sygnale cyfrowym a ściśle mówiąc na próbkach pobranych w dyskretnych momentach czasu z sygnału analogowego. Jak zapewne domyślacie się, w świecie cyfrowym nie jest możliwa operowanie na sygnałach ciągłych, gdzie dana wartość reprezentowana jest przez nieskończoną ilość "próbek". Filtry przedstawione na poniższym rysunku, ogólnie mówiąc wpływają na jakość sygnału i nie zostaną tutaj omówione.
Aby było możliwe wierne odtworzenie spróbowanego sygnału z postaci cyfrowej do analogowej (DAC) należy sygnał analogowy próbkować z częstotliwością
fs=1/Ts minimum dwukrotnie większą od najwyższej częstotliwości składowej (harmonicznej) w sygnale, który poddano operacji próbkowania (ADC).
Schematy ideoweSchematy układów zostały zaprojektowane w oparciu o dostępną dokumentację oraz przykładowe rozwiązania udostępnione przez producenta procesora oraz układu kodeka. Jest to pierwsza wersja schematów nie pozbawiona błędów.
Płyta PCBPłyta o wymiarach (100x100+/-0.01)mm zaprojektowano w oparciu o dwie warstwy dolną oraz górną, które są rozdzielone dielektrykiem.
Zmontowany układMontażu dokonano w sposób manualny. Wykorzystano technologię hot-air oraz zwykłą lutownicę z odpowiednim grotem do montażu elementów THT. Montażu dokonano sekcjami. W pierwszej kolejnością zmontowano obwody odpowiedzialne za zasilania. Po wykonaniu pomiarów napięć/prądów na wyjściu przystąpiono do montażu pozostałych sekcji.
OprogramowanieWykorzystany procesor sygnałowy TMS320VC5416 należy odpowiednio skonfigurować aby było możliwe wgranie programu. Szczegóły znajdują się w dokumentacji udostępnionej przez producenta. W projekcie nie wykorzystano zewnętrznej pamięci na program. Argumenty jakie za tym stoją to wysoka cena pamięci (zwłaszcza produkcja seryjna), podczas pisania i testowania oprogramowania platforma podłączona jest do zasilania a program wgrywamy niekiedy setki razy. Dlatego postanowiono wykorzystać ulotną pamięć SARAM (single-access random access memory), która jest dostępna w procesorze. Należy liczyć się z tym, że po odłączeniu zasilania zapisane dane we wskazanych obszarach panięciu zostaną utracone.
Oprogramowanie napisano w środowisku Code Composer Studio 5.5.0. Jest to ostatnia wersja CCS, która wspiera rodziną C54xx. Komunikację między komputerem a płytą ewaluacyjną zestawia JTAG XDS100v2.
"Hello World!" w świecie DSP to przepisanie sygnału wejściowego na wyjście procesora sygnałowego, czyli prosta operacja przypisania wartości jednej zmiennej do drugiej
kanał_lewy_out = kanał_lewy_in. Do napisania oprogramowania wykorzystano biblioteki CSL (Chip Support Library dla C54xx) oraz przykładowe projekty udostępnione przez producenta.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Dwie zdefiniowane w programie struktury odpowiedzialne są za konfigurację potów McBSP. Układ kodeka wysterowany jest z poziomu procesora DSP po magistrali SPI. Przesyłanie próbek sygnału cyfrowego pomiędzy procesorem a układem kodeka zrealizowano w oparciu o szybką magistralę McBSP (DSP mode). Schemat blokowy aplikacji przedstawiono na poniższym rysunku.
RezultatW efekcie otrzymano platformę, która daje możliwość cyfrowej obróbki sygnałów analogowych, operując na ich cyfrowych reprezentacjach. Na poniższym rysunku przedstawiono działanie programu.
Jednak to tylko malutki fragment możliwości jakie oferuje platforma. Uruchomiłem już na tej platformie filtr cyfrowy FIR górno/dolno przepustowy. Działa pięknie! Kolejny projekt z wykorzystaniem zaprezentowanej platformy to implementacja szybkiej transformaty Fouriera FFT (fast Fourier transform).