MIKROSYSTEMY POMIAROWE I PROCESORY SYGNAŁOWE

advertisement
MIKROSYSTEMY
POMIAROWE
I
PROCESORY
SYGNAŁOWE
mgr inż. Kazimierz Brydak
pok. bud. A 204
lab. bud. A 208
 17- 865-1438
Mikrosystemy (ang. MST - Micro Systems Technology) są to miniaturowe systemy pomiarowe i
wykonawcze, integrujące w skali mikro: czujniki pomiarowe, siłowniki, bloki cyfrowego przetwarzania
sygnałów i interfejsy cyfrowe. Technologia mikrosystemów należy do rewolucyjnych technologii XXI
wieku. Oparta jest najczęściej na mikro mechanicznych strukturach wykonywanych trójwymiarowo na
bazie półprzewodnikowych.
Umożliwia wykonanie:
 czujników wielkości fizycznych, chemicznych i biologicznych,
 mikro siłowników i systemów wykonawczych,
 elementów optycznych,
 elementów chemicznych,
 układów elektronicznych
System Pomiarowy
Systemem pomiarowym jest zbiór środków technicznych podporządkowanych wspólnemu celowi i
ogólnemu algorytmowi działania, przeznaczony do automatycznego uzyskiwania informacji
bezpośrednio z obiektu w celu przekształcenia, pomiaru, przetworzenia, utrwalenia i przedstawienia
w formie dostosowanej do wykorzystania przez człowieka oraz dla wprowadzenia do
zautomatyzowanego urządzenia sterującego.
Cyfrowym systemem pomiarowym jest zespół elementów (urządzeń lub bloków funkcjonalnych),
współpracujących ze sobą według określonego algorytmu, połączonych układem przesyłania
informacji, tzw. systemem interfejsu , przeznaczony do automatycznego uzyskiwania,
przetwarzania, rejestracji i prezentacji w pożądanej formie informacji pomiarowych.
Mikroprocesorowe Systemy Pomiarowe
Podstawowe jednostki funkcjonalne:
 jednostki wejścia/wyjścia (WE/WY)
 jednostki pamięci (pamięć instrukcji programu, pamięć danych)
 jednostki procesorów – procesor jednostki centralnej (CPU – ang.)
 szyny systemowe (t.j. szyna adresu, szyna danych, szyna sterująca)
szyna adresowa
Klawiatura
urządzenia
wejścia
Porty
Wejścia
Mikro
procesor
Pamięć
szyna danych
szyna sterująca
Podstawowa architektura systemu
mikroprocesorowego
Porty
Wyjścia
Wyświetlacz
urządzenia
wyjścia
Cyfrowe (dwustanowe),
wejścia i wyjścia
Przełączniki,
przyciski, ...
Analogowe wyjścia,
(sygnały napięciowe,
prądowe)
Analogowe wejścia
(sygnały napięciowe,
prądowe)
.....
.....
Przetworniki C/A
Przetworniki A/C
Analogowe wejścia
(sygnały napięciowe,
prądowe)
.....
Przetworniki A/C
pomocnicze
(pomiar zimnych
końców termopar)
Ogólny schemat mikroprocesorowego systemu pomiarowego
Mikroprocesor
+
procesor numeryczny
Interfejs
komunikacyjny
(RS232, RS485..)
RAM
(EEPROM)
Interfejs
sieciowe
(ethernet)
ROM
(FLASH ROM)
Myszka
Klawiatura
Plotter
Dysk
elastyczne
Dysk
optyczny R/W
Monitor
ekranowy
(graficzny)
Drukarka
(laserowa,
atram., term.)
Jednostki wejścia/wyjścia
8-bitowa wewnętrzna magistrala danych
Rejestr sterujący
PORT
C
PORT
B
PORT
A
Rejestr statusu
4
4
8
8
Przykładowy układ blokowy interfejsu urządzeń WE/WY cyfrowych dwukierunkowych - dedykowanych
w procesie prgramowania trybu pracy jednostki
Bufor trzy- stanowy:
wejście
(tabela stanów)
zezwolenie
wyjście
JEDNOSTKI PAMIĘCI
pamięci półprzewodnikowe
Pamięć o dostępie swobodnym RAM (random Pamięć tylko do odczytu - ROM
access memory), R/W
statyczne (flip-flop),
programowane maską (ROM),
dynamiczne (pojemnościowe)
programowane przez użytkownika (PROM),
kasowalne PROM (EPROM),
przeprogramowywane elektrycznie (EAROM)
adresowanie pamięci (metody):
 adresowanie bezpośrednie,
 adresowanie pośrednie,
 adresowanie indeksowe,
 adresowanie rejestrowe,
 stronicowanie pamięci,
 ........
hierarchia urządzeń pamięciowych:
AKUMULATOR
REJESTRY ROBOCZE
PAMIĘĆ PODRĘCZNA
RAM / ROM
Dyski Twarde
(magnetyczne)
Dyski Optyczne
Pamięci
taśmowe
(streamer)
Dyski elastyczne
organizacja wewnętrzna pamięci:
 monitor ROM,
 rozszerzenie ROM
 obszar roboczy klawiatury, displeya, urządzeń peryferyjnych, .....
 podstawowa pamięć RAM,
 rozszerzona pamięć RAM,
 obszary wolne,
 obszary rezerwowane
 obszary wymiany z innymi urządzeniami np. DMA (direct memory access)
 ........
Procesor jednostki centralnej:
zadania procesora:
 operacje transferu danych,
 operacje arytmetyczne,
 operacje logiczne,
 operacje skoków, odgałęzień,
 obsługa stosu, WE/WY, operacje sterowania grupowego,
podzespoły procesora:
 licznik programu,
 dekoder instrukcji,
 moduł zegarowy i sterujący,
 moduł jednostki arytmetyczno-logicznej ALU,
 zbiór rejestrów roboczych,
 ........




mikroprocesory jednoukładowe (zawierające ROM, RAM, WE/WY cyfr. i analogowe, wewn.
generator sygn. zegarowych, ...)
mikroprocesory zorientowane do ściśle wyznaczonych zadań (kontrolery),
mikroprocesory bitowo-okrojone ( do prac wielo-sekcyjnych),
.........
przykład architektury mikroprocesora:
(uproszczony schemat blokowy zawierający jednostkę ALU, Akumulator, rejestry robocze, szynę danych
we, szynę danych wy, moduł zegarowo/sterujący, ......)
a. Architektura Von Neumanna (pojedyncza
pamięć)
SZYNA ADR.
PAMIĘĆ
PROGRAMU
I
DANYCH
JEDNOSTKA
CENTRALNA
CPU
SZYNA
DANYCH
b. Architektura Harvardzka (podwójna pamięć)
SZYNA
ADR. PROGR.
SZYNA
ADR. DANYCH
CPU
PAMIĘĆ
PROGRAMU
PAMIĘĆ
DANYCH
SZYNA
DANYCH
SZYNA
PROGR.
c. Architektura super-Harvardzka (podwójna pamięć, pamięć
podręczna instrukcji, kontroler WE/WY)
SZYNA
ADR. PROGR.
PAMIĘĆ
PROGRAMU
SZYNA
PROGR.
CPU
instrukcje pam.
podręcznej
SZYNA
ADR. DANYCH
PAMIĘĆ
DANYCH
SZYNA
DANYCH
instrukcje i
drugorzędne dane
Kontroler
I/O
DANE
ZEWNĘTRZNE
Architektura procesorów Intel 80C51/52
Przerwania
zewnętrzne
Kontr.
Przerwań
Timer 0
4…64k
ROM
128/256
RAM
Timer 1
Kontr.
Magistral
Porty
WE/WY
SIO
We0
We1
CPU
Osc
TxD
P0
P2
P1
RxD
P3
Adresy/Dane
Organizacja pamięci
IRQ4
0023H
IRQ3
001BH
IRQ2
0013H
IRQ1
000BH
IRQ0
0003H
80C51
P1 P0
EPROM
ALE
ADDR
Latch
P3 P2
0000H
Reset
OE
System przerwań (wektor przerwań):
Dołączenie zewnętrznej pamięci programu.
Organizacja pamięci programu:
Przestrzeń pamięci
programu ROM
Organizacja pamięci programu ROM
FLASH/EE (big memory)
0FFFFh
obszar kodu programu
ładującego producenta
Zewn.
EPROM
obszar kodu programu
ładującego użytkownika
62kB kodu
użytkownika
EA=1
Wewn.
x kB
FLASH/EE
01FFFh
0000h
PSEN
EA=0
Zewn.
x kB
obszar kodu programu
użytkownika
0FFFFh
2 kB
0F800h
0F7FFh
6 kB
0E000h
0DFFFh
56 kB
0000h
Organizacja pamięci danych
0FFFFFFh
0FFFFFFh
Obszar
zewnętrznej
pamięci danych
(24-bit adres)
Obszar
zewnętrznej
pamięci danych
(24-bit adres)
000000h
000000h
CFG8xx.0=0
2 kB wewn.
pamięci danych
CFG8xx.0=1
Model programowy mikrosystemu
4 kB reprogr.
nieulotnej
pamięci danych
FLASH/EE
62kB reprogr.
nieulotnej
pamięci
programu
FLASH/EE
Rdzeń
8051/52
2304 bajty
RAM
obszar 128bajtów
rejestrów
specjalnych
SFR
8-kanałowy
12-bitowy
przetwornik
A/C
inne urządzenia
peryferyjne:
czujnik temp.
2 x 12-bit C/A
WDT
PSM
TIC
INSTRUKCJE PROGRAMOWE MIKROPROCESORA I80C51
Tryby adresowania





Natychmiastowe (immediate) dotyczy argumentu umieszczonego w kodzie istrukcji (instrukcja z
operandem bezpośrednim)
Rejestrowe bezpośrednie (register direct) wskazuje jeden z rejestrów procesora jako miejsce
operandu (w kodzie instrukcji podawany jest numer tego rejestru)
Bezpośredni (direct) – związany z adresowaniem danych w pamięci, efektywny adres operandu
podany jest bezpośrednio w kodzie instrukcji (bezpośrednio mogą być tylko wewn. pamięć RAM i
obszar rejestrów SFR)
Rejestrowy pośredni (register indirect) – adres komórki pamięci przechowującej dany operand
odczytywany jest z rejestru procesora (przy wykorzystaniu rejestrów R0, R1 wybranego banku
rejestrów - możliwe adresowanie pamięci RAM wewn. i zewn.)
Pośrednie- zawartością rejestru bazowego i indeksowego - do 16-bitowego adresu bazowego (DPTR
lub PC) jest dodawana 8-bitowa zawartość akumulatora A.
Instrukcje arytmetyczne
ADD A,#127 ; adresowanie natychmiastowe
ADD a,R7
; adresowanie rejestrowe bezpośrednie
ADD a,7FH
; bezpośrednie
ADD A,@R0 ; adresowanie pośrednie
Przykład mikrokontrolera z przetwornikiem A/C
Specjalizowane moduły zegarów/liczników
CT0I
Int
CT1I
Int
CTI0
CT2I
CTI1
CT0
CT2I
Int
CTI2
CT1
CTI3
CT2
off
fosc
Int
CT3
przerwanie od 8-bitowego
przepełnienia
1/12
T2 Licznik
Prescaler
przerwanie od 16bitowego przepełnienia
T2
RT2
T2ER
zezwolenie zewn.
zerowania
magistrala 16-bitowa
S
R
P4.0
S
R
P4.1
S
R
P4.2
S
R
P4.3
S
R
P4.4
S
R
P4.5
TG
T
P4.6
TG
T
STE
RTE
S = set
R = reset
T = toglle
TG = toglle status
COMP
Int
COMP
Int
COMP
Int
I/O Port 4
CM0 (S)
CM1 (R)
CM2 (T)
P4.7
Port P4
T2 SFR address:
TML2 = lower 8 bits
TMH2 = higher 8 bits
Schemat blokowy układu zegara/licznika 2 mikrokontrolera 80C552 Philips
T2 Licznik
COMP
CM0, CM1, CM2
- zegar licznik 16 bitowy, dostęp 8-bitowy: rejestry TML2, TMH2
- komparator cyfrowy 16-bitowy (1-arg: Licznik L2, 2-arg: rejestr CMi)
- rejestry 16 bitowe, dostęp 8-bitowy, CMLi, CMHi
- rejestry warunkujące działanie wybranych linii portu P4 na skutek cyfrowej
komparacji CMi,
CT0, CT1, CT2, CT3 - rejestry 16 bitowe, na skutek zdarzenia (opadające zbocze, narastające zbocze
sygnału CTiI ) do rejestru wpisywana jest 16-bitowa, bieżąca zawartość, licznika
L2
STE, RTE
CTIi
IRQi
- jednobitowe wskaźniki zdarzenia i
- przepełnienie 8 i 16 bitowe licznika L2
Rejestr sterujący zegara/licznika 2 mikrokontrolera 80C552 Philips (TM2CON)
Programowane moduły zliczające w pomiarach interwału czasu,
okresu i częstotliwości
jednobitowy wskaźnik wpisu do
rejestru CT0 licznika L2
CTI0
rejestr CT0
licznika L2
badany sygnał
INT
CTL0
fx
CTH0
wewnętrzna 16 bit. magistrala danych
PRZERWANIE (INT):
16 bitowe przepełnienie
licznika L2
rejestr licznika L2
fosc=11,0592MHz
Dzielnik wstępny
1/2/4/8
1/12
T2H
T2L
moduł licznika L2
Schemat blokowy struktury układu do pomiaru okresu i częstotliwości przy
wykorzystaniu struktury układu licznikowego L2.
Bieżący stan
licznika L2
Przerwania
INT14
Przepełnienie
licznika L2
65535
65534
65533
25537
25538
25539
00002
00001
00000
INT14
Przepełnienie
licznika L2
+
Sygnał fosc
t
Sygnał fx
Stan licznika L2 rejestrowany
w rejestrze CT0 (CTH0, CTL0)
N1
długość słowa licznika L2:
N
N2
(16)
N
2
Pojemność licznika L2:
(65536)
Liczba przepełnień licznika L2 (zgłoszonych przerwań od L2):
Nirq
Okres sygnału fx (interwał czasu τx):

Tx  Tosc N 2  N1   Nirq 2 N
Częstotliwość fx:
fx 
1
Tx

t
Program pomiaru okresu (częstotliwości) - PB552
#include <stdio.h>
#include <reg552.h>
idata union {
struct {
char hi, lo; } byte;
unsigned int word;
} N1, N2;
idata unsigned N;
idata unsigned long LN;
static idata unsigned char irq;
float Tosc,Tx,Fx;
void T2_int() interrupt 14
{
irq++;
T20V=0;
}
main()
{
TM2CON=0x81;
CTCON=0x01;
Tosc=12.0/11059200.0;
EA=1;
while (1)
{
CTI0=0;
while (CTI0==0);
N1.byte.hi=CTH0; N1.byte.lo=CTL0;
/* odbierz wartosc T2 */
/* oczekujemy na drugie zbocze i zliczamy przepelnienia */
T20V=0; ET2=1;
CTI0=0;
while (CTI0==0);
ET2=0;
/* zablokuj zglaszanie przerwan od przepelnien T2 */
N2.byte.hi=CTH0; N2.byte.lo=CTL0; /* odbierz wartosc N2 */
N=N2.word-N1.word;
if (N2.word < N1.word) irq--;
LN=N+irq*65536L;
Tx=LN*Tosc;
Fx=1.0/Tx;
printf("\nN1=%5u N2=%5u i=%bu", N1.word, N2.word, irq);
printf(" N=%8Lu Tx=%.7f Fx=%5.5f", LN, Tx, Fx);
irq=0;
}
}
Ogólny schemat blokowy przetwornika A/C 80C552 Philips
Schemat blokowy modułu przetwornika A/C mikrokontrolera 80C552 Philips
7
6
5
4
3
2
1
0
ADCON
ADC.1
ADC.0
ADEX
ADCI
ADCS
AADR
2
AADR
1
AADR
0
ADCH
ADC.9
ADC.8
ADC.7
ADC.6
ADC.5
ADC.4
ADC.3
ADC.2
Rejestry SFR
BIT
ADCON.7
ADCON.6
Symbol
ADC.1
ADC.0
ADCON.5
ADEX
ADCON.4
ADCI
ADCON.3
ADCS
-//-
ADCI
ADCS
ADCON.2
ADCON.1
ADCON.0
AADR2
AADR1
AADR0
Funkcja
Pierwszy bit wartości konwersji A/C
Drugi bit wartości konwersji A/C
Blokada zewnętrznego startu konwersji przez STADC:
0 = konwersja nie może być uruchomiona zewnętrznym
sygnałem STADC (pin STADC);
1 = konwersja może być uruchomiona zewnętrznym
sygnałem STADC
Flaga przerwania od przetwornika A/C. Flaga ta jest ustawiana gdy
wynik konwersji jest gotowy do odczytu. Flaga musi być zerowana
programowo.
Start i status przetwarzania. Ustawienie tego bitu rozpoczyna
konwersję. Musi być on ustawiany programowo lub poprzez
zewnętrzny sygnał (pin STADC). Bit ADCS pozostaje 1 w czasie
procesu przetwarzania, gdy konwersja zostaje zakończona ADCS
zostaje resetowany równocześnie z pojawieniem się przerwania
i flagi ADCI. ADCS nie może być zerowany programowo.
ADCI
0
0
1
1
ADCS
0
1
0
1
OPERACJA
PRZETWORNIK A/C WOLNY, KONWERSJA MOŻE SIĘ ROZPOCZĄĆ,
PRZETWORNIK A/C ZAJĘTY, BLOKADA STARTU NOWEJ KONWERSJI,
KONWERSJA ZAKOŃCZONA, BLOKADA STARTU NOWEJ KONWERSJI,
Stan nie możliwy.
Wybór wejścia analogowego. Bity te kodują binarnie jedno z 8 wejść
analogowych portu P5 jako wybrane do procesu konwersji. Mogą być
ustawiane tylko gdy ADCI i ADCS są w stanie niskim.
Rezultat  2 N 
Vin  AV REF 
AV REF   AV REF 
N – dł. słowa przetwornika,
AVREFAVREF+ - napięcia referencyjne przetwornika
Vin 
Rezultat
 AVREF   AVREF    AVREF 
N
2
jeżeli:
Vin 
AV REF   0 [V ]
Rezultat
AV REF 
N
2
Przykład algorytmu konwersji wyniku przetwarzania A/C przy parametrach:
N=10; AV REF   0 [V ] ; AVREF   2.5 [V ]
float Vin, AVRef;
AVRef=2.5;
Vin=(float)((256*ADCH+(ADCON&0xC0))>>6)*AVRef/1024;
Przykład uproszczonego algorytmu konwersji wyniku przetwarzania A/C (bez stosowania arytmetyki liczb
zmiennoprzecinkowych), wynik konwersji jest liczbą typu int reprezentującą wartość napięcia wejściowego w [mV] :
N=10; AV REF   0 [V ] ; AV REF   5.12 [V ]
/* uwaga: (5.12/1024)*1000 = 5 */
int Vin;
Vin=5*((256*ADCH+(ADCON&0xC0))>>6);
Przykład algorytmu obsługi wielokanałowego przetwornika A/C z wyzwalaniem sprzętowym serii pomiarów (sygnał
wyzwalający STADC – przepełnienie 16-bitowe modułu zegara/licznika L2). Obsługa przetwornika, rejestru kontrolno
sterującego ADCON – w trybie przeglądania, zastosowano również uproszczony sposób konwersji wyników przy
zastosowaniu źródła napięcia referencyjnego AVRef=5.12V. Wyniki konwersji przekazywane są kanałem transmisji
szeregowej do zewnętrznego odbiornika .
/*************************************************************
*
Moduł: adc_pol.c
*
Aplikacja:
Programu demonstracyjny obsługi przetwornika ADC
*
mikrokontroler typu: 8xC552
*
Obsługa przetwornika w trybie przeglądania
* UWAGA:
*
Kanały są skanowane kolejno po narastającym zboczu sygnału STADC,
*
Sygnał jest podłączony do P4.7i jest powtarzany z okresem repetycji
*
co 1.14s. Okres ten jest kontrolowany przez moduł zegara/licznika T2.
*
Rezultaty przetwarzania przekazywane są kanałem transmisji szeregowej UART.
**************************************************************************/
#define ADEX
0x20
#define ADCI
0x10
#define ADCS
0x08
void write_UART (unsigned int *ptr, unsigned int k);
void main(void)
{
unsigned int conversion, result_ADC[8];
unsigned char ADC_Channel;
S0CON=0x40;
TH1=TL1=0xFD;
PCON=0x80;
TMOD=0x20;
TR1=1;
TM2CON=0x0D;
RTE=0x80;
/* 8 bits, no parity, 1 STOP bit */
/* 19200 Baud @11.0592MHz */
/* źródło sygn. zegarowego T2: osc/96 */
/* okres przepełnień: 0.569ms
P4.7 zmienia stan na przeciwny co każde 0.569ms
ADC konwersja narastającym zboczem sygnału STADC
P4.7/STADC: 1.14ms szybkość konwersji
*/
conversion=0;
while (1)
{
for (ADC_Channel=0; ADC_Channel < 8; ADC_Channel++)
{
ADCON=0;
/* ADCI i ADCS są zerowane */
ADCON=ADC_Channel;
/* przed wybraniem numeru kanału ADC */
if (ADC_Channel==0)
ADCON=ADEX;
/* ADC0: zewnętrzny start konwersji T2 */
else
ADCON=ADCON | ADCS;
/* ADC1..ADC7: programowy start */
while((ADCON&ADCI)==0);
/* Czekaj na zakończenie konwersji
sprawdzając ADCI */
result_ADC[ADC_Channel]=5*((256*ADCH+(ADCON&0xC0))>>6);
/* Oblicz 10–bitowy binarny rezultat przetwarzania dla Uref=5.12V */
}
write_UART(&result_ADC,
if (conversion==10000)
conversion=0;
}
}
conversion++);
/* Wyprowadzenie rezulatu do modułu UART */
Schemat zastępczy obwodów wejściowych przetwornika A/C
Charakterystyka przetwarzania i charakterystyka błędu kwantowania
MIKROKONTROLERY MOTOROLA
Architektura 8-bitowa (M68HC05, M68HC08, M68HC11)
 M68HC05 Family, M68HC08 Family
 M68HC08 Automotive Family
 M68HC11 Family
