Sunteți pe pagina 1din 44

PROCESOARE NUMERICE

DE SEMNALE

CURS
Arhitectura procesoarelor
numerice de semnal din
familia Blackfin
Autor: Toma Ștefan-Adrian
Cuprins
◼ Sistemul de întreruperi
◼ Sistemul pentru acces direct la memorie
◼ Micro Signal Architecture – studiu de caz BF 533/537
◼ Aplicații în timp real – bare-metal
Sistemul de întreruperi

Când stai în fotoliu și te uiți la un film, cum știi că te vizitează un prieten?

Te duci din când la ușă și te uiți pe vizor?

Sau aștepți să sune cineva la ușă?

Prima situație se numește POOLING.

Cea de a doua este un scenariu controlat prin intermediul unor


ÎNTRERUPERI.
Sistemul de întreruperi

POOLING ÎNTRERUPERI
Programul așteaptă date (ex. Dispozitivul trimite un semnal
buclă) de la un dispozitiv (ex. către procesor, atunci când are
tastatură). datele disponibile.

Se verifică, în interiorul buclei, “Sună-mă când ai datele.”


din când în când un registru (o
variabilă de stare). Procesorul răspunde prin
întreruperea sarcinii curente și
“Ai terminat? Ai terminat? Ai prelucrarea datelor noi.
terminat?”

Ce se întâmplă dacă apare un Procesorul execută sarcini


eveniment în afara momentului înainte și după întrerupere.
de timp în care verific variabila
de stare??
Sistemul de întreruperi

1. Finalizează instrucțiunea curentă


2. Salvează starea curentă într-un registru de stare
3. Identifică sursa întreruperii
4. Salt la un program denumit Interrupt Service Routine (ISR)
5. Reîntoarcere la programul original (RTI) și reface starea inițială.

Scop: să modific sau să execut instrucțiuni în funcție de date de la dispozitive


interne/externe sau să suspend execuția instrucțiunii curente în favoarea
unor sarcini mai importante.

Hardware – RESET, întreruperi definite de utilizator, timer, CPU


Software – instrucțiuni nepermise, SWI

Mascabile/nemascabile – dacă pot fi ignorate

Prioritate – ordinea în care sunt tratate


Direct Memory Access

Dispozitiv Direct Memory Access (DMA) – componentă hardware


care permite ca anumite subsisteme hardware să citească/scrie
din/în memorie fără intervenția procesorului, permițând acestuia să
ruleze alte programe.

Terminologie
canal DMA: cale prin care un dispozitiv transferă date în/din
memorie.
controller DMA: dispozitiv hardware pentru controlul transferurilor
de tip DMA
Single-cycle mode: transfer DMA octet cu octet
Burst-mode: transfer DMA este considerat încheiat atunci când toate
datele au fost transmise.
Direct Memory Access
Micro Signal Architecture

Companii: Analog Devices și Intel


Optimizarea performanțelor: viteză mare de calcul și consum redus de
putere
Model unificat de tip DSP și microcontroler
Prelucrare semnale cu utilizatorul (de interfață) și semnale de tip
multimedia (audio, video)
Management dinamic al puterii: modificare frecvență de lucru și nivel
tensiune

https://www.analog.com/en/products/landin
g-pages/001/blackfin-processor-
roadmap.html
Arhitectura BlackFin
Familia BlackFin - Nucleul de calcul
Familia BlackFin - UAC
• Două multiplicatoare pe 16 biţi;
• Două acumulatoare pe 40 biţi (ACC0 şi ACC1), fiecare compus din (A0.L, A0.H), şi respectiv (A1.L,
A1.H) +
+ 8 biţi de extensie (A0.X, A1.X);
• Două unităţi aritmetice şi logice (ALU) pe 40 de biţi care execută operaţii de multiplicare/
acumulare;
• Patru ALU pe 8 biţi pt. semnale video, operaţii de adunare, scădere, funcţii logice (AND, OR, XOR,
NOT);
• O unitate de deplasare pe 40 de biţi (barrel shifter);
• 8 regiştri de date (R0 – R7) pe 32 biţi sau 16 regiştri pe 16 biţi independenţi (R0.L – R7.L şi R0.H –
R7.H).
Operații aritmetice pentru generarea
adreselor
• Adresarea se face la nivel de octet (Byte) în general
• La nivel de cuvânt (16 sau 32 biţi) : regiştrii de adresare (pointers): P0 – P5
• Unitatea de adresare conţine:
DAG0 şi DAG1 – Data Address Generators (pot lucra simultan)
Regiştri adresă de uz general pe 32 de biţi (P0 – P5);
Regiştri pe 32 de biţi pentru generare de adrese:
Regiştri de tip index (I0-I3)
Regiştri de modificare (M0-M3)
Regiştri de adresă a bazei (B0-B3)
Regiştri de lungime a buffer-elor circulare (L0-L3)
Operații aritmetice pentru generarea
adreselor
Adresare indirectă (little endian): ex. R0=[P0];
Operaţii aritmetice pentru generarea
adreselor

Adresare indirectă cu acces al datelor pe 8 şi 16 biţi


R0 = W[P0] (z); → R0 are valoarea 0x0000 A114.
R0=B[P0] (z); → R0 are valoarea 0x0000 0014
Adresare cu post modificare
R0=[P0++]; → P0 are valoarea 0XFF8 0004.

