DSP - procesory sygnałowe procesory sygnałowe

Wprowadzenie do procesorów sygnałowych


Po co wymyślono procesory sygnałowe?

Nasze otoczenie jest pełne sygnałów analogowych, takich jak dźwięki i światło. Możemy używać elektronicznych czujników, aby zamienić sygnały analogowe na elektryczne. Możemy następnie przekształcić je na liczby przetwarzane przez komputer. Ten proces nazywany jest konwersją analogowo-cyfrową (ang. analog-to-digital conversion) lub A/C (ang. A/D).

Do obróbki sygnałów cyfrowych może być użyty każdy procesor, jak np. procesory rodzin Motorola 68000 czy Intel i86. Jednak układy powszechnego użytku nie posiadają wbudowanych elementów, koniecznych do wydajnego przetwarzania.


Dlaczego są takie ważne?

W nowoczesnych systemach komputerowych do obróbki sygnałów cyfrowych zwykle używa się mikrokomputerów jednoukładowych. Ten specjalizowany układ nazywany jest procesorem sygnałowym (ang. digital signal processor) lub w skrócie DSP. DSP w jednym układzie scalonym zawiera układ kontroli, matryce pamięci, jednostkę arytmetyczno-logiczną (ALU) z układem mnożącym (ang. multiplier) i układy współpracy z otoczeniem.

DSP znalazły zastosowanie w:

  • odtwarzaczach CD
  • telefonach komórkowych
  • kontrolerach napędów dysków
  • faksach
  • modemach

Przykład zastosowania w telefonii komórkowej:
Zaprojektowane do wykorzystania w uchwytach dla telefonów i zestawach głośnomówiacych DSP zawiera zintegrowane układy oraz zapisany w ROM'ie program, aby zapewnić użytkownikom możliwość komunikacji podczas bezpiecznego prowadzenia pojazdu.


Czym różnią się od innych procesorów?

Procesory sygnałowe posiadają kilka cech (niespotykanych w innych procesorach), zapewniających wysoką wydajność:

  • równoległe mnożenie z akumulacją, wykonywane w jednym cyklu
  • generatory adresu ze specjalizownanymi trybami
  • wydajny zestaw instrukcji z jednocyklowymi równoległymi operacjami matematycznymi i przesłań w pamięci oraz sprawną realizacją pętli
  • zintegrowany wewnętrzny koprocesor DMA i RAM dla jednoczesnych operacji wykonywanych przez CPU i układy we/wy

Generalny podział procesorów sygnałowych dokonuje się na kategorie:


Architektura

Procesory DSP są wykonane w architekturze Harvard. Ten typ architektury powstał, aby przyspieszyć przepływ dużych ilości danych.

Glówne elementy typowego DSP to:

Rdzeń procesora składa się z:


Reprezentacja danych

Procesory stałoprzecinkowe (ang. fixed-point) używaja ułamkowej (ang. fractional) reprezanacji danych dla wszystkich operacji. Istnieją trzy typy operandów: słowowy (word), słowowy długi (long word) i akumulatorowy (accumulator). Przecinek dziesiętny jest wyrównany do lewej strony. Do procesorów stałopozycyjnych należ np. rodziny Texas Instruments TMS320C2xx, C5x, C54x (16-bitowe), rodzina Motorola 5600x (24-bitowe).

Typ Reprezentacja danej Reprezentacja szesnastkowa Reprezentacja dziesiętna
WORD 16-bit S.Ułamek od FFFF do 7FFF od -1 do 1-2-15
LONG WORD 32-bit S.Ułamek od FFFF FFFF do 7FFF FFFF od -1 do 1-2-31
accumulator GB S.Ułamek od FF FFFF FFFF do 00 7FFF FFFF od -1 do 1-2-31
S - Sign Bit (bit znaku)
GB - Guard Bits (nie dopuszczają do przpełnienia)

Procesory zmiennoprzecinkowe (ang. floating-point) używają zarówno reprezentacji stałoprzecinkowej, jak i zmiennoprzecinkowej. Do procesorów zmiennopozycyjnych należą np. rodziny Texas Instruments TMS320C3x, C4x, rodzina Motorola 96000 oraz rodzina AT&T DSP32.


Model programowy i dedykowane operacje

Z punktu widzenia programisty jednostka arytmetyczno-logiczna może być przedstawiona jako kilka pracujących równolegle elementów.

Procesory sygnałowe zawierają arytmetykę z nasyceniem (ang. saturation) oraz z zaokrągleniem (ang. rounding).

Podstawy stałoprzecinkowego dodawania i odejmowania są takie same, jak liczb całkowitych.

Dedykowane operacje na przykladzie Motorola 56000:

Mnemonik Działanie Opis
ADD Y, A A:=A+Y Dodawanie
MPY X0, Y0 A:=XO*Y0 Mnożenie
MAC X0, Y0 A:=A+(X0*Y0) Mnożenie z akumulacją

Zestaw instrukcji

Zestaw instrukcji procesorów sygnałowych zawiera wiele instrukcji zaimplementowanych procesorach ogólnego przeznaczenia. Dlatego programowanie obu typów procesorów jest bardzo podobne. Dotyczy to podstawowych instrukcji arytmetycznych, logicznych, manipulacji bitami i sterujących.

Ważną cechą procesorów DSP jest wysoki stopień zrównoleglenia, który pozwala na wykonywanie kilku operacji w jednym cyklu instrukcyjnym. Jest to bardzo pomocne w przetwarzniu liczb i sygnałów, gdzie wykonuje się wiele obliczeń. Procesor oferuje równoległe operacje w ALU, AGU i w jednostce sterującej, np:

  • pobranie instrukcji
  • dekodowanie instrukcji
  • operacje arytmetyczne na danych
  • przesłąnia danych

Specyficzne dla DSP są sprzętowe pętle, jednocyklowe mnożenie z akumulacją, równoległe przesyłanie danych i bardzo elastyczne tryby adresowania.


Specjalne tryby adresowania

Zestaw instukcji zawiera duży zestaw trybów adresowania. Wiele instrukcji ALU jest wykonywanych na rejestrach, co pociąga za sobą możliwość równoległych przesłań pomiędzy rejestrami z pamięcia. Najważniejszymi odwołaniami do pamięci są tryby adresownia rejestrowego pośredniego.
Wszystkie pośrednie odwołania do pamięci wymagają rejestru adresowego. Niektóre tryby adresowania pośredniego rejestrowego wymagają rejestru modyfikatora do wyliczenia adresu.

Typowe tryby adresowania rejestrowego pośredniego to:

  • liniowe, np.:
    • bez modyfikacji adresu
    • postinkrementacji o 1
    • postdekrementacji o 1
    • predekrementacji o 1
    • indeksowanie przez offset
  • modulo (pozwala na implementację bufora kołowego)
  • bit-reversed (użyteczne przy szybkej transformacie Fouriera (FFT))

Specjalne instrukcje

Procesory sygnałowe dostarczają wielu specjalizowanych instrukcji. Najważniejsze z nich to instrukcje sprzętowych pętli.

Typowe instrukcje pętli, to:

  • do lool (wykonywana bez dodatkowych cykli)
  • repeat next (powtarze następną instrukcję bez ponownego pobierania jej z pamięci)
English verison Napisz do autora