Architektura 16-bitowa (HCS12, M68HC12, M68HC16, 56800/E)
Architektura 32bitowa 32-Bit (68K/ColdFire, MAC7100, MCORE, PowerPC)
Narzędzia programistyczne - MCU Development Tools
Mikroprocesory Motorola - MC68HC11A8
Hardware Features
 8 Kbytes of ROM
 512 Bytes of EEPROM
 256 Bytes of RAM (All Saved During Standby) Relocatable to Any 4K Boundary
 Enhanced 16-Bit Timer System:
— Four Stage Programmable Prescaler
— Three Input Capture Functions
— Five Output Compare Functions
 8-Bit Pulse Accumulator Circuit
 Enhanced NRZ Serial Communications Interface (SCI)
 Serial Peripheral Interface (SPI)
 Eight Channel, 8-Bit Analog-to-Digital Converter
 Real Time Interrupt Circuit
 Computer Operating Properly (COP) Watchdog System
 Available in Dual-In-Line or Leaded Chip Carrier Packages
Software Features
 Enhanced M6800/M6801 Instruction Set
 16 x 16 Integer and Fractional Divide Features
 Bit Manipulation
 WAIT Mode
 STOP Mode
PODSTAWOWE PARAMETRY PRZETWORNIKÓW A/C I C/A













Metoda przetwarzania A/C
Rozdzielczość, Długość słowa kodowego, metoda kodowania
Zakres przetwarzania, napięcie referencyjne, maksymalne napięcia wejściowe
Liczba kanałów przetwarzania, sposób sprzężenia sygnałów wejściowych
Szybkość przetwarzania (próbki/s)
Charakterystyka wzmacniaczy wejściowych
o impedancja wejściowa (stanu włączenia, stanu wyłączenia, stanu
przeciążenia)
o prąd polarycji obw. wejściowych
o wsp. tłumienia sygnałów współbieżnych CMMR
o charakterystyki dynamiczne i czasy ustalania sygn. wejściowych dla poszcz.
wzmocnień
Rozmiar bufora FIFO
Metody wyzwalania
Metody transferu danych (DMA, przerwania)
System rejestrów kontrolno-sterujących (pamięć)
warunki otoczenia (pracy)
stabilność (czas wygrzewania, ..)
błędy przetwarzania
o nieliniowość całkowa (ang. integral nonlinearity)
o nieliniowość różniczkowa (ang. differential nonlinearity)
o przesunięcie zera (ang. offset error)
o błąd wzmocnienia (ang. gain error)
o stosunek sygnału do szumu (ang. signal to (noise + distortion) ratio )
o dokładność względna (ang. relative accuracy)
o czas ustalania napięcia wyjściowego (ang. voltage output settling time)
o zakłócenia szpilkowe sygnału wyjściowego (glittch) (ang. digital-to-analog
glitch impulse)
Podstawowe błędy przetworników A/C i C/A
Przetworniki A/C
Nieliniowość całkowa (Integral Nonlinearity) :
Max odchylenie dowolnego kodu od linii łączącej punkty końcowe charakterystyki przetwarzania przetwornika A/C (określana
w bitach, częściach ułamkowych bitów) np. ±0.3LSB)
Nieliniowość różniczkowa (Differential Nonlinearity):
Największa zmierzona różnica pomiędzy dwoma sąsiednimi poziomami sygnału analogowego przy zmianie słowa kodowego
o 1 wyrażona (określana w bitach, częściach ułamkowych bitów) np. ±0.3LSB
Przesunięcie zera (Offset Error):
Przesunięcie charakterystyki przetwarzania od punktu zerowego przy zerowej wartości sygnału wejściowego (określana w
bitach, częściach ułamkowych bitów) np. ±4LSB
Błąd wzmocnienia (Gain error):
Przesunięcie charakterystyki przetwarzania od końcowego punktu przy sygnale wejściowym pełnego zakresu pomiarowego
(po uprzedniej adjustacji przesunięcia zera) (określana w bitach, częściach ułamkowych bitów) np. ±2LSB
Stosunek sygnału do szumu (Signal to (Noise + Distortion) Ratio ):
Stosunek sygnału do szumu określa się dla sygnału sinusoidalnego o max. amplitudzie, stosunek częstotliwości fali
sinusoidalnej do częstotliwości próbkowania powinien być liczbą niewymierną.
Teoretyczna wartość stosunku sygnał szum dla N-bitowego przetwornika:
( S / N ) max  (6.02 N  1.76 ) dB
Dla N=12 S/N=74dB
Całkowite zniekształcenia harmoniczne (Total Harmonic Distortion)
Całkowite zniekształcenia harmoniczne to stosunek sumy wartości średniokwadratowych harmonicznych do sygnału
podstawowego.
Przetworniki C/A
Dokładność względna (Relative Accuracy)
Dokładność względna jest mierzona jako max odchylenie punktów charakterystyki przetwarzania od linii prostej
przechodzącej przez punkt końcowy charakterystyki przetwarzania C/A, odniesioną do napięcia pełnego zakresu przetwarzania
i wyrażona w procentach. Pomiar powinien być dokonywany po przeprowadzeniu adjustacji błędu przesunięcia zera i błędu
pełnej skali przetwornika.
Czas ustalania napięcia wyjściowego (Voltage Output Settling Time)
Jest to wartość czasu upływającego do momentu osiągnięcia specyfikowanego poziomu napięcia wyjściowego na skutek
zmiany na wejściu odpowiadającej pełnemu zakresowi.
Zakłócenia szpilkowe sygnału wyjściowego (GLITTCH) ( Digital-to-Analog Glitch Impulse)
Powstają w wyniku stanów przejściowych zmiany słów kodowych. Określane powierzchnią obszaru szpilek w nV/s.
Przetwornik C/A
U
UFS
szpilka
napięciowa o
najw. polu
powierzchni
t
ADuC812 jest wyposażony w dwa 12-bitowe napięciowe przetworniki C/A. Każdy z nich posiada wyjściowy bufor napięciowy typu
„rail-to-rail” (wyjście od szyny do szyny zasilającej) obciążany do wartości 10kΩ/100pF. Każdy niezależnie może pracować w
zakresie 0V do VREF (wewnętrzne źródło 2.5V) i 0V do AVDD. Każdy z nich może pracować w trybie 8 lub 12-bitowym. Przetworniki
wykorzystują wspólnie jeden rejestr kontrolny DACCON oraz 4 rejestry danych, DAC1H, DAC1L, DAC0H, DAC0L. Mogą
pracować w trybie 12-bitowym asynchronicznym w którym wartośc wyjściowa napięcia przetwornika C/A uaktualniana jest po
wpisaniu danej do DACL – dlatego ważana jest kolejność wpisywania danych, najpierw cz. starsza DACH, a potem, młodsza DACL.
DACCON (wartość pocz. 04H, brak adresowania bitowego)
MODE
RNG1
RNG0
CLR1
CLR0
SYNC
PD1
Alokacja
bitowa
Mnemo
nic bitu
Opis
DACCON.7
MODE
DAC MODE bit umieszcza nadrzędny działający tryb dla obu
DACs
„1” = 8-bit tryb (pisz 8bitowy do DACxL SFR).
„0” = 12-bit tryb.Bitowy wybór zakresu DAC1.
DACCON.6
RNG1
PD0
Bit wyboru zakresu przetwornika . DAC1
„1” =DAC1 zakres 0-VDD.
„0” = DAC1 zakres 0-VREF.
DACCON.5
RNG0
Bit wyboru zakresu przetwornika . DAC0.
„1” =DAC0 zakres
„0” = DAC0zakres
DACCON.4
CLR1
DACCON.3
CLR0
DACCON.2
SYNC
0-VDD.
0-VREF.
Bit zerowania DAC1
„0” =DAC1 wyjście wymusza do 0V.
„1” = DAC1 wyjście normalne.
Bit zerowania DAC0
„0” =DAC0 wyjście wymusza do 0V.
„1” = DAC0 wyjście normalne.
Bit uaktualnienia synchronicznego
„1” – wyjścia przetworników są aktywowane wpisem danej do
DACxL. Użytkownik może uaktualniać rejestry DACxL/H podczas
SYNC=0. Uaktualnie jednoczesne wyjść nastąpi po wpisaniu do
SYNC=1.
DACCON.1
PD1
DACCON.0
PD0
Bit Power-Down
„1” = Power-On DAC1.
„0” = Power-Off DAC1
Bit Power Down.
„1” = Power-On DAC0
„0” = Power-Off DAC0
Architektura przetwornika C/A zawiera drabinkę rezystancyjną współpracującą ze buforowym wzmacniaczem wyjściowym
(funkcjonalny ekwiwalent pokazany jest na rys.). Szczegóły architektury są opatentowane U.S. Patent Number 5969657.
Zasada tej architektury gwarantuje monotoniczność i znakomitą różnicową liniowość.
Przykładowy program generatora fali sinusoidalnej przy wykorzystaniu przetwornika C/A i chwilowych wartości amplitudy (1
okres – 64 próbki) przechowywanych w pamięci kodu programu
#include <stdio.h>
#include <ADuC831.h>
sbit LED = 0x0B4;
void main (void)
{
unsigned code values[64][2]={{0x07, 0xFF},{0x08, 0xC8},{0x09, 0x8E},{0x0A, 0x51},{0x0B, 0x0F},
{0x0B, 0xC4},{0x0C, 0x71},{0x0D, 0x12},{0x0D, 0xA7},{0x0E, 0x2E},
{0x0E, 0xA5},{0x0F, 0x0D},{0x0F, 0x63},{0x0F, 0xA6},{0x0F, 0xD7},
{0x0F, 0xF5},{0x0F, 0xFF},{0x0F, 0xF5},{0x0F, 0xD7},{0x0F, 0xA6},
{0x0D, 0x12},{0x0C, 0x71},{0x0B, 0xC4},{0x0B, 0x0F},{0x0A, 0x51},
{0x09, 0x8E},{0x08, 0xC8},{0x07, 0xFF},{0x07, 0x36},{0x06, 0x70},
{0x05, 0xAD},{0x04, 0xEF},{0x04, 0x3A},{0x03, 0x8D},{0x02, 0xEC},
{0x02, 0x57},{0x01, 0xD0},{0x01, 0x59},{0x00, 0xF1},{0x00, 0x9B},
{0x00,
{0x00,
{0x01,
{0x04,
0x58},{0x00,
0x27},{0x00,
0xD0},{0x02,
0xEF},{0x05,
0x27},{0x00,
0x58},{0x00,
0x57},{0x02,
0xAD},{0x06,
0x09},{0x00,
0x9B},{0x00,
0xEC},{0x03,
0x70},{0x07,
0x00},{0x00, 0x09},
0xF1},{0x01, 0x59},
0x8D},{0x04, 0x3A},
0x36}};
DACCON = 0x0D;
DAC0H = 0x08;
DAC0L = 0x00;
//DAC0 on 12-bit Asynchronous
//DAC0 mid scale
while (1)
{
int i, j;
for ( i = 0 ; i < 64; i++)
{
DAC0H = values[i][0];
DAC0L = values[i][1];
for (j=0; j< 3000; j++) ;
}
LED ^= 1;
}
}
/* */
MIKROKONWERTERY – Przetworniki inteligentne
smart transducer
W ciągu ostatnich 20 lat obserwuje się postęp w dziedzinie czujników
inteligentnych. IEEE oraz NIST opracowały normę, która obejmuje funkcje
i zasady transmisji sygnału.
Przetworniki wykonane zgodnie z normą 1451 są przetwornikami nowej
generacji, przystosowanymi do pracy w sieci, o możliwościach
niespotykanych w dotychczasowych rozwiązaniach. Są niezależne od
rozwiązań konstrukcyjnych sprzętu i sieci.
Sygnał cyfrowy zawiera informacje o wartości mierzonej wielkości, jej
jednostce SI i symbolu przetwornika, może być także sygnałem sterującym.
IEEE Institute of Electrical and Electronics Engineers
NIST National Institute of Standards and Technology (dawne National Bureau of Standards NBS)
Termin: „czujniki inteligentne” ? ... czy układy pomiarowe zdolne są do podejmowania decyzji ?
Od czujnika wymaga się znacznie mniej.
W j. angielskim takie czujniki nazywane są smart sensors lub inteligent sensors.
W roku 1992 prof. Ryszard Jachowicz znając poglądy środowisk metrologów zarówno polskich jak
i zachodnich zaproponował na konferencji COE’92 następującą definicję czujnika inteligentnego:
Czujnik inteligentny jest elementem pomiarowym przekazującym
informację o mierzonej wielkości w postaci cyfrowej, który komunikuje
się z zewnętrznym cyfrowym systemem pomiarowym (komputerem) w
oparciu o standardowy protokół komunikacji i z użyciem
standardowego interfejsu
W opracowanej normie IEEE 1451 obejmującej sprzęgi przetworników (Smart Transducer Interface Standard For
Sensors And Actuators) przyjęta jest inna definicja, obejmująca wszystkie przetworniki, zarówno czujniki jak
i organy wykonawcze lub wzbudzające. Wspólne traktowanie czujników i organów wykonawczych wprowadza
nowe podejście do sygnału pomiarowego zgodne z treścią tej normy. Sygnały pomiarowe maja taki sam charakter,
co sygnały sterujące, są przesyłane po tych samych magistralach i mogą być użyte do sterowania.
POSTĘP W DZIEDZINIE CZUJNIKÓW INTELIGENTNYCH
Jednym z pierwszych układów jest produkowany seryjnie czujnik inteligentny Eμ358A. Ma on czujnik
pierwotny wykonany w technologii IS-FET zintegrowany ze wzmacniaczem.
Różne typy czujników inteligentnych nowszej generacji zawierają obecnie cztery podstawowe układy
toru przetwarzania sygnałów:
 wzmacniacz dopasowujący (kondycjonujący)
 przetwornik analogowo-cyfrowy
 mikroprocesor 4-bitowy (8-bitowy)
 nadajnik transmisji szeregowej
Wszystkie części toru pomiarowego można wykonać w jednej strukturze scalonej ?
Typowy dla początku lat dziewięćdziesiątych czujnik inteligentny zawierał trzy układy scalone:
 część analogową wraz z przetwornikiem A/C
 mikroprocesor
 część cyfrową.
Rs485
Mikrokomputer
Czujnik
1
Zasilacz
inne
czujniki
Czujnik
2
Rys. Łączenie zespołu czujników inteligentnych z wykorzystaniem
łącza RS 485 i dodatkowych przewodów zasilających
CZUJNIK INTELIGENTNY WEDŁUG NOWEJ NORMY
Smart transducer
interface module
(STIM)
Transducer electronic
data sheet
(TEDS)
Network
Network capable
Application procesor
(NCAP)
Function
block
Transducer
block
Adres
logic
A/D
converter
Transducer
D/A
converter
Transducer
Discrete
I/O
Transducer
?
Transducer
Signal
isolator
Buffered
analog
output
Signal
isolator
Buffered
analog
output
Smart sensor per IEEE P 1451 definition (15 july 1996)
output
Rys. Czujnik inteligentny według IEEE 1451.2. NCAP- sprzęg między czujnikiem a siecią.
Moduł sprzęgu czujnika inteligentnego - STIM może zawierać wiele różnych czujników i musi
posiadać pamięć nieulotną TEDS zawierającą szczegółowy zapis struktury STIM.
NAJWAŻNIEJSZE USTALENIA NORMY
Norma obejmuje następujące zagadnienia:
 P1451.1 - normalizacja programów potrzebnych dla pracy NCAP, między innymi:
- współpracy ze STIM
- dostępu do TEDS
- adresowania
- sterowania przesyłaniem informacji
- komunikacji między przetwornikami a siecią
 P1451.2 – normalizacja zarówno sprzętu jak i programów związanych z pracą STIM. Norma rozróżnia
następujące typy przetworników w zależności od charakteru ich sygnałów:
- czujniki
- organy wykonawcze
- czujniki kolejności zdarzeń
- przetworniki próbkujące (wysyłające serie danych)
Standardy sieci komunikacyjnych





Ethernet
Foundation Fieldbus
Lonwork
Profibus
Interbus-S
 Universal Serial Bus
(USB)
 CAN-Bus
 Device-Net
 WorldFIP
 P-NET
 HART
 AS
Realizowane funkcje:
- adresowanie
- przesyłanie danych
- przechowywanie informacji o wszystkich przetwornikach i dostępie do nich
- identyfikacja
- status
- sterowanie całym STIM oraz poszczególnymi torami pomiarowymi
- przełączanie
- przerwania
Inne funkcje (dodatkowe): kalibracja, autokalibracja itp.
Oddzielny rozdział jest poświęcony jest pamięci TEDS, która zawiera poza danymi układu także funkcje
matematyczne przydatne przy korekcji sygnału.
Znormalizowane jest również zasilanie (4,5 – 5,5 V) (3V), pobór prądu przez STIM (nie więcej niż 75
mA ) oraz złącze między NCAP a STIM (dziewięciostykowe).
 P1451.3 - komunikację dla systemów rozproszonych
 P1451.4 - komunikację o charakterze mieszanym, np. przesyłanie niektórych cyfrowych danych
dotyczących czujników analogowych.
Z rys.3 wynika, że każdy czujnik inteligentny (mogący zawierać w sobie kilka czujników
pierwotnych), ma własny, bardzo rozbudowany układ cyfrowy. Jest to oczywiście rozwiązanie
nadmiarowe, ale umożliwiające uproszczenie zarówno układów sterujących systemem, jak i szybsze ich
działanie.
PRZETWARZANIE SYGNAŁÓW W CZUJNIKACH WEDŁUG NOWEJ NORMY
Dla wytworzenia sygnału dostosowanego do przesyłania w sieci oraz do wykorzystania przez
współpracujące urządzenia niezbędne jest wielokrotne przetwarzanie sygnału. Norma nie stawia
warunków na przetwarzanie analogowe, więc na schematach funkcjonalnych nie jest ono wyodrębnione.
Kalibracja i korekcja sygnału odbywa się przy użyciu informacji zapisanych w TEDS, a więc
korygowany jest sygnał cyfrowy. Przy korekcji sygnału może być wykorzystany sygnał z innego
przetwornika.
Wyjściowy sygnał pomiarowy zawiera (w/g normy) trzy składniki:
 wartość wielkości mierzonej
 jednostkę
 symbol lub numer porządkowy przetwornika