!!! Incrementarea se realizează în funcţie de tipul de date transferate


!!!
Operaţii aritmetice pentru generarea
adreselor
Se efectuează 4 accesări ale buffer-ului
circular:

R0= [I0++M0]; // Acces 1


R1= [I0++M0]; // Acces 2
R2= [I0++M0]; // Acces 3
R3= [I0++M0]; // Acces 4
R3= [I0++M0]; // Acces 5

Buffer circular: 0xFF80 0000 - 0xFF80 002B (44 octeţi sau 11 cuvinte pe 32 biţi)
Inițializări:
registrul de bază B0=0xFF80 0000;
registrul de index inițializat cu aceeași valoare I0=0xFF80 0000;
lungimea buffer-ului circular L0=44;
registrul de modificare M0=16; octeţi (4 cuvinte)
Familia BlackFin - Nucleul de calcul

Elemente specifice DSP:


• Motor de multiplicare şi acumulare
(MAC)
• Buffer circular hardware
• SIMD – single instruction multiple
data
• Bucle cu suport hardware
Arhitectura BlackFin (BF533) – memoria

Structură ierarhică:
• common case fast
• reutilizare instrucțiuni recente
• mai mic mai rapid
Arhitectura BlackFin – sistemul de întreruperi
System Interrupt Controller
Core Event Controller
Arhitectura BlackFin (BF-533) - periferice
Aplicația Talkthrough

INTRARE
IEȘIRE
2 canale audio stereo
3 canale audio stereo
Baremetal, RTOS

Baremetal
• programatorul produce cod pentru gestionarea resurselor
hardware;
• există, de obicei, un proiect demonstrativ, de la care se poate
porni realizarea aplicației;

RTOS – real-time operating system


• Gestionarea resurselor hardware este realizat de sistemul de
operare;
Aplicație în timp real

DMA - codec
while(1); Process_data
Interfața audio a plăcii EZ-KIT Lite BF537
Interfața audio a plăcii EZ-KIT Lite BF533

SPI – Serial Peripheral Interface


SPORT0
SPORT1

SPY
ess pee eye
AD1836
Interfața audio a plăcii EZ-KIT Lite BF533

Codecul audio AD1836 (pe EZ-KIT Lite)

• 3 canale stereo pentru ieșire


• 2 intrări stereo ( 96 kHz max)
• rezoluție 16, 20 și 24 de biți
• conectat la DSP prin SPORT0 și SPI

2 moduri de transmisie a datelor (eșantioane) către codec


time-division multiplexed (TDM)
two-wire interface (TWI)

• În modul TDM, codecul poate lucra la maxim 48 kHz, dar pot fi utilizate toate intrările și
ieșirile simultan.

• În modul TWI, codecul poate lucra la 96 kHz, dar pot fi utilizate numai 2 canale de ieșire.
Pinii TSCLK0 și RSCLK0 și respectiv TFS0 și RFS0 sunt conectați împreună extern în afara
procesorului. Aceasta se realizează prin comutatorul SW9.
Interfața audio a plăcii EZ-KIT Lite BF533

TCLK0 – transmit clock 0


RCLK0 – receive clock 0
TFS0 – transmit frame 0
RFS0 – receive frame 0
DT0PRI – data transmit 0 primary
DR0PRI – data receive 0 primary Transfer date
DT0SEC – data transmit 0 secondary
DR0SEC – data receive 0 secondary

SPISS – SPI slave select Programare


SPICLK – clock CODEC
MOSI – master output, slave input
MISO – master input, slave output
Interfața audio a plăcii EZ-KIT Lite BF533

Fiecare cadru are 32 de biti.


Fe = 48 000 Hz
Interfața audio a plăcii EZ-KIT Lite BF533
Talk-through
Te=48 KHz

ADC L0

ADC R0
ADC L1

ADC R1

8 TS 8 TS

DMA DMA

IRQ

Prelucrare
date

8 TS

OUT DAC L0 , DAC L1, DAC R0, DAC R1


Talk-through

Exemplu Audio Codec Talkthrough

Pentru TDM comutatoarele 5 și 6 sunt pe OFF.


\VDSP install dir\Blackfin\Examples\ADSP-BF533 EZ-KIT Lite\Audio Codec
Talkthrough - TDM (C)

Pentru modul I2S comutatoarele 5 și 6 din SW9 sunt pe ON.


RSCLK0 -> TSCLK0 and RFS0 -> TFS0
\VDSP install dir\Blackfin\Examples\ADSP-BF533 EZ-KIT Lite\Audio Codec
Talkthrough – I2S (C)
Talk-through
Talk-through (BF537)
Talk-through (BF537) – main.c
Talk-through (BF537) – main.c
Talk-through (BF537) – main.c
Talk-through (BF537) – main.c

ADSP-BF533 Blackfin® Processor


Hardware Reference
Talk-through (BF537) – Initialize.c

Temă

Analizați funcțiile de inițializare din Initialize.c.


Talk-through (BF537) – ISR.c
Talk-through (BF537) – Process_data.c
Generator sinus în timp real

Process data
Generator sinus în timp real

Process data
Generator sinus în timp real

Process data
Întrebări

S-ar putea să vă placă și