Elektroda.pl
Elektroda.pl
X
Elektroda.pl
PCBway
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Karta dźwiękowa USB z mikroprocesorem PIC

Kubald 29 Mar 2013 22:02 6495 2
  • Karta dźwiękowa USB z mikroprocesorem PIC

    Idea stworzenia karty dźwiękowej z interfejsem USB opartej na mikrokontrolerze PIC zrodziła się po obserwacji dyskusji dotyczącej projektowania podobnych urządzeń odbywającej się na łamach forum Microchip USB. Karta dźwiękowa powstała wyłącznie w oparciu o układy produkcji Microchipa, natomiast oprogramowanie stanowi modyfikację udostępnionej przez Microchip platformy programistycznej dla USB – procesor jest sterowany poprzez przerwania, a nie – jak w tradycyjnych rozwiązaniach – przez odpytywanie cykliczne. Układ jest urządzeniem kompozytowym USB. Urządzenie posiada zaimplementowany standard USB Audio 1.0 i bazuje na interfejsie HID. Przyczyną stworzenia własnego interfejsu jest możliwość zaprogramowania numeru seryjnego urządzenia i aktualizacji oprogramowania procesora oraz umożliwienie w przyszłości obsługi nie będących bezpośrednio uwzględnionych w specyfikacji standardu USB Audio 1.0.

    Karta obsługuje częstotliwości próbkowania 48 kHz, 32 kHz lub 24 kHz, wybierane z poziomu systemu operacyjnego, a wielkość pojedynczej próbki wynosi 12 bitów. Jakość dźwięku jest zadowalająca i porównywalna z komercyjnymi urządzeniami, zwłaszcza, że maksymalne próbkowanie jest większe od wartości stosowanej w odtwarzaczach CD. Próbkowanie 44,1 kHz nie zostało uwzględnione – pociągnęłoby to za sobą trudności w tworzeniu oprogramowania dla procesora. Uwzględnione częstotliwości próbkowania są wielokrotnościami 1-milisekundowej ramki USB, co powoduje, że w każdej ramce przekazywana jest jednakowa ilość danych. Implementacja próbkowania 44,1 kHz pociąga konieczność analizowania przez kartę różnej wielkości danych przesyłanych w obrębie jednej ramki, co wymaga rozbudowania buforowania i synchronizacji, a także pociąga konieczność stosowania procesora o większej mocy obliczeniowej. Systemy Microsoft Windows automatycznie przekształcają w przypadku płyty CD częstotliwość próbkowania z 44,1 kHz na 48 kHz.

    Schemat całości można zobaczyć poniżej:

    Karta dźwiękowa USB z mikroprocesorem PIC

    Sercem karty dźwiękowej jest mikroprocesor PIC18F2550, wyposażony w interfejs USB. Procesor jest taktowany częstotliwością 48 MHz, co jest maksymalną wartością dla tego typu układu i stanowi jednocześnie wielokrotność częstotliwości próbkowania. Procesor, za pomocą magistrali SPI, komunikuje się z dwoma 12-bitowymi przetwornikami cyfrowo-analogowymi typu MCP4822. Głośność regulowana jest za pomocą dwu cyfrowych potencjometrów typu MCP41010, komunikujących się z procesorem przez osobną magistralę SPI, wykorzystując bitbanging. Powodem takiego rozwiązania jest możliwość traktowania regulacji głośności w oprogramowaniu procesora z innym priorytetem, niż przekazywanie próbek na wyjście. Sygnał wyjściowy karty dźwiękowej wzmacniany jest za pomocą wzmacniacza operacyjnego MCP6022.

    Wzmacniacz MCP6022 ma wystarczająco dużą moc wyjściową, aby do karty podłączyć bezpośrednio choćby tanie słuchawki i słuchać muzyki bez specjalnych zniekształceń. Słuchawki, których używał autor miały impedancję około 25Ω. Wzmacniacz ma zbyt małą moc, aby przyłączać do niego bezpośrednio głośniki 4Ω czy 8Ω. Autor ostrzega też, że przy zbyt dużej głośności mogą pojawiać się zniekształcenia nieliniowe, ponieważ użyty wzmacniacz operacyjny jest typu rail-to-rail. Ponieważ interfejs USB zapewnia zasilanie niesymetryczne napięciem +5V, zrezygnowano z kodowania 16-bitowego typu PCM, które pociągałoby za sobą konieczność stosowania zasilania symetrycznego. Średni poziom sygnału wyjściowego ustalona jest programowo na 2,5V.

    Cyfrowe potencjometry podłączane są do sygnału wyjściowego, na drugie wejściu potencjometru podawane jest stałe napięcie 2,5V – bias. Ułatwia to zmiany amplitudy sygnału względem wartości średniej podczas zmniejszania czy zwiększania głośności. W wersji prototypowej napięciem odniesienia był potencjał masy.

    Oprogramowanie karty dźwiękowej obejmuje kod procesora, bibliotekę w C++ implementującą obsługę interfejsu HID i WinUSB oraz możliwość zmiany oprogramowania procesora z poziomu linii komend. Autor udostępnia kody źródłowe.

    Podczas testów autor skupił się na kwestiach szumu, jitteru (drgań) i dokładności generowanego sygnału. Do pomiarów wykorzystano oprogramowanie Audicity, które generowało 20-sekundowe tony odpowiadające konkretnej częstotliwości. Sygnał wyjściowy nagrywany był za pomocą 24-bitowej karty Sigmatel o próbkowaniu 96 kHz. Urządzenie było porównywane z komercyjną, 16-bitową kartą dźwiękową USB Turtle Beach Audio Advantage. Wyniki pomiarów można zobaczyć poniżej (prezentowana karta dźwiękowa po lewej, karta komercyjna po prawej, częstotliwości kolejno 1, 4 i 20 kHz, sygnał sinusoidalny):

    Karta dźwiękowa USB z mikroprocesorem PICKarta dźwiękowa USB z mikroprocesorem PIC

    Karta dźwiękowa USB z mikroprocesorem PIC Karta dźwiękowa USB z mikroprocesorem PIC

    Karta dźwiękowa USB z mikroprocesorem PIC Karta dźwiękowa USB z mikroprocesorem PIC

    Jak widać, wraz ze wzrostem częstotliwości generowanego sygnału, pojawia się coraz więcej niepożądanych składowych. Do częstotliwości około 12 kHz karty cechują się zbliżoną charakterystyką, powyżej tej wartości prezentowana karta zaczyna niestety wypadać coraz gorzej. Oznacza to więc, że stworzenie dobrej jakości karty dźwiękowej USB nie jest zadaniem łatwym.

    Na stronie źródłowej znaleźć można schemat i projekt płytki drukowanej w formacie Eagle, kody źródłowe, szczegóły dotyczące działania oprogramowania – zarówno dla komputera, jak i procesora – oraz informacje nt. poziomu szumów prezentowanej karty dźwiękowej.

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    Specjalizuje się w: spektroskopia exafs/xanes, uc, it
    Kubald napisał 192 postów o ocenie 59, pomógł 0 razy. Mieszka w mieście Kraków. Jest z nami od 2004 roku.
  • PCBway
  • #2
    mdm150
    Poziom 26  
    Zapewne autor chciał pokazać że można na mikroprocku też zrealizować, a nie tylko na jakiś tam pcm'ach.
  • PCBway