Sieć
a)
Czujnik
Przetwornik
A/C
Układ
adresujący
TEDS
NCAP
Wzmacniacz
separujący
b)
Sieć
NCAP
Układ
adresujący
Przetwornik
A/C
Organ
wykonawczy
Wielkość wyjściowa
(np. prąd, siła,
moment obrotowy)
Wzmacniacz
separujący
Rys. Przetwarzanie sygnału w czujnikach inteligentnych
a) tor sygnału pomiarowego, b) tor sygnału sterującego
Liczba użytych jednocześnie czujników może być bardzo wielka. W przykładzie przedstawionym
na rys. zastosowano 16 magistral, przy czym do każdej z nich można przyłączyć 255 czujników.
Networked
snsor
Host procesor
Network
HUB
Networked
snsor
Networked
snsor
Networked
snsor
Bus 1
Bus 2
Bus 3
Networked
snsor
Networked
snsor
Networked
snsor
Host
controller
Bus16
Networked
snsor
Networked
snsor
Networked
snsor
Rys. System czujników inteligentnych badany w Boeing Commertial Airplan Co.
KORZYŚCI Z WPROWADZENIA NORMY
Najważniejsze zalety normalizacji w dziedzinie czujników inteligentnych to zwiększenie możliwości
ich stosowania, a mianowicie:
 wykorzystywanie znacznie większej niż dotąd liczby czujników w jednym systemie pomiarowym
 współpracy między systemami zawierającymi różne czujniki, nawet produkowanych przez różne
firmy
 transmisji na odległość niezależnej od rodzaju sieci
 stosowania w systemach rozproszonych
 wykorzystania tych samych sygnałów do sterowania
 brak zależności pracy systemów od rozwiązań sprzętowych.
PODSUMOWANIE
Ze względu na stosowane technologie i związaną z tym miniaturyzację czujniki inteligentne, mimo
niespotykanych dotąd możliwości, będą miały małe wymiary i względnie niewielką cenę.
Sygnały pomiarowe tych czujników będą dostarczały więcej niż dotychczas informacji, ponieważ
będą zawierały także jednostkę oraz symbol identyfikacyjny czujnika. Będą mogły być skorygowane ze
względu na wielkości wpływowe, możliwa jest również kalibracja. Przydatne są bezpośrednio w układów
sterujących. Transmisja danych będzie szybka i niezależna od sieci.
Mimo zastosowania techniki cyfrowej, dla użytkowników są dostępne również sygnały analogowe.
Mikrokonwerter ADuC812
Rys. Schemat blokowy mikrokowertera ADuC812
CHARAKTERYSTYKA OGÓLNA:
Analogowe WE/WY:
8-kanałow, Wysoka dokładnośc przetwarzania 12-Bit C/A
Źródło napięcie refencyjnego wewnątrz chpiu, 100 ppm/_C
Wysoka prędkośc przetwarzania A/C 200 kprb/s
Kontroler DMA wykorzystywany w procesie przetwarzania A/C do zapamiętywania wyników w pamięci RAM
2 x 12-Bit ptrzetworniki C/A z wyjściem napięciowym
Wbudowany czujnik temeratury (On-Chip)
Pamięć:
Pamięć programu: 8K Bytes (On-Chip) Flash/EE
Pamięć danych: 640 Bytes (On-Chip) Flash/EE
Pamieć danych RAM: 256 Bytes (On-Chip)
Pamięć danych zewnętrzna: do 16MB
Pamięć programu zewnętrzna: do 64KB
Rdzeń systemu kompatybilny 8051
Zegar systemowy: 12 MHz (nominalnie) 16 MHz Max
3 moduły 16-Bit zegar/licznik
Port 3 – o zwiększonej obciążalności
9 wektorów przerwań, 2 poziomy priorytetów
Zasilanie:
3 V lub 5 V
Tryby pracy: Normal, Idle, and Power-Down
Urządzenia peryferyjne( On-Chip):
moduł transmisji szeregowych: UART and SPI® Serial I/O
2-Wire (400 kHz I2C® Compatible) Serial I/O
Watchdog Timer
Monitor napięcia zasilania
Architektura pamięci mikrokonwerterów:
Rys.1. Pamięć programu.
Rys.2. Pamięć danych
Rys.3. Model programowy mikrokonwertera
Rys.4. Funkcja przetwarzania (statyczna)
Rys.5. Format rezultatu przetwarzania A/C
𝑈𝑥 =
𝑋 ∙ 𝑈𝑁
2𝑁
Równanie przetwarzania przetwornika
Podstawowe problemy programowej obsługi przetworników A/C (na przykładzie
programowania mikrokonwertera ADuC812)







wybrane rejestry sterujące przetwornika A/C ( AduC812)
zasady obsługi programowo-sprzętowej przetwornika A/C,
programowanie rejestrów specjalnych (SFR) przetwornika
dostęp bitowy i bajtowy do rejestrów specjalnych przetwornika
programowa inicjalizacja pracy przetwornika A/C
podstawowe problemy kalibracji przetworników A/C
zasady obsługi programowo-sprzętowej przetworników A/C
ADCCON1
MD1 MD0
00
01
10
11
Tryb aktywowania przetwornika:
ADC powered down
ADC normal mode
ADC powered down if not executing a conversion cycle
ADC standby if not executing a conversion cycle
CK1 CK0
00
01
10
11
MCLK Dzielnik częstotliwości systemowej (przetwornik wymaga 17 taktów zegara systemowego)
1
2
4
8
AQ1 AQ0
00
01
10
11
ADC Clks Liczba taktów układu wzmacniacza podtrzymującego sygnał wejściowy (Track-Hold)
1
2
4
8
T2C
Bit zezwolenia wyzwalania przetwornika sygnałem przepełnienia zegara/licznika L2
EXC
Bit zezwolenia wyzwalania przetwornika zewnętrznym sygnałem CONVST(sygnał aktywny LOW, min. czas
utrzymania sygnału > 100ns)
ADCCON2
ADCI: bit przerwania przerwornika, sygnalizuje zakończenie konwersji pojedynczej lub bloku DMA
DMA: bit zezwala na tryb przetwarzania DMA
CCONV: bit zezwolenia na tryb ciągły (continuous) przetwornika
SCONV: bit startu pojedynczej konwersji (jest automatycznie kasowany po zakończeniu cyklu konwersji)
CS3..CS1: bity wyboru kanału multipleksera,
CS3 CS2
CS1
CS0
CH#
0
0
0
0
0
0
0
0
1
1
0
0
1
0
2
0
0
1
1
3
0
1
0
0
4
0
1
0
1
5
0
1
1
0
6
0
1
1
1
7
1
0
0
0
Temp Sensor
1
1
1
1
DMA STOP
ADCCON3
BUSY: status zajętości przetwornika podczas konwersji (automatycznie zerowany po zakończeniu konwersji lub kalibracji)
Wewnętrzna struktura przetwornika A/C
Wyzwalanie pomiaru przetwornika A/C



wyzwalanie programowe
wyzwalanie sprzętowe
o tryb pracy ciągły
o wyzwalanie zewnętrznym źródłem pobudzającym (generator zewn.)
o wyzwalanie wewnętrznym źródłem pobudzającym (generator modułu L2)
tryby mieszany
Systemowa obsługa przetwornika A/C



obsługa programowa metodą „podglądania” stanu rejestrów kontrolnych przetwornika
(ang. pooling)
obsługa programowa z wykorzystaniem systemu przerwań
obsługa programowo-sprzętowa z bezpośrednim przekazywaniem danych do pamięci danych systemu (tryb pracy
DMA)
Tryb DMA pracy przetwornika

prekonfigurowanie zewnętrznej pamięci RAM mikrokonwertera
(wstępne inicjowanie zawartości pamięci RAM – docelowego transferu danych)
Rys. Pamięć przed konwersją A/C
Rys. Pamięć po wykonaniu cyklu przetwarzania DMA
Rys. Cykl przetwarzania DMA (mikrooperacje procesora)
Algorytm obsługi przetwornika w trybie DMA:
1. Wyłącz zasilanie przetwornika (Tryb power down: MD1 i MD0 ustawione na 0 w rejestrze ADCCON1)
2. Adres wskaźnika przesyłanych danychustawić na początek obszaru danych, wskaźnik danych określany
jest 24-bitowo w rejestrach DMAL, DMAH i DMAP (DMALmusi być wpisany jako pierwszy, potem
kolejno DMAH i DMAP)
3. Przygotowac zewnętrzną pamięć danych...określić numery przetwarzanych kanałów pomiarowych oraz
wielkość bloku danych (całkowitą liczbę próbek przetwarzanych sygnałów)
4. Przeprowadzić inicjalizację rejestrów ADC SFRs w następującej kolejności:
a. w ADCCON2 ustaw tryb DMA ( MOV ADCCON2, #40H; DMA )
b. w ADCCON1ustaw parametry czasowe konwersji i włącz zasilanie przetwornika
c. proces konwersji DMA może być wyzwalany sygnałem startu poj. konwersji, z układu licznika L2
lub sygnałem zewn.
Metody programowania pamięci programu FLASH/EE:
Serial Downloading (In-Circuit Programming) standardowy port transmisji szeregowej przy
wykorzystaniu protokołu HEX Intel, tryb pracy uzyskiwany po sygnale RESET z aktywnym sygnałem
PSEN=0,
(2) Parallel Programming, tryb analogiczny do programowania klasycznych modułów FLASH lub EEPROM
przy wykorzystaniu portów P0, P1 i P2, sygnału ALE
(3) User Download Mode (ULOAD), specjalny tryb pracy umożliwiający wykorzystanie własnego protokołu
ładowania programów (start z adr. 0E000h).
(1)
Zabezpieczanie pamięci FLASH/EE, tryby zabezpieczeń:
Lock Mode
Secure Mode
Serial Safe Mode
Mikrokontroler analogowy ADuC814 (niski koszt, niewielkie wymiary)
// Zaawansowany przyklad obslugi przetwornika A/C z sprzętowym
// wyzwalaniem startu przetwarzania z obsługą w trybie DMA
#include <ADuC812.h>
#include <stdio.h>
#define DMACOUNT
#define DMACHAN
// predefiniowane symbole ADuC812
100
0x0
// liczba AD odczytow do wykonania
// nr kanału
//
ZMIENNE DEFINIOWANE W WEWNETRZNEJ PAMIECI RAM
idata int xdata *ptr;
idata int num;
bdata bit C;
// SEGMENT PAMIECI ZEWNETRZNE DO PRZESLAN DMA
xdata int DMASTART[ DMACOUNT + 1];
// location for DMA results
void end_of_adc(void) interrupt 6 {
CCONV=0;
C=0;
}
// int_6*8+3 = 51dec = 33hex = ADCI
// stop conversions
// clear C to indicate DMA done
main() {
int i;
// KONFIGURACJA portu transmisji szeregowej - UART
SCON = 0x52;
// 8bit, noparity, 1stopbit
TMOD = 0x20;
// konfiguracja Timer1..
TH1 = 0xFD;
// ..dla 9600baud..
TR1 = 1;
// PRE-KONFIGURACJA zewnetrznej RAM dla DMA w pojedynczym kanale
for(i=0; i<DMACOUNT; i++) DMASTART[i]=DMACHAN<<12;
DMASTART[i]=0xF000;
printf("%cPRz ZMiSP\n", 0x0C);
for (i=0; i<=DMACOUNT; i++) {
if (i % 8 ==0) printf("\n");
printf("[%3d]=%04X ", i, DMASTART[i] );
}
// KONFIGURACJA ADC dla konwersji typu DMA ...
DMAL=(char)(&DMASTART);
// adres inicjujacy kanal operacji DMA
DMAH=(int)(&DMASTART)>>8;
DMAP=0;
// koniecznie w takim porzadku: DMAL, DMAH, DMAP)
ADCCON1=0x64; // 6.51us conv+acq time [01-10-01-00]
ADCCON2=0x40; // DMA mode
EA=1;
EADC=1;
// globalne zezwolenie obslugi przerwan
// zezwolenie obslugi przerwan przetwornika ADC
C=1;
// czekaj na koniec DMA
CCONV=1;
// start przetwarzania ADC w trybie "continuous"
//
Trwa konwersja i przesylanie danych DMA
//...
kiedy transmisja DMA jest kompletna, przetwornik ADC generuje
//
przerwanie i zeruje bit C
while (C);
EA=0; EADC=0;
// wynik przetwarzania ADC jest juz dostepny w RAM
// wydruk kontrony zawartosci pamieci RAM
for(i=0; i<=DMACOUNT; i++) {
if (i % 8== 0) printf("\n");
printf("[%3d]=%4d ", i, DMASTART[i] );
}
printf("\n");
// wydruk kontrolny w postaci slupka danych
for(i=0; i<=DMACOUNT; i++) printf("\n%4d ", DMASTART[i] );
printf("\n");
// procedura mrugania dioda
while(1) {
for (i=0; i<10000; i++) ;
P3 ^= 0x10 ;
}
}
// KONIEC
Podstawy akwizycji danych pomiarowych
Konfiguracja systemów akwizycji danych
Kontroler
procesu
Proces
technolo
-giczny
C/A
C/A
A/C
A/C
System akwizycji danych z przetwarzaniem A/C i C/A w pojedynczych kanałach
Adres
Kanału Pom.
Sygn.
zegarowy
Rejestr Adresu
Dekoder adresu
Adresu
RON
Kan.1
Wejścia
analogowe
Bufor, PP,
Wzm., A/C
RL
RON
Kan.M
MUX
Podstawowe parametry multipleksera:
 czas kluczowania: 50ns do >1s
 rezystancja stanu włączenia: 25 do setek 
 rezystancja włączenia modulowana (RON zmienia się od poziomu sygnału)
 rezystancja izolacji: 50 do 90 dB
 zabezpieczenia przepięciowe
Nowe trendy w konstrukcjach multiplekserów:
Trench Isolation gives high speed, latch-up protection, and low-voltage operation
ADG511, ADG512, ADG513: +3.3V, +5V, 5V specified Ron < 50 @ 5V
Switching Time: <200ns @ 5V
ADG411, ADG412, ADG413: 15V, +12V specified Ron < 35 @
15V Switching Time: <150ns @ 15V
ADG508F, ADG509F, ADG528F: 15V specified Ron < 300
Switching Time: < 250ns
Fault-Protection on Inputs and Outputs
fwe
Kan.1
FDP
Sygnał zmiany
kanału
Sygnał zmiany
wzmocnienia
MUX
ffwe
we
Kan.M
tmux
FDP
fs
Sygnał startu
konwersji A/C
SAR A/C
(bez PP)
twzm
tkonw
tmux
f s
1
2
2
tkonw  tmux
 twzm
f we 
1
  2  tkonw
N
N
dla przykładu: jeśli N=12 i tkonw=20s to wtedy fwe=4Hz
Skąd to ? :
Jeżeli przetwornik A/C nie posiada układów próbkująco-pamiętających (PP) to dla zapewnienia dokładności przetwarzania na
poziomie 1LSB:
dv
1 LSB

dt max
t konw
V(t)
Przy max. amplitudzie sygnału sinusoidalnego zapewniającego przetwarzanie przy
V
pełnej skali 2
N
2
lub
2 N 1
maks. szybkość zmian sygnału wejściowego:
dv
 2f max 2 N 1  f max 2 N
dt max
t
Biorąc pod uwagę te dwa równania możemy określić f max,
t
f max 
1
 2 tkonw
N
Dla przykładu przy tkonw=20s (co odpowiada częstości próbkowania 50kPS), i 12-bitowej rozdzielczości przetwornika maks.
częstotliwość sygnału wejściowego jest limitowana do 4Hz.
Modyfikacja układu pomiarowego przez dodanie układu PP (próbkująco-pamiętającego) pozwala zwiększyć zakres dynamiki
sygnałów wejściowych.
Kan.1
fwe
FDP1
Sygnał zmiany
kanału Sygnał zmiany
wzmocnienia
MUX
Kan.M
fwe
tmux
FDPM
fs
Sygnał startu Sygnał startu
podtrzymania konwersji A/C
PP
takw
A/C
tkonw
N
twzm
Ogólnie:
FDP
2
tmux
 t 2pga  takw  tkonw
dlatego:
fs 
1
takw  tkonw
dla przykładu: jeśli takw=1µs, tkonw=9µs, wtedy fs=100kPs
oraz: f we 
fs
2M
PP
A/C
Próbkuj
/
Zbieraj
Trzymaj
takw
tkonw
Dane
ważne
Konwersja A/C
Próbkuj
/
Zbieraj
Dane
ważne
Zmiana kanału
i wzmocn.
Mult/Wzm
Stan przejść. Mult./Wzm.
1/fs
Typowy diagram czasowy dla systemu akwizycji multipleksowanych danych z użyciem PP
Kwantowanie i kodowanie
yi
y8
Q
y7
y6
x1
x2
x3
x4 y5
+UF
x5
y4
-UFS
x6
x7
x8
x9
xa
S
y3
y2
y1
Δ=yi-xa
e=xa-yi
Q
x1
x2
x3
x4
x5
x6
x7
x9
x8
xa
Rys. 1. a) Charakterystyka przejściowa kwantyzatora równomiernego i b)
przebieg zmian błędu kwantyzacji
yi
y8
y8
000
y7
001
y6
010
y5
011
y4
y4
100
y3
y3
101
y2
y2
110
y1
111
y7
x1 x2
-UFS
y6
x5y5
x4
x3
Q
+UFS
Q
x6
x7
x8
x9
xa
e=xa-yi
y1
x1
y2
x2
y3
x3
y4
x4
y5
y6
x5
y8
y7
x
x8
7
x6
yi
x9
xa
Rys. 2. a) Charakterystyka przejściowa kwantyzatora równomiernego z
przesunięciem, b) przykładowe przypisanie słów kodowych oraz c) przebieg
zmian błędu kwantyzacji
Proces kwantyzacji wprowadza inherentny, nieunikniony błąd.
Założenia i oznaczenia, wprowadzamy:
elementarny przedział kwantowania q s
sygnał wejściowy UI
Przedział q s jest określony przez liczbę poziomów kwantowania sygnału zależną od liczby bitów N (przy słowie kodowym w
zapisie dwójkowym).
Dla kwantyzatora równomiernego z przesunięciem błąd kwantyzacji nie przekracza wartości  q s 2 .
Średniokwadratowa wartość błędu kwantowania:
Można założyć, że wszystkie poziomy nieokreśloności w obszarze kwantowania Ai  q s 2 pojawiają się tyle samo razy, co
prowadzi do przyjęcia założenia o równomiernej gęstości prawdopodobieństwa w zakresie  q s 2 do  qs 2 . Estymator
średniokwadratowej wartości
 jest równy:
qs 2
  
E
2
2
d
qs 2
Przy przyjętych założeniach wartość średnia tego błędu jest równa zeru.
Błąd kwantyzacji można przedstawić jako napięcie błędu kwantyzacji
 
2
. Wartość skuteczną napięcia błędu kwantyzacji
eqns
2
eqns
 E  2 można zapisać jako:
2
eqns

Maksymalna międzyszczytowa amplituda sygnału:
2
N
1 2
qs
12

 1 qs  App  2N qs
a dla większej liczby bitów słowa (N>5):
App  2 N qs
Dla takiej wartości
App
można łatwo określić wartość skuteczną sygnału (dla sinusoidy):
ARMS
Wartość stosunku sygnału do szumu
qs 2 N

2 2
S N można obliczyć jako:
e
S
 qns  2 N 1,5
N ARMS
Oraz przeliczając tą wartość na skalę decybelową:
S N  6,02N  1,76 dB
S N  2 N 1,5
Przyjmując inne rozważania dla przetworników wysokiej rozdzielczości oraz mechanizmy powstawania szumów w torach
pomiarowych wynikające również z innych efektów, takich szumy w elementach biernych, rezystorach (szumy Jonsosna) i
elementów aktywnych jak np. przełączniki (szumy kT/C). Zakładając zwarcie wejścia („grounded input”) rozkład szumów jest
zbliżony do Gaussowskiego jak na rys. poniżej. Wówczas analiza efektywnej rozdzielczości można przedstawić jako stosunek
pełnego zakresu pomiarowego do wartości skutecznej mierzonych szumów.
Drift = 10nV/°C
INL = 2ppm typ, 15ppm max
Reprezentacje cyfrowe wielkości analogowych
(liczbowe kody binarne)
słowa kodowe A  a0 a1  a N 1 o długości N bitów, przy czym ai   0, 1 , i  0, 1, 2,  N  1
poszczególnym bitom przypisuje się wagi,
MSB – bit najbardziej znaczący (największa waga) aN-1
LSB
– bit najmniej znaczący (najmniejsza waga) a0
UFS
– napięcie pełnej skali przetwarzania
D
– wartość liczbowa reprezentowana przez słowo kodowe
Ua
– wartość napięcia reprezentowana przez słowo kodowe
a). Przy zapisie słowa kodowego z użyciem liczb ułamkowych
wagi bitów posiadają wartości: bi 
1
2 N i
b). Przy zapisie słowa kodowego z użyciem liczb całkowitych
wagi bitów posiadają wartości:
bi  2 i
Słowo kodowe (wyjściowe słowo przetwornika)
N 1
D   bi ai
i 0
a).
U a U FS D
b).
Ua 
U FS D
2N
(w naszych rozważaniach proponuję przyjąć sposób b. )
Wagi bitów słowa kodowego
ai
7
6
5
4
3
2
1
0
∑
bi=2i
128
64
32
16
8
4
2
1
255
1
2
1
4
1
8
1
16
1
32
1
64
1
128
1
256
255
256
bi=
1
2 N i

kody unipolarne: reprezentacja napięć z przedziału (0, UFS)

kody bipolarne: reprezentacja napięć z przedziału (-UFS, +UFS)
Kody binarne przetworników A/C
 naturalny kod binarny
 kod uzupełnień do dwóch
 kod binarny przesunięty
N 1
D   bi a i
i 0
N 2
D   bi a i bN 1a N 1
i 0
N 1
D   bi a i bN 1
i 0
 kod znak-moduł
N 1
D  z a N 1  bi a i
i 0
 1 dla a N 1  0
z a N 1   
  1 dla a N 1  1
 kody dwójkowo-dziesiętne (dziesiętno-binarne) (BCD, CCD, ...)
o pozycyjne
o symboliczne
Przykład binarnych kodów prostych
Wartość
reprezentowana
przez kod
Naturalny kod
binarny
Kod uzupełnień
do 2
Kod binarny
przesunięty
Kod znakmoduł
a 7 a 6 a 5 a 4 a 3 a 2 a1 a 0
a 7 a 6 a 5 a 4 a 3 a 2 a1 a 0
a 7 a 6 a 5 a 4 a 3 a 2 a1 a 0
a 7 a 6 a 5 a 4 a 3 a 2 a1 a 0
U FS  Q
11111111
01111111
11111111
01111111
U FS  2Q
11111110
01111110
11111110
01111110
U a  U FS D





1 2U FS  Q
10000001
01000001
11000001
01000001
1 2U FS
10000000
01000000
11000000
01000000
1 2U FS  Q
01111111
00111111
10111111
00111111





00000001
00000000
—
—
00000001
10000001
00000000
10000000
11111111
01111111
00000001
00000000
10000000
10000001



Q
0
Q
+0
–0

 1 2U FS  Q
—
11000001
01000001
10111111
 1 2U FS
—
11000000
01000000
11000000
 1 2U FS  Q
—
10111111
00111111
11000001



 U FS  2Q
—
10000010
00000010
11111110
 U FS  Q
—
10000001
00000001
11111111
 U FS
—
10000000
00000000
—

Pomiary wartości DC/RMS
Poziom DC sygnału analogowego
DC wartość średnia
dla sygnału analogowgo
dla sygnału cyfrowego
RMS wartość skuteczna
dla sygnału analogowego
dla sygnału cyfrowego
FFT transformata Fouriera
PRZESYŁANIE SYGNAŁÓW INFORMACYJNYCH, STERUJĄCYCH I PROGRAMUJĄCYCH
(w systemach pomiarowych)


sygnały informacyjne – niosą informację o wielkościach mierzonych,
sygnały organizacyjne – adresy, rozkazy i sygnały kontrolne systemu pomiarowego.
Sygnały w systemach
pomiarowych
Informacyjne (dane)
Organizacyjne (adresy, rozkazy)
ANALOGOWE
Naturalne
Standardowe
Napięciowe
DYSKRETNE
Z rozdziałem
częstotliwościowym
Prądowe
Z rozdziałem
czasowym
Impulsowe
Kodowe
Potencjałowe
Aplikacje – pomiary temperatury
Czujniki typu RTD (resistive temperature detectors)


zakres pracy (-200°C do +800°C),
duża dokładność
przykł. RTD Klasy B wg normy IEC: 100Ω±0.12% w 0°C, Klasa A: ±0.15% w 0°C
współczynnik temp. zmian rezyst.:

 R100  R0 
gdzie:
100  R0
R100 – rezystancja w 100°C
R0 – rezystancja w 0°C
α=0,00385 °C-1
w normach amerykańskich α=0,003 92 Ω/ Ω/°C
jako jednostkę podaje się też α [Ω/ Ω/°C]
do obliczeń stosuje się wartość dokładną: α = 0,00385055
Konwersja rezystancji na temperaturę:

Rt  R0 1  A  B 2  C  100
3
°C-1

Rt  R0 1  A  B 2  C   100 3 
wg Keithley
wg PN-EN 6-751+A1+A2
dla temp. > 0°C przyjmuje się wsp. C=0
2
t
0
R  R 1  A  B

W układach pom. gdzie Rt jest określane poprzez IR i UR:
2U R  I R R0 
 I R ,U R  
I R R0[ A2  A2  4 BU R  I R R0  / I R R0 ]
W układach pom. gdzie Rt jest określane bezpośrednio:
  Rt  
 A  A2  4 B Rt R0  1
2B
Współczynniki Callendar-Van Duser wielomianu Rt=f(  )
Standard
DIN 43760
American
ITS-90
PN-EN 60751
wsp.
temperaturowy
A [C-1]
B[C-2]
(α)
0,003850
3,9080×10-3
-5,8019×10-7
-3
0,003911
3,9692×10
-5,8495×10-7
-3
0,003926
3,9848×10
-5,8700×10-7
-3
0,00385055
3,9083×10
-5,7750×10-7
*
dla temp. > 0°C przyjmuje się wsp. C=0
C* [C-3] lub [C-4]
-4,2735×10-12
-4,2325×10-12
-4,0000×10-12
-4,1830×10-12
AVDD
ADuC83x
Źródło
prądowe
IEXC1
AIN1
MUX
Rt
BUF
PGA
PRIMARY
24-BIT ∑Δ ADC
AIN2
REFIN+
RREF
External
VREF
Detect
REFIN-
Rt 
Procedura obliczenia wartości rezystancji Rt:
W aplikacji ADuC824, ADuc834 RREF=5,62kΩ±0.1%
DRREF
2N
Termistory
Równanie Steinhart-Hart’a:

1
3 [°K]
A  B  ln Rt   C ln Rt 
gdzie: A, B, C – wsp. określone przez producenta
IEXEC1
200µA
P1.2/DAC/IEXC1
P1.3/IEXC/AIN5
IEXEC2
200µA
I2EN
1 I2PIN
0
1 I1PIN
I1EN
0
1
P1.7/DAC/AIN4
P1.4/AIN1
P1.5/AIN2
P1.6/AIN3
0
BUF
12-bit DAC
AIN1
AIN3
AIN2
AIN3
+
AIN2
- BUF
PGA
AIN4
AIN2
AIN2
Rys. 1. Model programowy obwodów wejściowych mikrokonwertera Σ/Δ.
ADSP 2100 Family
DSP Microcomputers
Ogólne własności:
 DSP Mikroprocesor z 16-Bitowy arytmetyka stałopozycyjna z własną pamięcią
 Rozszerzona architektura Harvard-ska z trzema magistralami
 Niezależne jednostki obliczeniowe: ALU, MAC i Shifter
 Instrukcje realizowane w 1 cyklu maszynowym,
 Pamięć RAM lub ROM i RAM danych w chipie mikroprocesora,
 Zintegrowane urządzenia WE/WY: Porty szeregowe, Zegary/liczniki, Interfejs portu nadrzędnego,
Ogólne cechy:
 Szybkość wykonywania operacji 33-75 MIPS (30ns cykl instrukcji maszynowej)
 Oddzielne magistrale dostępu do pamięci programu i pamięci danych,
Jednostki Funkcjonalne:
 Jednostka obliczeniowe: 3 niezależne jednostki:
jednostka arytmetyczno/logiczna (ALU),
jednostka mnożąca (mulptiplier/accumulator MAC),
jednostka przesuwająca: barrel shifter,
 Generator adresu danych i Sekwencer programu (kolejkowanie instrukcji),
dwa dedykowane generatory adresu,
sekwencer programu dostarczający adresów dostępu do pamięci zewnętrznej lub wewnętrznej,
 Pamięć: architektura Hardvard-ska zmodyfikowana z niezależnym dostępem do pamięci danych i pamięci programu
(instrukcji) i danych jednocześnie.
 Porty transmisji szeregowej:
 Programowany Zegar/licznik: zawiara 8-bitowy preskaler umożliwiający generowanie cyklicznych przerwań,
 Port interfejsu nadrzędnego
 Port DMA – transfer danych z/do wewnętrznej pamięci (BDMA) oraz IDMA przy wykorzystaniu 16-bitowego
multipleksowania adresu i danych transfer do 24-bitowego obszaru pamięci programu,
 Interfejs analogowy – model ADSP-21msp58/59 posiada obwody: ADC, DAC, filtry analogowe i cyfrowe, równoległy
interfejs sprzegający z procesorem. Technologia sigma-delta.
Ogólny podział procesorów stałoprzecinkowych rodziny ADSP 21XX
ADSP-21ES202
ADSP-21ESP202 Procesor mowy z przetwornikiem A/C i C/A
ADSP-2141L
SafeNet DSP, system zabezpieczeń na chipie,
ADSP-2186M
16-Bit, 75 MIPS(milion instrukcji na sekundę), 2.5V, 2 szeregowe porty,
Host Port, 40 KB RAM
ADSP-2188M
16-bit, 75 MIPS, 2.5v, 2 szeregowe porty, host port, 256 KB RAM
ADSP-2185M
16-bit, 75 MIPS, 2.5v, 2 szeregowe porty, host port, 80 KB RAM
ADSP-21MOD980
DIVA / ADSP-21mod980 - 40 Ports of Voice Over Network
ADSP-2165
Procesor sygnałowy z pamięcią ROM
ADSP-2166
Procesor sygnałowy z pamięcią ROM
ADSP-2184
16-bit, 40 MIPS, 5v, 2 szeregowe porty, host port, 20KB RAM
ADSP-2184L
16-bit, 40 MIPS, 3.3v, 2 szeregowe porty, host port, 20KB RAM
ADSP-2189M
16-bit, 75 MIPS, 2.5v, 2 szeregowe porty, host port, 192 KB RAM
ADSP-21MOD970
wielo-portowy, internetowy procesor dostepowy
ADSP-2187L
16-bit, 52 MIPS, 3.3v, 2 szeregowe porty, host port, 160 KB RAM
ADSP-21MOD870
16-bit, pirwszy całkowity, cyfrowy modem na pojedynczym chipie
ADSP-2185L
16-bit, 52 MIPS, 3.3v, 2 szeregowe porty, host port, 80 KB RAM
ADSP-2186L
16-bit, 40 MIPS, 3.3 v, 2 szeregowe porty, host port, 40 KB RAM
ADSP-2185
16-bit, 33 MIPS, 5 v, 2 szeregowe porty, host port, 80 KB RAM
ADSP-2186
16-bit, 40 MIPS, 5v, 2 szeregowe porty, host port, 40 KB RAM
ADSP-2104
16-bit, 20 MIPS, 5v, 2 szeregowe porty
ADSP-2104L
16-bit, 13 MIPS, 3.3v, 2 szeregowe porty
ADSP-2183
16-bit, 52 MIPS, 3.3 v, 2 szeregowe porty, host port, 80 KB RAM
ADSP-2181
16-bit, 40 MIPS, 5v, 2 szeregowe porty, host port, 80 KB RAM
ADSP-21msp58
W pełni zintegrowany pojedynczy chip DSP
ADSP-2171
16-bit, 33 MIPS, 5v, 2 szeregowe porty, host port
ADSP-2173
16-bit, 20 MIPS, 3.3v, 2 szeregowe porty, host port
ADSP-2161
Procesor sygnałowy z pamięcią ROM
ADSP-2163
Procesor sygnałowy z pamięcią ROM
ADSP-2164
Procesor sygnałowy z pamięcią ROM
ADSP-2103
16-bit, 10.2 MIPS, 3.3v, 2 szeregowe porty
ADSP-2162
Procesor sygnałowy z pamięcią ROM
ADSP-2115
16-bit, 25 MIPS, 5v, 2 szeregowe porty
ADSP-2105
16-bit, 20 MIPS, 5v, 1 szeregowe porty
ADSP-2101
16-bit, 25 MIPS, 5v, 2 szeregowe porty
Parametry rodziny procesorów.
Parametry
2101 2103 2105 2115 2111 2161 2162 2163 2164
Pamieć danych RAM
Pamięć programu RAM
Pamięć programu ROM
Zegar
Port szeregowy 0 (wielokanałowy)
Port szeregowy 1
Port łączący hosta
Klasa szybkości (czas jednostkowy instrukcji)
10.24 MHz (76.9ns)
13.0 MHz (76.9ns)
13.824 MHz (72.3ns)
16.67 MHz (60ns)
20.0 MHz (50ns)
25 MHz (40ns)
Napięcie zasilania
Rodzaj obudowy
68- Pin-ów PGA
68- wyprowadzeń PLCC
80- wyprowadzeń PQFP
80- wyprowadzeń TQFP
100- Pin-ów PGA
100- wyprowadzeń PQFP
Klasy temperatur pracy
K techniczne 0oC do 70o C
B przemysłowe -40oC do 85o C
T specjalne -55oC do 125o C
1K
2K
*
*
*
-
1K
2K
*
*
*
-
1/2K
1K
*
*
-
1/2K
1K
*
*
*
-
1K
2K
*
*
*
*
1/2K
8K
*
*
*
-
1/2K
8K
*
*
*
-
1/2K
4K
*
*
*
-
1/2K
4K
*
*
*
-
*
*
*
5V
*
3.3V
*
*
5V
*
*
*
5V
*
*
*
5V
5V
3.3V
5V
3.3V
*
*
*
-
*
*
-
*
-
*
*
*
-
*
*
*
*
-
*
*
-
*
*
-
*
*
-
*
*
*
*
*
-
*
*
-
*
*
-
*
*
*
*
*
-
*
*
-
*
*
-
*
*
-
Opis końcówek (pinów) procesora (nazwa, ralizowana funkcja, liczba)
Nazwa pinu
(końcówki)
Liczba
Wejście/wy
Funkcja
końcówek jście (I/O)
Adress (linie adresu)
14
O
Data (linie danych)
24
I/O
RESET
IRQ2
1
I
Wyjściowe adresy dla pamięci programu, danych i
botowalnej
Dane I/O pinów dla pamięci programu i danych.
Wejście tylko dla pamięci bootowalnej, z dwoma
sektorami bootującymi użytymi dla adresów pamięci
bootowalnej. Linie nieużywanych danych mogą być
nie podłączone.
Wejście resetujące procesora
1
I
Żądanie zewnętrznego przerwania #2
BR 2
BG
PMS
DMS
BMS
RD
WR
1
I
Zewnętrzne żądanie pobrania danych z szyny
1
O
Zewnętrzne żądanie wyprowadzenia danych na szynę
1
O
Wybór zewnętrznej pamieci programu
1
O
Wybór zewnętrznej pamieci programu
1
O
Wybór pamięci butowalnej
1
O
Zezwolenie odczytu zewnetrznej pamięci
1
1
2
1
O
I
I
O
Zezwolenie zapisu zewnetrznej pamięci
SPORT03
5
I/O
SPORT1
5
I/O
IRQO (RFS1)
1
I
Żądanie zewnętrznego przerwania #0
IRQ1 (TFS1)
1
I
Żądanie zewnętrznego przerwania #1
F1(DR1)
F0(DT1)
FL2-0 (tylko ADSP-2111)
Port łączący hosta (tylko
1
1
3
I
O
O
Końcowka wejścia flagi
Końcówka wyjścia flagi
Końcówka wyjścia flgi ogólnego przeznaczenia
1
I
Wejście wyboru HIP
1
O
Wyjście potwierdzenia HIP
1
I
8/16 bitów wybór hosta (0=16 bitów, 1=8bitów)
BMODE
1
I
HMD0
1
I
HMD1
1
I
HRD / HRW
1
I
HWR / HDS
1
I
HD15-0/HAD15-0
16
I/O
HA2/ALE
1
I
HA1-0/nieużywane
2
I
MMAP
CLKIN, XTAL
CLKOUT
VDD
GND
Wejście wyboru mapy pamieci
Zegar zewnetrzny lub wewnętrzny
Wyjście zegara procesora
Końcowka źrodła zasilania
Końcówka masy
Końcówki portu szeregowego 0 (TFS0, RFS0, DT0,
DR0, SCLK0 )
Końcówki portu szeregowego 1 (TFS1, RFS1, DT1,
DR1, SCLK1)
ADSP-2111)
HSEL
HACK
HSIZE
Wybór trybu boota (0=standard EPROM butujacy,
1=HIP bootujacy)
Wybór strobowania szyny (0=RD/WR , 1=RW/DS)
HIP wybór trybu adresy/dane (0=odseperowanie,
1=multipleksowanie)
HIP strobowanie odczytu lub wybór zapis/odczyt
HIP strobowanie zapisu lub wybor strobowania danych
hosta
HIP dane lub HIP dane i adresy
Drugie wejście adresu hoste lub wejście umożliwiające
zatrzaskiwanie adresu
Adres hosta 1 i 0 wejścia
Schemat blokowy ADSP-21xx.
Rejestr
instrukcji
Generator
adresu
danych
Generator
adresu
danych
Pamięć
Programu
SRAM lub
ROM
Flagi
Tylko ADSP 2111
Pamięć
Danych
Generator
Adresu
boota
SRAM
Sekwenser
programu
zegar
Szyna
PMA
Szyna
adresowa
zewnętrzna
Szyna DMA
Szyna
PMD
Rejestr wej.
Zewnętrzna
szyna danych
Wymiana
szyny
Szyna
DMD
Rejestr wej.
Kompansja
zespołu
obwodów
Rejestr wej.
Kontrolny
port
hosta
Przesuwnik
Rejestr wyj.
Rejestr wyj.
Rejestr wyj.
Rejestr transmisji
Rejestr odbioru
Port szeregowy 0
(nie na ADSP2105)
Szyna R
Rej. transmisji
Rej. odbioru
Port
szere
Zewnętrzna
szyna portu
hosta
Port
danych
hosta
Port interfejsu zarządzania
(tylko ADSP-2111)
Opis ogólny procesorów sygnałowych
Dzisiejsze procesory DSP to pojedyncze układy scalone. Podstawowe bloki funkcjonalne tych układów były już znane
znacznie wcześniej, ale dopiero na początku lat 80-tych opracowano technologie, dzięki którym stało się możliwe zamknięcie
tych skomplikowanych struktur w jednym układzie.
Jednym z powodów dużej popularności tych układów jest ich programowalność. Możliwe jest zaprojektowanie
urządzenia z wykorzystaniem DSP, które będzie realizowało różne funkcje (w zależności od załadowanego programu) przy
niezmiennej konstrukcji sprzętowej. W układach cyfrowych parametrów urządzenia nie psują starzejące się kondensatory lub
rezystory o zmieniającej się pod wpływem różnych czynników rezystancji Ponadto procesory DSP mogą być tak
zaprogramowane, że same wykryją i skompensują zmiany parametrów analogowych elementów systemu. Niezaprzeczalną zaletą
urządzeń opartych na DSP jest ich powtarzalność. Dzięki temu gotowy układ można łatwiej uruchomić (np. w przypadku filtrów
cyfrowych praktycznie brak jest operacji strojenia różnych elementów) oraz zapewnić powtarzalność parametrów wejściowych
i wyjściowych danego urządzenia.
Procesory sygnałowe produkowane są w dwu odmianach:
 operacji stałoprzecinkowych
 operacji zmiennoprzecinkowych
Zasadniczą zaletą układów zmiennoprzecinkowych jest fakt, że uwalniają one programistę od zwracania uwagi
na skalowanie. W układach stałoprzecinkowych użytkownik musi zwracać większą uwagę na ograniczenia systemu
liczbowego. W szczególności należy zadbać oto, aby nie przepełniać akumulatora i dbać o precyzję obliczeń.
Procesory stałoprzecinkowe są tańsze, wymagają dbałości o skalowanie, częściej programuje się je w asemblerze.
DSP zmiennoprzecinkowe są droższe, typowe ich programowanie odbywa się w języku C, a problemy ze
skalowaniem nie występują.
Procesory stałoprzecinkowe – rodzina ADSP-2100
Architektura wszystkich procesorów należących do rodziny ADSP-2100 jest taka sama. Jej trzon stanowią:
- jednostka arytmetyczno-logiczna (ALU)
- układ mnożąco-akumulujący (MAC)
- przesuwnik (barrel shifter)
- generatory adresowe
Jednostki te w dużym stopniu mogą działać niezależnie od siebie. Wewnątrz układu scalonego przestrzeń adresowa
danych jest oddzielona od przestrzeni adresowej programu. Na zewnętrz układu scalonego magistrala adresowa jest
multipleksowana między adresy komórek pamięci danych i programu. Podobnie magistrala danych jest multipleksowana
pomiędzy dane i instrukcje programu. Wszystkie procesory należące do tej rodziny mają przynajmniej niewielką wewnętrzną
pamięć danych i programu. W ten sposób zachowuje się zalety struktury typu Harvard przy jednoczesnej niewielkiej liczbie
wyprowadzeń. Architektura poszczególnych procesorów rodziny ADSP-2100 jest uzupełniona o dodatkowe jednostki:
- zegar,
- porty szeregowe przystosowane do współpracy z układem kodeka,
- porty do komunikacji z jednostką nadrzędną (HIP) oraz
- przetworniki analogowo-cyfrowe i cyfrowo-analogowe.
Procesory wyposażone w przetworniki A/C i C/A firma Analog Devices określa angielskim terminem mixed signal
processors.
Cechą charakterystyczną procesorów rodziny ADSP-2100 są specjalizowane rejestry.
Jednostkę arytmetyczno-logiczna - podstawowe operacje wykonywane przez jednostkę arytmetyczno-logiczną to:
dodawanie, dodawanie z przeniesieniem, odejmowanie, odejmowanie z uwzględnieniem "pożyczki", zmiana znaku (dopełnienie
do dwóch), obliczanie wartości bezwzględnej, operacje logiczne AND, OR, XOR, NOT (dopełnienie do jedności) oraz przesłanie
wartości z rejestru wejściowego do rejestru wyjściowego bez wykonywania żądnej operacji oprócz ustawienia flag.
Operacje logiczne wykonuje się oddzielnie dla każdego bitu argumentów, natomiast operacje arytmetyczne wykonuje się
przy założeniu, że argumenty są liczbami stałoprzecinkowymi w formacie 1.15. Jednostka arytmetyczno-logiczna wykonuje
także podstawowe operacje niezbędne do zrealizowania dzielenia liczb stałoprzecinkowych. Dzielenie o pojedynczej precyzji
- dla którego dzielnik jest liczbą 32-bitową, dzielna liczbą 16-bitową, natomiast wynik dzielenia jest 16-bitowy - wymaga
wykonania 16 rozkazów. Możliwe jest przy tym zorganizowanie dzielenia tak, aby liczba bitów wyniku była albo mniejsza, albo
większa niż 16.
Układ mnożąco-akumulujący - podstawowe operacje wykonywane przez układ mnożąco-akumulujący to mnożenie
liczb stałoprzecinkowych oraz mnożenie i akumulacja (dodawanie i odejmowanie).Charakterystycznymi rejestrami tego układu
są rejestr akumulujący MR (40-bitowy) oraz rejestr pośredniczący MF (16-bitowy).
Układ mnożąco-akumulujący ma możliwość zaokrąglenia 40-bitowego rezultatu obliczeń do 16 bitów. Zaokrąglony wynik może
zostać skierowany do rejestru MF lub MR. W tym ostatnim przypadku liczba 16-bitowa zostanie umieszczona w bitach 16-31
rejestru MR , natomiast jej znak zostanie ośmiokrotnie powielony w bitach 32-39rejestru MR.
Układ przesuwnika - pozawala jednym rozkazem umieścić 16-bitowy argument w dowolnym miejscu 32-bitowego
rejestru wyjściowego, włączając w to sytuacje, gdy część argumentu pozostaje poza rejestrem wyjściowym. Daje to łącznie 49
położeń w rejestrze wyjściowym. Znajdowana jest także cecha liczby stałoprzecinkowej lub wspólna cecha dla całej tablicy liczb
stałoprzecinkowych. Operacje te pozwalają na efektywne zakodowanie funkcji zamiany liczby stałoprzecinkowej na liczbę
zmiennoprzecinkową i odwrotnie.
Generatory adresu – dostarczają adresów pamięci kiedy pamięć danych jest przesyłana do lub z rejestru wejściowego
(wejściowego).Każdy generator adresu trzyma ścieżkę do czterech punktów adresowych. Kiedy wskaźnik jest używany do
pośredniego adresowania, jest to post-modyfikowanie przez wartość w rejestrze specjalnym. Z dwóch niezależnych generatorów
adresu, procesor może generować dwa równoczesne adresy dla podwójnie pobranych argumentów operacji. Rozmiar wartości
może być powiązany z każdym wskaźnikiem do implementacji automatycznego adresowania modułu dla buforów cyklicznych.
(cecha bufora cyklicznego jest także wykorzystywana przez porty szeregowe do automatycznego transferu danych ). Generator
adresu 1 może przesyłać adresy tylko do pamięci programu; zaś generator adresu 2 może przesyłać adresy do obu pamięci
programu i danych. Kiedy bit trybu właściwego jest zadany w trybie rejestru stanu (MSTAT), adres wyjściowy generatora
adresu1 jest odwracaniem bitu przed rozpoczęciem kierowania na szynę adresową. Ta cech ułatwia adresowanie w radix-2
algorytmu szybkiej transformaty Fouriera.
Każdy z tych generatorów ma trzy grupy rejestrów:
- rejestry indeksowe I,
- rejestry modyfikacji M,
- rejestry długości L.
Na początku cyklu rozkazowego następuje przesłanie do procesora danych wskazywanych przez rejestr I, natomiast pod
koniec tego cyklu wartość rejestru M (może być ujemna) jest dodawana do wartości rejestru I i w nim jest przechowywany
wynik działania. Rejestr L wykorzystuje się do adresowania kołowego.
W trakcie wykonywania programu instrukcje są pobierane z kolejnych komórek pamięci programu wskazywanych przez
licznik rozkazów PC. Każda instrukcja jest wykonywana w jednym cyklu zegarowym.
Sekwenser programowy - wykonuje adresy rozkazu do pamięci programu. Sekwenser jest sterowany przez rejestr
instrukcji który utrzymuje obieg wykonywanych instrukcji. Rejestr instrukcji wprowadza poziom sygnału przetwarzania
potokowego wewnątrz działającego programu. Instrukcje są pobierane i ładowane do rejestru instrukcji podczas jednego cyklu
maszynowego, wykonywane podczas następnego cyklu dopóki nie zostanie wcześniej pobrana następna instrukcja. Do
zminimalizowania cykli narzutu, sekwenser daje możliwość wykonania skoku jednostkowego, wywołanie programu i powrót w
pojedynczym cyklu. Z wewnętrznej pętli licznika i pętli stosu, procesor wykonuje kod pętli zaczynając od zera. Bez wyraźnego
rozkazu skoku instrukcje są wymagane do pętli.
Szyny - procesory posiadają pięć wewnętrznych szyn. Szyna adresowa pamięci programu (PMA) oraz szyna adresowa
pamięci danych (DMA) są używane wewnętrznie do połączeń adresowych z pamięcią programu i danych. Szyna danych pamięci
programu (PMD) i szyna danych pamięci danych (DMD) są używane do połączenia danych z przestrzenią adresową. Szyny są
połączone wewnątrz pojedynczą zewnętrzną szyną adresową i pojedynczą zewnętrzną szyną danych; BMS, DMS, PMS to
sygnały wyboru różnych przestrzeni adresowych. R - szyna pośrednich wyników transferu bezpośrednio pomiędzy
różnorodnymi jednostkami liczącymi.
Szyna PMA jest 14 bitowa pozwala na 16KB/s połączonych kodów rozkazu i danych. Szyna PMD o szerokości 24- bitów.
Szyna DMA ma szerokość 14 bitową pozwalającą rozkazy dostępu 16K słów danych. Szyna DMD o szerokości 16 bitów. Szyna
danych DMD dostarcza ścieżkę potrzebną do przesłania zawartości pewnych rejestrów w procesorze do innych rejestrów lub
jakiejś komórki pamięci danych w pojedynczym cyklu. Adresowanie pamięci danych możliwe jest poprzez określenie adresu w
kodzie rozkazu (adresowanie bezpośrednie) lub z wyjścia generatora adresu danych (adresowanie pośrednie).
Dostęp do danych w pamięci programu możliwy jest tylko przy adresowaniu pośrednim. Szyna PMD często może być
używana do transferu danych do i z jednostek liczących poprzez ścieżki rozkazu lub vi PMD-DMD wymianę jednostki.
Sprzętowy system przerwań - procesory należące do rodziny ADSP-2100 są ponadto wyposażone w sprzętowy system
przerwań. Najczęściej jedno z nich (maksymalnie 3) jest przerwaniem zewnętrznym, natomiast pozostałe są generowane przez
układy wewnętrzne procesora. Wszystkim przerwaniom w sposób sztywny są przypisane priorytety. Każde z przerwań można
przy tym zamaskować, zerując odpowiedni bit w rejestrze maski przerwań IMASK.
Kontroler przerwań pozwala procesorowi reagować na przerwania z minimalnym narzutem. Zależą od trzech wejściowych
pinów przerwań zewnętrznych,IRQ0, IRQ1, oraz IRQ2.
IRQ2 jest zawsze dostępny jako pin dedykowany; IRQ1 oraz IRQ0 mogą być alternatywnie skonfigurowane jako część
szeregowego portu 1. ADSP-21xx często opiera się na przerwaniach wewnętrznych z zegara, portu szeregowego oraz portu
interfejsu hosta (tylko ADSP-2111). Przerwania są wewnętrznie priorytetowane oraz indywidualnie maskowane (z wyjątkiem
dla RESET który jest niemaskowalny ). Piny wejść IRQx mogą być programowane dla obu poziomów lub czułości brzegowej.
Priorytety przerwań dla wszystkich procesorów ADSP-21xx są pokazane w tabeli
Źródło przerwania
Przerwanie, Adresy wektorowe
ADSP 2105
RESET rozpoczęcie pracy
IRQ2 0x0004
0x0000
SPORT1 transmitowanie lub IRQ1
0x0004 (wysoki priorytet)
SPORT1 odbiór lub IRQ0
0x0010
Zegar
0x0014
0x0018 (niski priorytet)
ADSP-2101/2103/2115/216x
RESET rozpoczęcie pracy
IRQ2 0x0004
0x0000
SPORT0 transmitowanie lub IRQ1
0x0004 (wysoki priorytet)
SPORT0 odbiór lub IRQ0
0x0008
SPORT1 transmitowanie lub IRQ1
0x000C
SPORT1 odbiór lub IRQ0
0x0010
Zegar
0x0014
0x0018 (niski priorytet)
ADSP-2111
RESET rozpoczęcie pracy
IRQ2 0x0004
HIP zapis z hosta
0x0000
HIP odczyt z hosta
0x0004 (wysoki priorytet)
SPORT0 transmitowanie lub IRQ1
0x0008
SPORT0 odbiór lub IRQ0
0x000C
SPORT1 transmitowanie lub IRQ1
0x0010
SPORT1 odbiór lub IRQ0
0x0014
Zegar
0x0018
0x001C
0x0020 (niski priorytet)
Reset - Zainicjowany sygnał RESET całkowicie resetuje ADSP21-xx. Jeśli zastosowany zostanie sygnał RESET podczas
inicjacji załączania, musi być podtrzymany tak długo aż wewnętrzny zegar procesora się ustabilizuje. Jeśli sygnał RESET
zastosowany zostanie po czasie załączenia i częstotliwość wejścia zegara się nie zmienia, wewnętrzny zegar procesora
kontynuuje pracę i nie wymaga tego czasu stabilizowania.
Zegar - każdy z procesorów rodziny ADSP-2100 jest wyposażony w szybki, programowalny licznik-zegar. Np. dla
procesora ADSP-2111 taktowanego zegarem o częstotliwości 20 MHz pozwala on odmierzać odcinki czasu do 3,28 ms z
rozdzielczością 50 ns lub odcinki czasu 839 ms z rozdzielczością nie mniejszą niż 12,8 ms.
Sygnały zegarowe - W ADSP-21xx wejście CLKIN może być sterowane przez reznonator kwarcowy lub przez
zewnętrzny sygnał zegarowy TTL-kompatybilny. Wejście CLKIN nie powinno być zatrzymywane lub zmieniana jego
częstotliwość podczas wykonywania operacji i nie powinno pracować poniżej sprecyzowanej częstotliwości.
Jeśli używa się zewnętrznego zegara, powinna być kompatybilność jego sygnału z prędkością wykonywania się instrukcji.
Sygnał powinien być podłączony do wejścia CLKIN; w tym przypadku wejście XTAL musi być odłączone.
Ponieważ ADSP-21xx zawierają wewnątrz układu obwód oscylatora, może być używany zewnętrzny rezonator kwarcowy.
Rezonator kwarcowy podłącza się pomiedzy piny CLKIN i XTAL, z dwoma kondensatorami podłączonymi do masy.
CLKIN
XTAL
CLKOUT
ADSP-21xx
Porty szeregowe
Wszystkie procesory mają dwa porty szeregowe (SPORT 0, SPORT1) za wyjątkiem ADSP – 2105 który
posiada tylko port SPORT1.
Ich cechy charakterystyczne to:
 praca w trybie dupleksowym; część nadawcza jest niezależna od części odbiorczej;
 podwójne buforowanie; część nadawcza (i odbiorcza) ma bufor przechowujący dane przeznaczone do wysłania (lub
odbierane) oraz rejestr zamieniający dane z formatu szeregowego na równoległy i odwrotnie;
 możliwość synchronizacji pracy portu zegarem zewnętrznym;
 możliwość zmiany długości słowa w granicach od 3 do 16 bitów;
 dokonywanie w locie dekompresji (kompresji) danych odbieranych (lub przekazywanych) z kodeka;
 możliwość umieszczania danych w buforze kołowym kosztem jednego cyklu zegarowego, bez przerywania pracy
procesora;
 praca na przerwaniach; nadejście (lub wysyłanie) danych jest sygnalizowane przerwaniem;
 możliwość realizacji transmisji z podziałem kanału w dziedzinie czasu (system TDM).
Porty szeregowe dostarczają całkowitego synchronicznego, szeregowego połączenia z optymalną
kompansją w sprzęcie. Jest dostępny duży wybór ramowej lub całoramowej transmisji danych. Każdy
SPORT może być generowany wewnętrznym programowalnym zegarem szeregowym lub zewnętrznym
zegarem.
Każdy port szregowy posiada 5 pinów przesyłających nasępujące sygnały:
Nazwa sygnału
SCLK
Zegar (wej/wyj)
RFS
Synchronizacja ram odbioru (wej/wyj)
TFS
Synchronizacja ram nadawania (wej/wyj)
DR
Odbiór szeregowy danych
DT
Przekazywanie szeregowe danych
HIP - niektóre procesory są wyposażone w port do komunikacji z jednostką nadrzędną HIP (host interface port). Z punktu
widzenia procesora jest to zespół rejestrów umieszczonych w przestrzeni adresowej danych, pełniących rolę skrzynki pocztowej
pomiędzy procesorem a urządzeniem zewnętrznym pracującym całkowicie asynchronicznie w stosunku do niego. Nadejście
komunikatu z urządzenia zewnętrznego sygnalizowane jest przez HIP przerwaniem. Rejestry HIP pozwalają się także
zorientować procesorowi czy wysłany na zewnątrz przez niego komunikat został odebrany przez urządzenie zewnętrzne. HIP
umożliwia procesorowi nadrzędnemu zresetować procesor sygnałowy, załadować program do jego pamięci i uruchomić go, czyli
jest to pełna kontrola pracy procesora DSP.
Przetwornik A/C i C/A - procesory DSP analogowo-cyfrowe mają ponadto 16-bitowy przetwornik A/C i 16-bitowy
przetwornik C/A. Oba są przetwornikami z przetwarzaniem typu delta-sigma, próbkującymi sygnał z częstotliwością 8 kHz.
Przetworniki te są uzupełnione o filtry antyaliasingowe oraz filtry odtwarzające. Możliwa jest również programowa zmiana
wzmocnienia w torze przetwarzania A/C i C/A.
Zwiększenie rozdzielczości i jakości przetworników A/C i C/A powoduje konieczność poprawy dokładności obliczeń
algorytmów stosowanych przy cyfrowym przetwarzaniu sygnałów. Wprowadzenie arytmetyki zmiennoprzecinkowej pozwala
na uniknięcie kłopotliwego skalowania wyniku przy działaniach stałoprzecinkowych, potrzebnego do zachowania odpowiedniej
poprawności wyniku. W przypadku działań stałoprzecinkowych konieczne jest dokładne określenie maksymalnych wartości
sygnału wejściowego.
Wzrost sygnału wejściowego ponad poziom założony może zaowocować nasycaniem się wyników pośrednich i znacznym
wzrostem zniekształceń nieliniowych. Z kolei przy przetwarzaniu niskich sygnałów występuje znaczne zmniejszenie
dokładności obliczeń ze względu na kwantyzację, a to powoduje znaczne zmniejszenie stosunku sygnału użytecznego do szumu.
Przy zastosowaniu arytmetyki zmiennoprzecinkowej problemy te nie występują, ponieważ liczby zmiennoprzecinkowe ze
względu na swoją naturę niejako "automatycznie" dostosowują się do dynamiki sygnału wejściowego, zapewniając praktycznie
nieograniczony zakres liniowości oraz dużą dokładność nawet przy małych poziomach sygnału. Dużą korzyścią jest również
uproszczenie pisania programów. Programista jest zwolniony od konieczności dostosowywania istniejących algorytmów w celu
zapewnienia odpowiedniej dynamiki sygnału w każdym punkcie programu. Wpływa to znacznie na skrócenie czasu pisania
programu, a zatem również i na zmniejszenie kosztów poszczególnych zastosowań.
Literatura:
www.elektronika.pl/C1/pc_1.htm
www.arton-el.com.pl/dsp.htm
www.analog.com
Analog Devices – podręczniki rodzin 21xx i 210xx
Schemat blokowy ALU
PMD bus
DMD bus
AX0, AX1
AY0, AY1
AF
AZ
AN
AC
AV
AS
AQ
ALU
AR
R bus
CI
\
RDZEŃ PROCESORA
DAG1
adresowanie tylko DM
DAG2
adresowanie DM i PM
możliwość odwracania bitów
możliwość pośrednich odgałęzień
I0
L0
M0
I4
L4
M4
I1
L1
M1
I5
L5
M5
I2
L2
M2
I6
L6
M6
I3
14
L3
M3
14
I7
14
14
ALU
AX0
L7
M7
14
14
MAC
AX1
AY0
AR
AF
AY1
MX0
MX1
MR0
MR1
MY0
MR2
SHIFTER
PM<->DM
SI
SE
SB
8
PX
SR1
SR0
SEKWENCER PROGRAMU
18
5
LOOP
STACK
4×18
18
ICNTL
IFC
PC
STACK
16×14
8
OWRCNTR
SSTAT
8
CNTR
COUNT
STACK
4×14
IMASK
MSTAT
ASTAT
STATUS STACK*
MY1
MF
Podstawowe cechy procesorów sygnałowych:




równoległe mnożenie z akumulacją, wykonywane w jednym cyklu,
generatory adresu ze specjalizowanymi trybami,
wydajny zestaw instrukcji z jednocyklowymi równoległymi operacjami matematycznymi i przesłań w pamięci oraz
sprawną realizacją pętli,
zintegrowany z procesorem moduł DMA i wewnętrzną pamięcią RAM dla jednoczesnych operacji wykonywanych
przez CPU i układy we/wy.
Generalny podział procesorów sygnałowych dokonuje się na kategorie:


procesory stałoprzecinkowe (ang. fixed-point DSP)
procesory zmiennoprzecinkowe (ang. floating-point DSP)
Rdzeń procesora składa się z:






szyn adresowych,
szyn danych,
kontrolera programu,
jednostki generacji adresu (AGU),
jednostki arytmetyczno-logicznej danych (ALU),
interfejsu do emulacji
ZEGAR
14
Adres
pamięci
programu
24
Dane
pamięci
programu
PAMIĘĆ
PROGRAMU
16/32K x 24
Adres
CLKOUT
CLKIN
ADSP-2100 Adres
14
16K x 16
pamięci
danych
Dane
pamięci
danych
PAMIĘĆ
DANYCH
Dane
16
Adres
RESET HALT TRAP
IRQ BR BG
4
PERYFERIA
Dane
Rys. Zmodyfikowana architektura Harvard na przykładzie ADSP-2100
Transfer Danych
GENERETOR ADRESU DANYCH - DAG
Generatory adresu danych DAG są jednostkami zaprojektowanymi do generowania adresów
pośrednich w celu wskazania danych w pamięci. Operują na danych 14-bitowych.
Każda jednostka posiada 3 różne typy rejestrów:
I (rejstry indeksowe): zawierają bieżący adres,
M (rejestry modyfikujące): zawierają różnicę pomiędzy bieżącym i następnym adresem,
L (rejestry długości): zawierają rozmiar bufora cyklicznego (dla zapewnienia normalnego liniowego adresowania ustawiane są
na 0).
Każda jednostka DAG zawiera po 4 rejestry każdego typu, numerowane od 0 do 3 dla DAG1 i od 4 do 7 dla DAG2. Rejestry L
i I są niezależne, dla przykładu DM(I0,M2) jest prawidłowe, lecz rejestr L jest przydzielony do korespondującego z nim rejestru
I.
Adresowanie pośrednie:
Procesory rodziny ADSP-2100 wykorzystują dwa tryby adresowania: bezpośrednie i pośrednie. Adresowanie pośrednie jest
realizowane przy wykorzystaniu rejestru I (indeksowego) i rejestru M (modyfikującego). Rejestr L podczas adresowania
liniowego musi być ustawiony na 0.
Przykład liniowego adresownia pośredniego:
I3=0x3800;
M2=0;
L3=0;
AX0=DM(I3,M2);
Poniższy przykład używa zmiennych pamięciowych i wskaźników adresowych:
.VAR/DM/RAM addr_ptr;
I3=DM(addr_ptr);
L3=0;
M1=0;
AX0=DM(I3,M1);
{zmienna do przechowywania adresu dostępu }
{I3 załaduj przy użyciu adresowania bezpośredniego}
{zabroń adresowania cyklicznego, adresowanie liniowe}
{nie stosuj modyfikacji z I3}
{AX0 załaduj adresując pośrednio}
Bufory cykliczne (adresowanie modulo)
Bufory cykliczne wykorzystują automatyczną implementację generowania adresów modulo dla dostępu do buforów
cykliczmnych. Do obliczenie kolejnego adresu wykorzystuje się następujące informacje:




bieżącą lokację, przechowywaną w rejestrze I (bez znaku – unsigned),
wartość modyfikującą, przechowywaną w rejestrze M (ze znakiem – signed),
długość bufora, przechowywaną w rejestrze L (bez znaku – unsigned),
bazowy adres bufora.
Następny adres jest obliczany zgodnie z wyrażeniem:
Nast. Adres  (I  M  B) Modulo(L)  B
gdzie:
I
= bieżący adres,
M
= modyfikacja adresu (ze znakiem),
B
= adres bazowy,
L
= długość bufora
M + I = zmodyfikowany adres
przy ograniczeniu warunkiem, że M  L .
Adres bazowy bufora cyklicznego o długości L jest 2n lub wielokrotnością 2n oraz ograniczeniu: 2 n 1  L  2 n .
Przykład:
I0=5, M0=1, L0=3, adres bazowy B=4.
(I0+M0-B) mod L0 + B = (5+1-4) mod 3 + 4 = 6
Kolejne generowane adresy podlegają sekwencji: 5, 6, 4, 5, 6, 4, ...
Dla M0=-1 (tzn. 0x3FFF) I0 generuje kolene wartości: 5, 4, 6, 5, 4, 6, 5, ...
Odwracanie bitów adresowych:
Logika odwracania bitów adresowych jest w pierwszym rzędzie stosowana w algorytmach FFT i polega na zmianie porządku
bitów w słowie adresowym (jak na rysunku). Odwracanie bitów możliwe jest tylko w jednostce DAG1.
porządek normalny
porządek odwrócony
13
0
12
1
11
2
10
3
9
4
8
5
7
6
6
7
5
8
4
9
3
10
2
11
1
12
0
13
Odwracanie bitów jest przeprowadzane przez zezwolenie/zabronienie odpowiedniego bitu stattusowego rejestru MSTAT. Kiedy
jest zezwolone, to wszystkie adresy generowane przy użyciu rejestrów indeksowych I0-3 posiadają na wyjściu odwrócone bity.
Jest również możliwe odwracanie bitów przy szerokości mniejszej niż 14 przy wykorzystaniu rejestru M (patrz “modyfikacja
Butterfly” rozdz.6. Jednowymiarowa FFT – Digital Signal Processing...)
Programowanie dostępu danych
Tablice deklarowane są przykładowo dyrektywą:
.VAR/DM coeffficients[128];
Deklaracja taka rezerwuje tablicę 128 elementów 16-bitowych w pamięci danych (DM). Operatory specjalne: ^ i % odnoszą się
odpowiednio do adresu zmiennej i do jej długości.
I0=^coefficients;
{wskażnik adresu bufora}
L0=0;
{rejestr L ustaw na 0}
MX0=DM(I0,M0);
{załaduj MX0 z bufora}
alternatywnie:
MX0=DM(coefficients);
Inicjalizacja tablicy może odbywać się przy wykorzystaniu dyrektywy assemblera:
.INIT coefficients: <nazwa_pliku.dat>
Obsługa bufora cyklicznego:
.VAR/DM/CIRC coefficients[128];
L0=%coefficients;
{długość bufora cyklicznego}
I0=^coefficients;
{wskaźnik na adres pierwszego elementu bufora}
M0=1;
{ zwiększ o 1 lokalizację za każdym razem]
.....
MX0=DM(I0,M0);
{załaduj MX0 z bufora}
MX0=DM(I0,M0);
ZAMIANA MAGISTRAL PMD ↔ DMD
SPECJALNA JEDNOSTKA PMD-DMD REALIZUJE POŁĄCZENIE POMIĘDZY MAGISTRALĄ PAMIĘCI DANYCH (DMD) A PAMIĘCIĄ
PROGRAMU (PMD). PONIEWAŻ MAGISTRALA PMD JEST 24-BITOWA, A MAGISTRALA DMD JEST 16-BITOWA, DANE NIE MOGĄ
BYĆ TRANSMITOWANE BEZPOŚREDNIO, LECZ PRZY WYKORZYSTANIU WEWNĘTRZNEGO REJESTRU PX.
PM(I4,M4)=AR;
Dane z rejestru AR (poprzez magistralę DMB) zostaną przesłane do lokacji w pamięci programu PMD.
przykład:
AR=1234H, PX=00H, PM(I4,M4)=123400H
SI=PM(I4,M4);
Dane z pamięci programu PM(I4,M4) przesyłane są do rejestru SI (rej. wejściowy jednostki przesuwającej). np.
PM(I4,M4)=1F2C3DH, po operacji SI=1F2CH a PX=3DH.
Rys. Zestawienie wybranych rodzin procesorów Analog Devices
Rys. Wewnętrzna architektura ADSP-2100
Porównanie procesorów ADSP-2181, TMS320C5x i DSP56000
Głównym celem porównania jest określenie przydatności procesorów do wybranych
zastosowań w aplikacjach DSP.
Tabela. Porównanie właściwości wybranych procesorów DSP
Procesor DSP
Pamięć RAM w układzie scalonym
Pamięć RAM poza układem scalonym
(„Glue-Less”) i interfejs we/wy
Moc obliczeniowa DSP
ADSP-2181
32K słów
DSP56002
1K słów
TMS320C50
9.5K słów
TMS320C53
3.5K słów
Tak
Nie
Nie
Nie
33 MIPS
20 MIPS
40 MIPS
40 MIPS
TEXAS INSTRUMENTS TMS320C5X
Procesor sygnałowy TMS320C5x jest stało-przecinkowym procesorem 16-bitowym w zależności od wersji zawiera do
9,5K słów pamięci wewnętrznej RAM i do 16K słów pamięci ROM, port szeregowy, szeregowy port TDM (time-divisionmultiplexed) oraz 16-bitowy zegar.
Tabela. Cechy porównawcze procesora Texas Instruments TMS32C52
Cechy porównawcze
Pamięć wewnętrzna
Pamięć zewnętrzna
Interfejs urządzeń We/Wy
DMA
TMS320C52
1k x 16-bit wewnętrrzen pamięci całkowitej RAM .
Pamięc ta jest dostępna jako pamięć danych i programu.
Dostęp do pamięci zewnętrznej wymaga co najmniej dwóch
cykli we wszystkich zewnętrznych zapisach pamięci.
Nominalny czas dostępu do pamięci wynosi 12ns (przy użyciu
procesora z zegarem 80 MHz).
64k x 16-bit przestrzeni we/wy dla urządzeń zewnetrznych
Zewnętrzny kontroler DMA, operacje przetwarzania DSP są
zawieszone podczas tranferu DMA.
Cztery 16 x 4 bity
zewnętrzne SROM
TMS320C53
WR
R/W
RD
OE
DANE
DANE
ADRES
ADRES
Zezwolenie RAM
STRBO
DS
DEKODOWANIE
LOGIC ZNE
ADRESU
Zezwolenie DAC
WR
RD
ADRES
DANE
(40 MIPS DSP z wewnętrznym RAM o 3.5 K słów)
CS
A13
A14
CS
WR
RD
ADRES
DANE
DAC
Rys. TMS320C53 z dodatkową pamięcią, dekodowaniem logicznym i z DAC
Procesor wymaga dodatkowej pamięci zewnętrznej z dekodowaną logiką dostępu do pamięci i urządzeń zewnętrznych.
Dodatkowe komponenty wydłużają czas i koszt operacji DSP.
Motorola DSP56000
Procesor DSP56000 może być 16 lub 24-bitowym, stałoprzecinkowym procesorem sygnałowym.
Zawiera 1K słów pamięci, port równoległy, dwa porty szeregowe, układ kodująco-dekodujący i zegar.
Tabela. Cechy porównawcze procesora Motorola DSP 56002
Cechy porównawcze
Pamięć wewnętrzna
Dostęp do pamięci zewnętrznej
Interfejs urządzeń We/Wy
DMA
DSP 56002
Matryca pamięci 256 x 256 słów, 512 słów pamięci programu
Możliwy jest dostęp do pamięci zewnętrzej w ciągu jednego
cyklu instrukcji DSP. Nominalny czas dostępu wynosi 15 ns
(przy zegarze 66 MHz procesora DSP56002)
Urządzenia zewnętrzne wymagają pamięci mapowanej oraz
dekodowania adresu w przestrzeni pamięci zewnętrznej.
Nie obsługuje DMA
Układ aplikacyjny DSP5600 wymagana stosowania dodatkowej zewnętrznej pamięci z
dekodowaną logiką dostępu do pamięci i urządzeń peryferyjnych. Powoduje to, podobnie jak w
przypadku procesora firmy TI wzrost czasu i kosztów przetwarzania. Ponieważ procesor ten nie ma
wspomagania DMA dostępu do pamięci zewnętrznej i urządzeń peryferyjnych obciąży to znacznie
procesor przy przetwarzaniu.
Trzy 32 x 8 bitów
zewnętrzne SROM
DSP56002
WR
R/W
RD
OE
DANE
DANE
ADRES
ADRES
Zezwolenie RAM
PS
DS
X/Y
DEKODOWANIE
LOGICZNE
ADRESU
Zezwolenie DAC
WR
RD
ADRES
DANE
(20 MIPS DSP z wewnętrznym RAM o 1.5 K słów)
CE
CS
A13
A14
CS
WR
RD
ADRES
DANE
DAC
Rys. DSP56002 z dodatkową pamięcią, dekodowaniem logicznym i z DAC
Moduł EZ-KIT Lite





procesor - ADSP-2181 KS-133 (moc obliczeniową 33 MIPS),
interfejs analogowy - dwukanałowy układ kodująco – dekodujący AD1847,
analogowe wejścia
- para sprzężonych, dwukanałowych wejść liniowych
- para sprzężonych, dwukanałowych wejść mikrofonowych 20mVRMS AC,
analogowe wyjścia - para sprzężonych, dwukanałowych wyjść liniowych 1VRMS AC
zasilanie - 8 do 10V DC przy 300mA
Rys. Moduł EZ-KIT Lite
Rys. Architektura modułu EZ-KIT lite
Pamięć programu
Używana na płytce zewnętrzna pamięć programu jest typu EPROM o organizacji 128k x 8 bitów.
Podczas restartu systemu ADSP-2181, wewnętrzny układ BDMA (Byte Memory
DMA) załadowuje pierwsze 32 słowa pamięci programu z obszaru pamięci
bajtowej. Wykonywanie programu jest jednak wstrzymane, dopóki wszystkie 32
słowa nie są załadowane.
Diody LED
D1 – dioda koloru czerwonego - jest kontrolowana przez wyjście FL1 procesora ADSP-2181. Stan
wskaźnika można kontrolować programowo przez wpisanie do wewnętrznego rejestru 0 lub
1.
D2 – dioda koloru zielonego – włączona, gdy dostarczane jest zasilanie do modułu.
Przełączniki
S1 - jest przyciskiem restartu. Użycie tego przełącznika powoduje, że procesor ADSP-2181 i kodek
AD1847 wchodzą do stanu restartu sprzętowego.
S2 - jest przełącznikiem wywołującym przerwanie. Użycie go powoduje, że ADSP-2181 otrzymuje
zgłoszenie przerwania IRQE. Procesor wykonuje wtedy aktualny program obsługi przerwania IRQE
(jeśli obsługa przerywania jest umożliwiona programowo).
Wyjścia przełączników są zabezpieczone elektronicznie, by zapobiec wielokrotnej transmisji z
powodu mechanicznego odbicia kontaktów.
Kodek AD1847
Kiedy AD1847 jest aktywowany na płytce EZ - KIT Lite, uzyskujemy dostęp do sygnałów wejścia i
wyjścia audio w dzięki mini gniazdom stereo.
Gniazdo liniowe Mikrofon / Wejście jest połączone do pinów LINE_IN_L (lewego) i LINE_IN_R
(prawego) albo do MIC1 i MIC2 SoundPort Stereo kodeka AD1847 w zależności od ustawienie zworek
JP2 (Rys.3.3).
Gniazdo wyjścia liniowego jest połączone z pinami kodeka lewym (L) LINE_OUT i prawym (R)
LINE_OUT.
Złącza portu rozszerzeń
Dwie złącza portu rozszerzeń umożliwiają dostęp do magistral sygnałowych ADSP- 2181. Jedną z
możliwości użycia tych złącz, poza testowaniem, jest sterowanie nadrzędne. Wszystkie przerwania, szyny
sygnałowe i sygnały PWM są dostępne przez te dwa porty.
Złącze EZ-ICE
Emulator ADSP-218x EZ-ICE jest zewnętrznym modułem przeznaczonym do zaawansowanego
sprzętowego testowania systemu ADSP-2181. Emulator składa się z osprzętu, stałego oprogramowania
komputera nadrzędnego i złącza komunikacyjnego. ADSP-2181 łączy jednoukładowe wspomaganie
emulatora poprzez 14 -pinowy interfejs ICE - Port.
Program monitora systemowego
Producent ADSP-2181 EZ-KIT Lite wyposażył ten moduł w stałe oprogramowanie nazywane
monitorem systemowym. Ułatwia ono w dużym stopniu przygotowanie oprogramowania użytkownika. Po
włączeniu płytki, a także po każdym restarcie systemu program monitora realizuje podstawowe testy
(selftest), ustawia podstawowe przerwania, rejestry i zgłasza gotowość do działania. Monitor ten umożliwia
autotestowanie płytki, ładowanie skrośne programów napisanych przez użytkownika, ładowanie skrośne
danych i uruchamianie zapisanych programów.
EZ - ICE wykonuje pełny zakres funkcji, zawierających:








standardowe operacje,
do 30 punktów wstrzymań programów,
operacje krokowe albo praca z pełną szybkością,
zawartość rejestrów i pamięci mogą być analizowane i zmieniane,
funkcje PC ładowania skrośnego (z ang. downloading i uploading),
emulacja instrukcji programu inicjalizującego i wykonywanego,
pełna asemblacja i deasemblacja instrukcji,
testowanie na poziomie języka źródłowego C.
Kodek AD1847
Parametry AD1847:









jednoukładowy zintegrowany 16-bitowy kodek audio stereo /*,
programowane wzmocnienie i tłumienie,
obudowy typu PLCC i TQFP,
wielokanałowe wejścia i wyjścia stereo ,
analogowe i cyfrowe mieszanie sygnałów,
filtry sygnałowe zintegrowane w układzie scalonym: cyfrowa interpolacja i decymacja; filtr dolno
przepustowy wyjść analogowych,
częstotliwość próbkowania od 5.5 kHz do 48 kHz,
szeregowy cyfrowy interfejs kompatybilny z rodziną ADSP-21XX/21XXX,
zasilanie 5V ( Imax = 140mA).
Interfejs równoległy
AD1845
AD1848K
AD1848J
AD1846
AD1845
Procesor
audio
AD184x
AD181x
Kodek
multimedialny
Interfejs szeregowy
AD1819
AD1849K
Kodek
multimedialny
AD1849J
AC ‘98
AD1847
AD1843
Rys. Rozwój rodziny kodeków AD184x
Kodek zawiera dwukanałowy konwerter  analog-cyfra (ADC) i parę dwukanałowych konwerterów
 cyfra-analog (DAC). Wejścia ADC mogą zostać wybrane z czterech par dwukanałowych sygnałów
analogowych: LINE1, LINE2, pomocnicze ("aux”) LINE#1 i wyjście DAC z mieszacza. Kontrolowane
programowo wzmocnienie pozwala na niezależne wzmocnienie dla każdego kanału wchodzącego do ADC.
AD1847 może wygenerować 16-bitowe dane w zapisie uzupełnieniowym do 2, PCM , 8 - bitowe bez
znakowe wartości bezwzględne liniowych danych PCM.
Technologia Sigma-Delta - konwertery tego typu posiadają bardzo wysoką rozdzielczość uzyskiwaną przez nadpróbkowanie i
modulacje (integracja zwrotna). Wykorzystuje ona nisko wydajne obwody analogowe przez przesuniecie obciążenia na cyfrowe
obwody CMOS. Ta metoda jest atrakcyjnym wyborem dla aplikacji audio ze względu na swój umiarkowany koszt rysunek
bardzo dobre parametry techniczne (liniowość charakterystyki przetwarzania).
*
Rys. Schemat blokowy AD1847


Wszystkie wejścia są bez składowej stałej
Analogowe sygnały dwukanałowe LINE1, LINE2, AUX1, i wyjście DAC z
mieszacza są połączone przez multiplekser do wewnętrznego programowanego
wzmacniacza (PGA)
Pozwala to na wybór niezależnego, selektywnego wzmocnienia dla każdego kanału od 0 do
22.5dB w krokach co +1.5dB.
Kodek może pracować w trybie dwukanałowym oraz w jednokanałowym.
Analogowe sygnały stereo AUX1 i AUX2 mogą być mieszane w analogowym obszarze z wyjściem
DAC. Każdy kanał pomocniczego wejścia analogowego może zostać niezależnie wzmocniony / tłumiony
od +12dB do –34.5dB w krokach mających –1.5dB, lub też całkowicie stłumiony. Nawet, jeśli AD1847
nie odtwarza danych z DAC, funkcja analogowego mieszania może być nadal aktywna.
Konwertery  analogowo-cyfrowe posiadają czterostopniowy modulator. Pasywny filtr jednobiegunowy
jest wszystkim, co jest potrzebne do antyaliasingu analogowego wejścia, ponieważ ADC nadpróbkowują
64-krotnie. ADC zawierają cyfrowe filtry decydujące, które filtrują dolnopasmowo wejście do 0,4 x Fs (Fs
– częstotliwość próbkowania) DAC zawiera programowane tłumienie i dolnoprzepustowy cyfrowy filtr
interpolujący. Tłumienie w każdym kanale DAC jest niezależne i może być regulowane od 0dB do –94.5dB
w 1.5dB krokach a także możliwe jest pełne wytłumienie. Cyfrowe wyjście stereo ADC może być
miksowane cyfrowo z wejściem do DAC.
AD1847 działa z dwoma zewnętrznymi kryształami kwarcu, z XTAL1 i XTAL2. Dają one szeroki zakres
doboru częstotliwości próbkowania. Wybór po między rezonatorami dokonywany jest za pomocą
multipleksera. Częstotliwości rezonatorów kwarcowych wynoszą 16.9344MHz i 24.576MHz. Dzięki nim
można ustawić następujące możliwe częstotliwości próbkowania (Tabela)
Dostępne
częstotliwości
próbkowania
Tabela. Częstotliwości próbkowania w AD1847
XTAL1
24.576 MHz
8 kHz
9.6 kHz
16 kHz
27.42857 kHz
32 kHz
48 kHz
XTAL2
16. 9344MHz
5.5125 kHz
6.615 kHz
11.025 kHz
18.9 kHz
22.05 kHz
33.075 kHz
37.8 kHz
44.1 kHz
UWAGA: nie można regulować płynnie częstotliwości próbkowania.
Spowodowane to jest dzielnikami częstotliwości, które zostały zastosowane w AD1847. Mimo
to, kodek ten daje szerokie możliwości doboru częstotliwości próbkowania w zakresie pasma
akustycznego.
Więcej informacji w pliku AD1847.pdf
NARZĘDZIA I OPROGRAMOWANIE
NARZĘDZIA DSP
Oprogramowanie przeznaczone do tworzenia programów użytkowych DSP jest zestawem
współpracujących z sobą modułów takich jak: program budowy systemu, kompilator języka
asemblera, program konsolidujący, program PROM Splitter*, symulatory i kompilatory języka C.
Proces projektowania systemy DSP i kolejność wykorzystania modułów systemu projektowego w
kolejnych krokach przedstawia Rys.
PROGRAM BUDOWY SYSTEMU
Program budowy systemu jest programowym narzędziem do opisu środowiska sprzętowego.
Każdy system ADSP-21xx posiada unikalną sprzętową konfigurację i może używać różnych
zasobów przestrzeni pamięci.
Programu budowy systemu określa konfigurację sprzętu, w tym rodzaje i zakresy użytkowania
pamięci, adresy portów wejścia / wyjścia, w oparciu o informacje przekazane przez plik wsadowy
(.SYS). Wynikiem działania jest plik konfigurujący działanie programu konsolidującego (Rys).
Program ten na podstawie pliku wyjściowego (.EXE) tworzy moduł binarny przeznaczony do zaprogramowania pamięci typu
EPROM
*
Program budowy
systemu
Krok 1.
OKREŚLENIE ARCHITEKTURY
Krok 2.
GENERACJA KODU
Plik
.C
Plik
.ACH
Kompilator
ANSI C
Krok 3.
Plik
.DSP
Program
asemblujący
EZ-LAB Evaluation Board
lub
specjalistyczne karty PC
PROGRAMY
TESTUJĄCE
Krok 4.
Plik
.EXE
Symulator programowy
Pełno wymiarowy emulator
lub
emulator EZ-ICE
TESTY W SYSTEMIE
DOCELOWYM
Program
konsolidujący
Płytka
docelowa
Krok 5.
Przetestowana
płytka DSP
KOŃCOWY SYSTEM
PRODUKCYJNY
PROM Splitter
= plik lub sprzęt użytkownika
= narzędzie rozwoju oprogramowania
= narzędzie rozwoju sprzętu
Rys. Proces projektowania systemu DSP
PLIK
SPECYFIKACJI
SYSTEMU (.SYS)
PROGRAM BUDOWY SYSTEMU
KOMUNIKATY
BŁĘDÓW LUB
STRESZCZENIE
ARCHITEKTURY
PLIK OPISUJĄCY
ARCHITEKTURĘ
(.ACH)
(Użyj komend systemu
operacyjnego by
zobaczyć wyjście)
Rys. Program budowy systemu
Program budowy systemu przetwarzając plik wsadowy, generuje plik opisujący architekturę
systemu DSP. Plik ten posiada rozszerzenie *.ACH
Program budowy systemu uruchamia się w linii poleceń komendą:
BLD21 nazwa_pliku_wsadowego [.sys]
Przykładowy plik wsadowy, określający konfigurację sprzętu:
.SYSTEM filtr
.ADSP2181;
.SEG/PM/RAM/ABS=0/CODE/DATA ext_pm[2048];
.SEG/DM/RAM/ABS=14336/DATA int_dm[1024];
.ENDSYS;
{nazwa system}
{określenie procesora}
{miejsce w pamięci programu, w którym
przechowywany jest kod programu oraz
przechowywana są dane}
{ miejsce w pamięci danych, w którym
przechowywane są dane}
{dyrektywa kończąca}
Kompilator języka asemblera
PLIK Z KODEM
ŹRÓDŁOWYM W
ASEMBLERZE (.DSP)
ZAŁĄCZANE
PLIKI
KOMPILATOR JĘZYKA ASEMBLERA
PLIK LISTINGU
(.LST)
PLIK
INICJALIZACJI
DANYCH (.INT)
PLIK
OBIEKTOWY
(.OBJ)
PLIK KODU
(.CDE)
Rys. Kompilator języka asemblera
Kompilator języka asemblera rodziny ADSP-2100 tłumaczy język asemblerowy na kod
obiektowy. Wydzielone fragmenty kodu lub danych nazywane się modułem. Moduły wchodzące do
kompilatora języka asemblera są nazywane modułami źródłowymi. Każdy plik powinien zawierać
jeden moduł. Moduły te są łączone w jeden plik wykonywalny.
Pliki z kodem źródłowym mogą być redagowane przy wykorzystaniu edytorów tekstu, tworzących
proste pliki tekstowe.
Kompilator języka asemblera czyta plik wejściowy i generuje cztery typy plików wyjściowych: plik
obiektowy (.OBJ), plik kodu (.CDE), plik listingu (.LST) oraz plik inicjalizacji (.INT). Pliki o
rozszerzeniach *.OBJ, *.CDE, *.INT są plikami wejściowymi do programu konsolidującego.
Plik obiektowy zawiera informacje dotyczące alokacji pamięci i definicji symboli. Plik kodu
zawiera instrukcje kodu operacji dla ADSP-21xx z wyraźnymi symbolami. Pliki inicjalizacji
zawierają dane dla inicjalizacji buforów danych. Plik listingu, który jest opcjonalny, dokumentuje
proces asemblacji.
Kompilator języka asemblera uruchamia się z linii poleceń komendą:
ASM21 nazwa_pliku [.DSP] [-opcje]
Nazwa_pliku jest plikiem wejściowym, który musi zawierać tylko jeden moduł kodu źródłowego. Opcje dają możliwość różnej
konfiguracji kompilatora języka asemblera.
PLIKI
INICJALIZACJI
DANYCH (.INT)
„ASM21”
PREPROCESOR C
PLIKI KODU
(.CDE)
PLIKI
OBIEKTOWY
(.OBJ)
PREPROCESOR ASEMBLERA
PLIKI INICJALIZACJI
BUFORA DANYCH
(.DAT)
PLIK OPISUJĄCY
ARCHITEKTURE
(.ACH)
JĄDRO ASEMBLERA
PROGRAM KONSOLIDUJĄCY
PLIK .CDE
PLIK .OBJ
PLIK OBRAZU
PAMIĘCI (.EXE)
PLIK LISTINGU
MAPY PAMIĘCI
(.MAP)
PLIK .INT
PLIK .LST
Rys. Schemat procesu kompilacji
PLIK TABLICY
SYMBOLI (.SYM)
Rys. Schemat procesu konsolidacji
Program konsolidujący
Program konsolidujący ADSP-21xx tworzy program wykonywalny łącząc wszystkie moduły.
Generuje trzy typy plików. Głównym plikiem wyjściowym jest plik o rozszerzeniu *.EXE. – jest to
plik wykonywalny. Opcjonalny plik *.MAP jest dokumentem procesu konsolidacji. Zaś opcjonalny
plik o rozszerzeniu *.SYM tworzy listę symboli napotkanych przez program konsolidujący, wraz z
ich wartościami absolutnymi i ich zakresem referencji.
Pliki inicjalizacji danych (.DAT) są określane w plikach z kodem źródłowym, a co za tym idzie nie
muszą być wyraźnie nazywane w wywołaniu programu konsolidującego. Pliki danych są załączane
przez program konsolidujący.
Program konsolidujący uruchamia się z linii poleceń komendą:
LD21 plik1 [plik2...][-opcje...]
Plik programu konsolidującego posiada wiele opcji pozwalających w szerokim zakresie określać
działanie tego programu.
Ogólna charakterystyka filtrów cyfrowych.
Wprowadzenie
Rozwój cyfrowego przetwarzania sygnałów zapoczątkowany został przez projektantów systemów
analogowego przetwarzania sygnałów, którzy usiłowali symulować procesy zachodzące w tych układach
bez potrzeby budowania kosztownych prototypów. Te pionierskie prace były przyczynkiem do powstania
w latach 80-tych dużego działu elektroniki zajmującego się cyfrową obróbką sygnałów (z ang. Digital
Signal Processing – DSP).
Cyfrowa obróbka sygnału obejmuje:
 modelowanie sygnałów fizycznych za pomocą ciągów;
 modelowanie zależności między sygnałami za pomocą operatorów różnicowych;
 przetwarzanie ciągów za pomocą układów cyfrowych.
Aby sygnał analogowy mógł być poddany cyfrowej obróbce, musi być przetworzony na sygnał cyfrowy.
Dokonuje się tego za pomocą przetwornika analogowo-cyfrowego. Częstotliwość próbkowania
determinuje największą częstotliwość sygnału, która może być jednoznacznie odwzorowana podczas
przekształceń ADC-DAC, zgodnie z prawem Nyquista wynosi ona połowę częstotliwości próbkowania [6].
Cyfrowa obróbka sygnału polega na wykonywaniu operacji matematycznych na kolejnych
próbkach, co przy pomocy odpowiednich algorytmów obliczeniowych pozwala między innymi na filtrację
sygnału. Mówimy wtedy o filtracji cyfrowej z zastosowaniem filtrów cyfrowych.
Istnieje możliwość zaprojektowania i realizacji filtrów cyfrowych o dowolnych parametrach nawet takich,
których stworzenie przy zastosowaniu filtrów analogowych mogłoby się okazać bardzo trudne. Kolejną
przewagą filtrów cyfrowych nad analogowymi jest możliwość dowolnej modyfikacji ich charakterystyki w
trakcie filtracji, która sprowadza się do zmiany odpowiednich współczynników filtru. Można w ten sposób
łatwo tworzyć filtry adaptacyjne tzn. takie, których charakterystyka ulega zmianie w zależności od
nadchodzącego sygnału. W odniesieniu do filtrów istnieją jeszcze inne istotne zalety stosowania rozwiązań
cyfrowych. Po pierwsze możliwe jest przeprogramowanie urządzenia dokonującego cyfrowej obróbki
sygnału i dzięki temu całkowita zmiana jego charakterystyki amplitudowej i fazowej. Na przykład możemy
zmienić konkretny program danego filtru i z filtru dolnoprzepustowego utworzyć filtr górno-przepustowy
bez jakiejkolwiek zmiany sprzętowej.
Podstawowe wiadomości i właściwości filtrów cyfrowych
Filtry cyfrowe występują jako jeden z dwóch typów:
 SOI (z ang. FIR - Finite Impulse Response) - filtry o skończonej odpowiedzi impulsowej
 NOI (z ang. IIR - Infinite Impulse Response) - filtry o nieskończonej odpowiedzi cyfrowej
Jedną z najprostszych postaci jest filtr typu SOI nazywanymi również filtrem nierekursywnym [6],[7].
Filtr ten do uzyskania próbki sygnału wyjściowego wykorzystuje próbkę bieżącą i próbki przeszłe sygnału
wejściowego, nie korzysta z żadnych przeszłych próbek sygnału wyjściowego.
Na Rys. przedstawiony został przykładowy schemat blokowy filtru nierekursywnego.
x(n)
x(n-1)
x(n-2
x(n-3)
x(n-N-1)
Rys. Schemat blokowy filtru nierekursywnego
Można to również zapisać równaniem ogólnym:
N 1
y (n)   bk (n)  x(n  k )
k 0
gdzie: x(n) oznacza sygnał wejściowy, y(n) – sygnał wyjściowy, N – to rząd filtru, zaś bk(n) to
współczynniki filtru SOI.
Ogromnymi zaletami tych filtrów są: prostota projektowania, stabilność (filtry te się nie wzbudzają)
oraz możliwość uzyskania liniowej charakterystyki fazowo-częstotliwościowej, co nie powoduje
zniekształceń sygnału. Cecha ta jest bardzo znacząca w wielu zastosowaniach m.in. w pomiarach
biomedycznych. Wadą jednakże tych filtrów jest duża złożoność obliczeniowa w porównaniu z filtrami
rekursywnymi. Bardziej obrazowo można to wytłumaczyć następująco: aby filtr nierekursywny posiadał
stromą charakterystykę amplitudowo-częstotliwościową, szybko przechodził z pasma przejściowego do
pasma zaporowego, wymagana będzie znaczna ilość współczynników. Liczba ich będzie znacznie większa,
niż w przypadku filtrów rekursywnych o podobnej stromości zboczy. Jednakże technologiczny postęp
projektowania i produkcji układów elektronicznych jest tak duży, iż z roku na rok oferują one coraz większe
prędkości pracy, a co za tym idzie zmniejsza się ograniczenie zastosowań filtrów nierekursywnych.
Filtry o nieskończonej odpowiedzi impulsowej NOI (z ang. Infinite Impulse Response - IIR) różnią
się od filtrów SOI tym, iż posiadają pętlę sprzężenia zwrotnego. Próbki sygnału wyjściowego filtru zależą
od próbek sygnału wejściowego i poprzednich próbek sygnału wyjściowego. Można to zapisać równaniem
ogólnym o postaci:
N 1
y ( n)   x k ( n)  a k  y ( n  k )
k 0
gdzie: x(n) oznacza sygnał wejściowy, y(n) – sygnał wyjściowy, N – to rząd filtru, ak(n) – współczynniki
filtru NOI.
Wielką zaletą filtrów rekursywnych jest możliwość uzyskania bardzo stromych charakterystyk
amplitudowo- częstotliwościowych przy niewielkiej liczbie współczynników. We wszystkich systemach
ze sprzężeniem zwrotnym tak i w filtrach NOI, mogą na wyjściu wystąpić niestabilności i oscylacje o
nieskończonym czasie trwania.
Rys. przedstawia schemat blokowy filtru rekursywnego
y(n)
y(n- 1)
y(n-2)
y(n-3)
y(n-N-1)
Rys. Schemat blokowy filtru rekursywnego
Filtry cyfrowe rekursywne i nierekursywne różnią się dość znacznie między sobą. Podstawową różnicą
(obok różnic strukturalnych) jest ilość wykonywanych obliczeń, gdzie w przypadku filtru NOI ich liczba
jest znacznie mniejsza, niż w przypadki filtrów SOI.
Filtry SOI natomiast posiadają dużą stabilność łatwość projektowania oraz liniową charakterystykę fazowo
– częstotliwościową.
Algorytmy numeryczne DSP realizacji filtrów cyfrowych
Podstawowe algorytmy modelowania sygnałów ciągłych bazują na przekształceniach Laplace'a i
Fouriera. Fourier w roku 1822 opublikował fundamentalną rozprawę o przepływie ciepła, w której do opisu
zjawiska transportu ciepła zaproponował wykorzystanie szeregów Fouriera. Szeregi te znalazły do tej pory
wiele zastosowań, między innymi w analizie sygnałów. W zasadzie szeregi Fouriera mają zastosowanie w
analizie sygnałów okresowych, zaś przekształcenie Fouriera (całka Fouriera) jest stosowane w analizie
sygnałów aperiodycznych. Dyskretne przekształcenie Fouriera (DFT - Discrete Fourier Transform) stało
się popularne w latach 40 i 50 XX wieku, jako narzędzie cyfrowych technik obliczeniowych, jednak ze
względu na duże wymagania co do mocy obliczeniowych jego użycie było ograniczone. Dopiero
opracowanie algorytmu szybkiego przekształcenia (transformaty) Fouriera (Fast Fourier Transform - FFT)
o zredukowanej liczbie operacji matematycznych (operacji mnożenia i dodawania) doprowadziło do
powszechnego stosowania tego narzędzia.
Z kolei za pomocą transformaty Laplace'a opisuje się pojedyncze sygnały, natomiast po odpowiednim
rozszerzeniu i właściwej interpretacji jest ona nazywana transformatą Z, będącą podstawową zależnością
opisującą bloki filtrów cyfrowych [6], [7], [8].
Podstawowymi i najczęściej stosowanymi algorytmami filtracji w procesorach sygnałowych są
algorytmy splotu sygnałów wykorzystujące metodę bufora przesuwnego i metodę bufora kołowego
(cyklicznego). Głównymi elementami filtrów cyfrowych w architekturze DSP są bufory numeryczne
służące do przechowywania próbek wejściowych i wyjściowych, będących sumą ważoną aktualnej próbki
oraz M ostatnich próbek, procesor wykorzystuje bufor roboczy. Po nadejściu z przetwornika analogowocyfrowego kolejnej wartości x(n), bufor zostaje zaktualizowany. Następuje usunięcie najstarszej danej i
przesunięcie wszystkich próbek o jedną pozycję a na wolne miejsce zapisywana jest kolejna wartość. Nowe
dane są zawsze wpisywane na początku bufora. Na Rys. przedstawiona została ilustracja graficzna zasady
działania bufora przesuwnego.
Rys. Ilustracja graficzna zasady działania bufora przesuwnego
Jednakże w przypadku dużej ilości współczynników operacja przesuwania danych buforze jest zbyt
czasochłonna. W celu przyspieszenia algorytmu filtracji wykorzystuje się technikę bufora cyklicznego.
Rys.. ilustruje zasadę działania takiego bufora.
Rys. Ilustracja graficzna zasady działania bufora cyklicznego
W tej metodzie nowa dana zostaje nadpisana w miejsce najstarszej danej, po czym następuje przesuniecie
wskaźnika bufora tzn. przychodzące próbki zapisywane są w następnych „komórkach” bufora [7].
Metody projektowania nierekursywnych filtrów cyfrowych
Procedury projektowania rozpoczynają się od określenia wymaganej funkcji transmitancji, po czym
następuje obliczenie współczynników filtru, które dadzą założoną funkcje transmitancji. Najczęściej
stosowanymi metodami projektowania filtrów SOI są: metoda okien i metoda optymalna (Rameza) [6], [7],
[8].
Metoda okien
Metoda pod względem teoretycznym i implementacyjnym jest bardzo efektywna i szeroko
stosowana. Algorytm postępowania przy projektowaniu tą metodą można przedstawić z postaci kolejnych
kroków:
1.
Wybór rodzaju filtru (dolno- lub górnoprzepustowy, pasmowoprzepustowy lub pasmowozaporowy)
oraz jego częstotliwości granicznych;
2.
Analityczne wyznaczenie wzoru na dyskretną odpowiedź filtru za pomocą odwrotnego
przekształcenia Fourier’a
N /2
1
h( n) 
H (m) e j 2mn / N

N m  ( N / 2)1
sin ( x)
;
x
Wymnożenia obliczonego h(n) z założoną funkcją okna;
Przesunięciu wyliczonych współczynników w prawo o N/2.
otrzymując funkcję zbliżoną do f ( x) 
3.
4.
Wybrane funkcje okien
 Okno prostokątne:
w(n) = 1
 Okno trójkątne:
n
w(n) =
N /2
n
w(n) = 2N /2
dla n = 0, 1, 2 …. N-1;
dla n = 0, 1, 2 … N/2 oraz
dla n = N/2 + 1, N/2 + 2 … N-1;
 Okno Hanninga:
w(n) = 0,5 – 0,5 cos (2n/N)
 Okno Hamminga:
w(n) = 0,54 – 0,46 cos (2n/N)
 Okno Blackmana:
w(n) = 0,5 – 0,5 cos (2n/N) + 0,08 cos (4n/N)
dla n = 0, 1, 2 … N-1;
dla n = 0, 1, 2 … N-1;
dla n = 0, 1, 2 … N-1;
Metoda Rameza
Metoda Rameza (nazywana również metodą Parksa-McClellana lub metodą optymalną) znalazła
szeroką akceptację w praktyce. Jako wartości początkową ustalana jest częstotliwość graniczna fpass
częstotliwość początkowa pasma zaporowego fstop. Dodatkowo ustalany jest parametr nierównomierności
pasma przepustowego i zaporowego. Tak zadaną charakterystykę amplitudową Ap() aproksymuje się za
pomocą sumy kosinusoid wziętych ze współczynnikami wagowymi cn. Algorytm Rameza bazuje na
ogólnym twierdzeniu, mówiącym, że zawsze istnieje taki zbiór M+2 pulsacji m, m = 1, 2 … M+2, że
funkcja błędu przyjmuje dla tych pulsacji tylko wartości :
M

E ()  W ( m )   cn cos ( m  n)  Ap ( m )  (1) m 
n  0

m = 1, 2, … M+2;
i że są to jej wartości ekstremalne w zbiorze pulsacji , przy czym W() jest dowolną funkcją wagową.
Algorytm Rameza polega na iteracyjnym wyznaczeniu pulsacji m, wykonując kolejne kroki:
1.
2.
Przyjęcie wejściowych pulsacji m;
Rozwiązaniu układu równań i wyliczeniu współczynników cn i parametru 
1 cos(1 )
1 cos( )
2

:
:

1 cos( M 1 )
1 cos( M  2 )
...
...
:.
...
...
  c0   Ap (1 ) 


cos(M 2 )
 1 / W ( 2 )   c1   Ap ( 2 ) 
 

:
 :  
:
:

   
cos(M M 1 ) (1) M / W ( M 1 )  cM   Ap ( M 1 ) 
cos(M M  2 ) (1) M 1 / W ( M  2 )     Ap ( M  2 )
cos(M1 )
1 / W (1 )
Sprawdzenie czy amplituda oscylacji funkcji błędu E(m) dla  należącego do przedziału [0, ],
jest większa niż obliczone ; jeśli nie to koniec obliczeń i wyprowadzenie współczynników cn.
4.
W przeciwnym przypadku wyznaczenie M+2 pulsacji, dla których funkcja błędu posiada ekstrema
i przyjęcie ich za pulsacje ekstremalne m; powrót do punktu 2.
3.
Metoda ta jest nieco bardziej skomplikowana, jednakże często stosowana ze względu na wynik zbliżonych
do pożądanej charakterystyki amplitudowej.
Metody projektowania rekursywnych filtrów cyfrowych
Przy projektowaniu filtrów rekursywnych najczęściej stosuje się projektowanie bezpośrednie oraz
projektowanie pośrednie. W pierwszym przypadku metoda polega na dobraniu współczynników
wielomianu transmitancji filtru cyfrowego drogą minimalizacji błędu średniokwadratowego aproksymacji
zadanej charakterystyki częstotliwościowej. Tak jest na przykład w metodzie Yule’a – Walkera. Drugi
przypadek polega na przekształceniu filtrów analogowych do postaci cyfrowej [6], [7], [8].
Stosuje się wówczas metody:
 niezmienności odpowiedzi impulsowej;
 dopasowania transformacji Z
 transformacji biliniowej.
Zazwyczaj stosuje się projektowanie pośrednie z wykorzystaniem metody transformacji biliniowej.
Głównym założeniem tej metody jest spełnienie zależności:
Hc (z) = Ha (s),
z
gdzie:
(2 / T )  s 1  s(T / 2)

(2 / T )  s 1  s(T / 2)
jest funkcją przekształcenia filtru cyfrowego na analogowy. Hc(z) – transmitancja filtru cyfrowego, Ha (s)transmitancja filtru analogowego, zaś T jest okresem próbkowania sygnału dyskretnego. Transformacja
odwrotna ma postać:
s
2 z 1
T z 1
Kolejność projektowania rekursywnego filtru metodą biliniową jest następująca:
zadanie pulsacji granicznych filtru cyfrowego przedziału [0, ] oraz wymaganych wartości
tłumienia w paśmie zaporowym i przepustowym.
1.
2.
wyznaczenie pulsacji g dla filtru analogowego Ha (s), związanego z filtrem cyfrowym Hc (z):
2
 g  tg ( g / 2)
T
zaprojektowanie filtru analogowego zdefiniowanego przez zbiór parametrów (pulsacje graniczne,
tłumienia w pasmach zaporowych i przepustowych)
3.
wyznaczenie współczynników transmitancji filtru cyfrowego na podstawie transmitancji filtru
analogowego
4.
H c ( z )  H a ( s)
s  ( 2 / T ) ( z 1) / ( z 1)
Następnie obliczana jest odwrotna transformata Fourier’a, pozwalająca uzyskać współczynniki
filtru h(n).
5.
Program projektowania filtrów – FIR_designer
Jest to program napisany w oparciu o środowisko LabVIEW, generujący plik zawierający
współczynniki dla zadanych filtrów o odpowiedzi skończonej. Współczynniki są zapisywane w postaci
kodu 1.15 (jeden kropka piętnaście). Program ten daje możliwość zaprojektowania kilku różnych rodzajów
filtrów. Projektowanie odbywa się metodą okien. Do wyboru mamy sześć z nich, tj. prostokątne, trójkątne,
Blackmana, Kaisera – Bessela, Hamminga oraz Hanninga. W programie mamy możliwość określenia rzędu
filtru (max. 256) oraz częstotliwości odcięcia (Rys.). Próbkowanie odbywa się z częstotliwością stałą,
równą 48 kHz, ze względu na ustawione parametry kodeka. Aplikacje użytkowe filtrów ustawiają
programowo próbkowanie z tą częstotliwością, jest to maksymalna dostępna częstotliwość próbkowania
dla tego układu. Wykres podczas działania programu pokazuje nam, jaki jest przebieg zmian wartości
współczynników w funkcji numeru próbki (szerokości okna).
Rys. Panel czołowy programu FIR_designer
Budowa wewnętrzna programu została przedstawiona poniżej (Rys. – Rys.) przy wykorzystaniu
bibliotecznych procedur obliczania okien.
Rys. Ogólny wygląd diagramu programu – zadanie parametrów, obliczanie współczynników, przekształcenia na kod
1.15, dopełnienie do formatu 24-bitowego oraz zapis do pliku
Rys. Okno prostokątne
Rys. Okno Hanninga
Rys. Okno Hamminga
Rys. Okno trójkątne
Rys. Okno Blackmana
Szczegółowy opis działania programu:
1. Parametry wejściowe tj. częstotliwość odcięcia i rząd filtru zostają prowadzone do bloku obliczającego
współczynniki filtru,
2. Rząd filtru podany zostaje do bloku obliczającego okno wybranego typu,
3. Na współczynnikach filtru i obliczonym oknie jest przeprowadzona operacja splotu,
4. Otrzymany wynik jest przesyłany do części przekształcającej kod dziesiętny na kod 1.15 i zapisywany
w formacie 24-bitowym,
5. Obliczone współczynniki zostają zapisywane w pliku.
Przykładowy plik wyjściowy generowany przez FIR_designer:
066700
0B3F00
0FBE00
133500
151700
151700
133500
0FBE00
0B3F00
066700
Są to współczynniki dla filtru opartego na oknie prostokątnym, rząd filtru wynosi 10, zaś częstotliwość
odcięcia 4000 Hz.
Program konwersji kodu 1.15 - 1q15.vi
Kod 1.15 jest podstawowym sposobem zapisu liczb stałopozycyjnych. Reprezentacja liczb, z zakresu
od -1 do 1, w kodzie 1.15 jest stosowana ze względu na to, iż architektura rodziny ADSP-2100 została
zoptymalizowana dla takiego zapisu wartości numerycznych. W formacie 1.15 jest jeden bit znaku, jest on
bitem najbardziej znaczącym (MSB), oraz piętnaście bitów reprezentujących wartości od -1 do 1
pomniejszonego o najmniej znaczący bit (LSB).
Wagi poszczególnych bitów przedstawia Tabela 6.1
Tabela Wagi bitów dla liczb 1.15
-20
2-1
2-2
2-3
2-4
2-5
2-6
2-7
2-8
2-9
2-10
2-11
2-12
2-13
2-14
2-15
Przykładowe wartości w obu kodach zostały podane w Tabeli
Tabela Porównanie zapisu 1.15 z odpowiednikiem dziesiętnym
Liczba 1.15
Odpowiednik dziesiętny
0x0001
0.000031
0x7FFF
0xFFFF
0x8000
0.999969
-0.000031
-1.000000
Program dokonujący konwersji kodu 1.15 z dziesiętnego ilustruje, iż przeliczanie w obie strony nie zawsze
jest bez stratne. Kilka przykładów znajduje się w Tabeli. Związane jest to z tym, ze kod 1.15 ma określoną
dokładność, jego najmniejszą jednostką jest liczba odpowiadająca wartości dziesiętnej równej 0.000031
Kod 1.15
7FFF
Liczby
dziesiętne
-1
0000
1
8000
Rys. Ideowe przedstawienie relacji między liczbami dziesiętnymi a zapisanymi w kodzie 1.15
Tabela Porównanie przykładowych wartości przd i po przeliczeniu na kod 1.15
Wartość dziesiętna przed
przeliczeniem
1.000000
0.400000
-0.600000
Wartość w kodzie 1.15
0x7FFF
0x3333
0xB333
Wartość dziesiętna po
przeliczeniu
0.999969
0.399994
-0.600006
Na panelu czołowym programu (Rys.) znajdują się trzy pola z wartościami. W pierwszą z nich
wprowadzamy wartości do przeliczenia. W pozostałych dwóch otrzymujemy wyniki w kodzie 1.15 oraz
wartość dziesiętną po przeliczeniu z kodu 1.15.
Rys. Panel czołowy programu 1q15.vi
Diagram 1q15.vi jest dość prosty (Rys) i opiera się on na jednej z metod przeliczania wartości dziesiętnych
na kod 1.15.
Rys. Diagram programu 1q15.vi
Kod źródłowy filtru – fir.dsp
Ze względu na to, ze cały kod programu jest dość obszerny, poniniżej zostaną pokazane tylko
najistotniejsze fragmenty programu do których zaliczymy: początkową inicjalizacje kodeka oraz
przetwarzanie próbek i filtracje.
Poniższy fragment pokazuje sekwencję słów programujących pracę kodeka:
.init init_cmds:
0xc002, { Rejestr sterowania lewego wejścia
ustawienia: wybrane liniowe lewe wejście #1
wzmocnienie lewego wejścia 3dB
}
0xc102, { Rejestr sterowania prawego wejścia
ustawienia: wybrane liniowe prawe wejście #1
wzmocnienie prawego wejścia 3dB
}
0xc288, { Rejestr sterowania lewego pomocniczego wejścia #1
ustawienia: brak wzmocnienia/tłumienia
kanał pomocniczy wyciszony
}
0xc388, { Rejestr sterowania prawego pomocniczego wejścia #1
ustawienia: brak wzmocnienia/tłumienia
kanał pomocniczy wyciszony
}
0xc488, { Rejestr sterowania lewego pomocniczego wejścia #2
ustawienia: brak wzmocnienia/tłumienia
kanał pomocniczy wyciszony
}
0xc588, { Rejestr sterowania prawego pomocniczego wejścia #2
ustawienia: brak wzmocnienia/tłumienia
kanał pomocniczy wyciszony
}
0xc680, { Rejestr sterowania lewego przetwornika DAC
ustawienia: lewy DAC wyciszony
brak tłumienia
}
0xc780, { Rejestr sterowania prawego przetwornika DAC
ustawienia: prawy DAC wyciszony
brak tłumienia
}
0xc85c, { Rejestr formatu danych
ustawienia: 16-bitowe liniowe przetwarzanie PCM
przetwarzanie dwukanałowe
próbkowanie 48kHz
zegar XTAL1=24.576 MHz;
}
0xc909, { Rejestr konfiguracji interfejsu
ustawienia: umożliwiona auto-kalibracja
włączone odtwarzanie
}
0xca00, { Rejestr sterowania portami
ustawienia: stan niski na bitach XCTL1 i XCTL0
}
0xcc40, { Rejestr innych informacji
ustawienia: 32 bity w ramce transmisji synchronicznej,
0xcd00;
system dwu przewodowy
}
{ Rejestr sterujący cyfrowym mieszaniem
ustawienia: brak tłumienia
wyłączone cyfrowe mieszanie
}
W procedurze inicjalizacji kanały pomocnicze, przetworniki DAC oraz cyfrowe mieszanie są wyciszone.
Ich uaktywnienie odbywa się zwykle w dalszej części kodu źródłowego. Najważniejszy rejestr pod
względem sposobu przetwarzania sygnału, rejestr formatu danych, jest od razu ustawiany do parametrów
wymaganych przez użytkownika. W programie została ustawiona częstotliwość próbkowania 48kHz, a
wiec największa z dostępnych w kodeku oraz przetwarzanie liniowe PCM 16-bitowe.
Drugi fragment przedstawia proces przetwarzania próbek wraz z kodem filtru zapisany w języku asembler
dla procesorów ADSP-21xx :
input_samples:
ena sec_reg;
{ użycie banku rejestrów shadow }
voice_input:
sr1 = dm (rx_buf + 2); { pobranie nowej próbki z SPORT0 (z kodeka) }
process_sample:
dm(i0,m1)=sr1; { zapis próbki w buforze danych (linia opóźniająca) }
jump fir;
output:
dm (tx_buf + 1) = mr1;
{ filtrowane wyjście do SPORT (do głośnika) }
dm (tx_buf + 2) = mr1;
{filtrowane wyjście do SPORT (do głośnika) }
rti;
fir: cntr=taps-1;
mr=0, mx0=dm(i0,m1), my0=pm(i4,m4);
do fir1loop until ce;
fir1loop: mr=mr+mx0*my0(ss), mx0=dm(i0,m1), my0=pm(i4,m4);
mr=mr+mx0*my0(rnd);
if mv sat mr;
sr = ashift mr1 by 1 (lo); {wzmocnienie filtrowanego sygnału razy 2 }
mr1 = sr0;
jump output;
Opis badania filtrów cyfrowych DSP
Filtry cyfrowe badane były w rzeczywistych torach pomiarowych w środowisku procesorów
sygnałowych i przetworników ADC i DAC typu ΣΔ.
Opis stanowiska i metody badania
Przedmiotem badań było wyznaczenie charakterystyk amplitudowo-częstotliwościowych filtrów
cyfrowych. Ze względu na różnorodność filtrów skupiliśmy się tylko na dolnoprzepustowych filtrach o
skończonej odpowiedzi impulsowej i porównaniu ich z parametrami odpowiadających im filtrów
teoretycznych.
GENERATOR
FUNKCYJNY
OSCYLOSKOP
CYFROWY
A
B
PC
RS-232
WE
EZ-KIT Lite
WY
Rys. Blokowy schemat pomiarowy
Przyrządy wykorzystane w badaniu charakterystyk amplitudowo-częstotliwościowych:
 moduł EZ-KIT Lite z procesorem sygnałowym ADSP-2181,
 komputer klasy PC,
 generator funkcyjny Meter International Corp. FG 503,
 oscyloskop cyfrowy Agilient 54622D.
Przed przystąpieniem do pomiarów zrealizowano:
1.
2.
3.
4.
Procedury zaprojektowania filtru przy pomocy opracowanego programu FIR_designer.vi,
Wygenerowano współczynniki filtru,
Skompilowano źródło DSP filtru wraz z otrzymanymi współczynnikami,
Plik wynikowy filtr.exe załadowano do procesora sygnałowego przez łącze RS-232 za pomocą
programu ładującego Loader.vi.
Układ pomiarowy do badania charakterystyk amplitudowo –częstotliwościowych został połączony tak
jak na Rys.. Sygnał sinusoidalny o amplitudzie 750mV podano na wejście modułu EZ-KIT Lite oraz na
kanał A oscyloskopu cyfrowego. Do kanału B podłączono sygnał wyjściowy badanego modułu. Wartości
skuteczne napięć sygnałów z generatora i sygnału wyjściowego badanego filtru cyfrowego odczytywano z
oscyloskopu. Wyniki zebrano w plikach i zamieszczono w dodatku na CD–ROM -ie. Opracowane wyniki
przedstawiono w formie graficznej.
Przykładowe wyniki badań
Celem badań było porównanie charakterystyk filtrów rzeczywistych z teoretycznymi oraz zbadanie
wpływu okna na charakterystykę amplitudową. W pierwszej części wybrane zostały filtry o dwóch różnych
oknach, a następnie te same filtry, lecz wyższego rzędu. Parametry, według których oceniono
zaprojektowane filtry to:
 Obszar nierównomierności charakterystyki amplitudowej w paśmie przepustowym,
 Obszar przejściowy,
 Częstotliwość odcięcia filtru przy amplitudzie A=-3dB.
Badane parametry obrazuje Rys.
A
fc
f
Rys. Obszar nierównomierności charakterystyki amplitudowej w paśmie przepustowym i obszar przejściowy,
Filtr dolnoprzepustowy 32 – go rzędu z oknem prostokątnym
Parametry filtru rzeczywistego:
 Częstotliwość odcięcia:
fc (-3 dB) = 4,5 kHz
 Nierównomierność w paśmie przepustowym:
+ = - 0,37 dB
i
- = - 2,37 dB
 Pasmo przejścia:
f = 3 kHz
Parametry filtru teoretycznego:
 Częstotliwość odcięcia:
 Pasmo przejścia:
fc (-3 dB) = 4,678 kHz
f = 2,27 kHz
10
0
-10
-20
A [dB]
-30
-40
-50
-60
-70
-80
-90
f [Hz]
8,5
8,3
8,1
7,9
7,7
7,5
7,3
7,1
6,9
6,7
6,5
6,3
6,1
5,9
5,7
5,5
5,3
5,1
4,9
4,7
4,5
4,3
4,1
3,9
3,5
3,1
2
2,7
1
0
0,15
Rys. Teoretyczna charakterystyka amplitudowo-częstotliwościowa filtru cyfrowego dolnoprzepustowego 32 – go rzędu
z oknem prostokątnym
-5
A [dB]
-10
-15
-20
-25
-30
f [kHz]
Rys.. Rzeczywista charakterystyka amplitudowo-częstotliwościowa filtru cyfrowego dolnoprzepustowego 32 – go rzędu
z oknem prostokątnym
MUX
ΣΔ
RS
DSP
RS
ΣΔ
Rys. Blokowy schemat toru przetwarzania DSP
Bibliografia:
[1] "ADSP-2181 EZ-KIT Lite Evaluation System Manual" - 81_EZ-KIT_Lite.pdf
[2] "Serial-Port 16-Bit SoundPort Stereo Codec AD1847" - AD1847.pdf
[3] "Considerations for Selecting a DSP Processor—Why Buy the ADSP-2181?
(The Analog Devices ADSP-2181 vs. Texas Instruments & Motorola Fixed-Point DSPs)"
- AN-400.pdf
[4] "Assembler Tools & Simulator Manual" Second edition (11/94)- asm1.pdf
[5] "ADSP-2100 Family User's Manual" Third edition (9/95) Analog Devices, 82-0007803
[6] Richard G. Lyons "Wprowadzenie do cyfrowego przetwarzania sygnałów" WKŁ,
Warszawa 2000
[7] Tomasz P. Zielinski "Od teorii do cyfrowego przetwarzania sygnałów" ANTYKWA,
Kraków 2002
[8] Adam Dąbrowski "Przetwarzanie sygnałów przy użyciu procesorów sygnałowych"
Wydawnictwo Politechniki Poznańskiej, Poznań 2000
[9] "ADSP-2100 Family EZ-KIT Lite Reference Manual" First edition (5/95) Analog
Devices, 82-000779-01
[10] Sophocles J. Orfanidis "ADSP-2181 Experiments" wiosna 2001 - man.pdf
[11] "DIGITAL SIGNAL PROCESSING APPLICATIONS USING THE ADSP-2100
FAMILY" – Analog Devices, 1990
[12] "The Scientist and Engineer's Guide to Digital Signal Processing" Second Edition Steven W. Smith, 1999
[13] www.analog.com
[14] www.ti.com
[15] www.addis.pl
Download