Sunteți pe pagina 1din 23

Procesoare Numerice de Semnal - CURS 1

4. Structura hardware a generaţiei TMS320C2x

4.1 Descrierea semnalelor


4.2 Privire generală asupra arhitecturii
4.3 Structura internă
4.4 Organizarea memoriei
4.5 Unitatea centrală aritmetică şi logică
4.6 Controlul sistemului
4.7 Memoria externă şi interfaţa I/O
4.8 Întreruperile
4.9 Portul serial
4.10 Multiprocesare şi accesul direct la memorie
Procesoare Numerice de Semnal - CURS 2

4.5 Unitatea centrală aritmetică şi logică

CALU din TMS320C2x


conţine:
• un circuit de deplasare
şi scalare pe 16 biţi,
• un multiplicator
paralel pe 16 x 16 biţi,
• o unitate ALU pe 32 de
biţi,
• un acumulator pe 32
biţi (ACC) şi
• circuite de deplasare
suplimentare la ieşirile
acumulatorului şi ale
multiplicatorului.
Procesoare Numerice de Semnal - CURS 3

4.5 Unitatea centrală aritmetică şi logică

În implementarea unei instrucţiuni tipice a ALU, paşii care se


vor executa sunt următorii:
1) Data este adusă din RAM pe magistrala de date;
2) Data este trecută prin circuitul de deplasare în ALU,
unde este executată operaţia aritmetică;
3) Rezultatul este transferat în acumulator.

O intrare în ALU este întotdeauna furnizată de acumulator,


iar cealaltă intrare poate fi transferată de la registrul de
produs PR al multiplicatorului, sau de la scalling shifter care
este încărcat din memoria de date.
Procesoare Numerice de Semnal - CURS 4

4.5.1 Circuitul de deplasare şi scalare (scalling shifter)

TMS320C2x conţine un scalling shifter care are o intrare pe 16 biţi


legată la magistrala de date şi o ieşire pe 32 de biţi legată la ALU.
Circuitul produce o rotire la dreapta între 0 şi 16 biţi a datelor de
intrare, după cum e programat în instrucţiune. Cei mai puţin
semnificativi biţi ai ieşirii sunt umpluţi cu 0, iar cei mai semnificativi
pot fi fie umpluţi cu 0, fie extinşi ca semn, în funcţie de starea SXM
(sign extension mode) al registrului de stare ST1.

TMS320C2x conţine de asemenea o serie de alte registre de deplasare


care-i permit să execute deplasări numerice, extracţii de biţi,
extinderea preciziei aritmetice şi prevenirea depăşirilor. Aceste
registre sunt conectate la ieşirea multiplicatorului şi acumulatorului.
Procesoare Numerice de Semnal - CURS 5

4.5.2 ALU şi acumulatorul


ALU şi acumulatorul pe 32 de biţi ale TMS320C2x realizează o gamă largă
de funcţii aritmetice şi logice, din care majoritatea se execută într-un singur
ciclu de ceas. Odată ce o operaţie este executată în ALU, rezultatul este
transferat în acumulator, unde pot avea loc operaţiile adiţionale, cum ar fi
deplasarea. Data care intră în ALU poate fi scalată de către circuitul de
deplasare şi scalare.

ALU este o unitate aritmetică de uz general care operează cu cuvinte pe 16


biţi luate din memoria RAM de date sau derivate din instrucţiuni imediate.
Pe lângă instrucţiunile aritmetice uzuale, ALU poate executa operaţii
booleene, furnizând facilităţile de manipulare la nivel de bit cerute de un
controler de mare viteză. Una din intrările ALU este furnizată totdeauna de
către acumulator. Cealaltă poate fi furnizată de către registrul de produs al
multiplicatorului, PR, sau de la intrarea lui scalling shifter care a adus data
din memoria RAM pe magistrala de date. După ce ALU a executat operaţia
aritmetică sau logică, rezultatul este stocat în acumulator.
Procesoare Numerice de Semnal - CURS 6

4.5.2 ALU şi acumulatorul

Acumulatorul pe 32 biţi este împărţit în două segmente de câte 16 biţi


pentru stocarea în memoria de date: ACCH (accumulator high) şi
ACCL (accumulator low). Shifterii de la ieşirea acumulatorului
furnizează o deplasare stânga, cu 0 - 7 poziţii la TMS320C25, şi cu 0, 1
sau 4 poziţii la TMS32020. Această deplasare este executată în timp ce
data este transferată pe magistrala de date pentru stocare. Conţinutul
acumulatorului rămâne neschimbat. Când conţinutul ACCH este
deplasat stânga, cei mai puţin semnificativi biţi sunt transferaţi din
ACCL, iar cei mai semnificativi biţi se pierd. Când ACCL este
deplasat stânga, cei mai puţin semnificativi biţi sunt umpluţi cu 0, iar
cei mai semnificativi biţi se pierd.

Instrucţiunea NORM (normalizare) este folosită pentru a normaliza


numerele în virgulă fixă din acumulator prin deplasări la stânga.
Procesoare Numerice de Semnal - CURS 7

4.5.2 ALU şi acumulatorul


Instrucţiunea LACT (încarcă acumulatorul cu o deplasare specificată prin
registrul T) denormalizează un număr scris în virgulă mobilă prin deplasarea
aritmetică la stânga a mantisei, prin intrarea de scalare - deplasare. În acest caz,
contorul deplasărilor are valoarea exponentului specificat prin cei mai puţin
semnificativi 4 biţi ai registrului T (TR).

Instrucţiunile ADDT şi SUBT (adună la / scade din acumulator, cu deplasare


specificată prin registrul T) au fost prevăzute de asemenea pentru a permite
operaţii aritmetice adiţionale.

Modul de lucru cu saturaţie la depăşire a acumulatorului poate fi programat


prin instrucţiunile SOVM şi ROVM (set / reset overflow mode). Când
acumulatorul este în acest mod şi apare o depăşire, indicatorul de overflow (OF)
este setat şi acumulatorul este încărcat fie cu cel mai pozitiv, fie cu cel mai
negativ număr, în funcţie de direcţia depăşirii. Valoarea acumulatorului după
saturaţie este 7FFF FFFF (pozitiv) sau 8000 0000 (negativ).

Dacă bitul modului overflow (OVM) din registrul de stare este resetat şi apare o
depăşire, rezultatele depăşite sunt încărcate în acumulator fără modificări.
Operaţiile logice nu pot da naştere la depăşiri.
Procesoare Numerice de Semnal - CURS 8

4.5.2 ALU şi acumulatorul

TMS320C2x poate executa o multitudine de instrucţiuni de salt


(ramificare) care depind de starea ALU şi a acumulatorului.
În această categorie intră:
- BV (salt la depăşire);
- BZ (salt la atingerea valorii 0 de către acumulator). În plus,
BACC (salt la adresa din acumulator) furnizează facilitatea
unui salt la o adresă specificată de acumulator;
- BIT şi BITT (instrucţiuni de testare a biţilor). Ele nu afectează
acumulatorul şi permit testarea unui bit specificat dintr-un
cuvânt al memoriei de date.
Procesoare Numerice de Semnal - CURS 9

4.5.2 ALU şi acumulatorul

Acumulatorul din TMS320C25 are un bit de carry (transport), care


este setat sau resetat, în funcţie de diferite operaţii din circuit.
Bitul de carry permite calculul mai eficient în precizie extinsă a
rezultatului pentru adunare sau scădere. Este de asemenea util în
gestionarea depăşirilor.
Bitul de carry este afectat de majoritatea instrucţiunilor aritmetice,
de deplasări şi rotaţii. Nu este afectat de încărcarea acumulatorului
sau de operaţii logice şi nici de alte operaţii ne-aritmetice, sau de
instrucţiunile de control. De asemenea, nu este afectat de
instrucţiunile de înmulţire (MPY, MPYK, MPYU), dar este afectat
de procesele de acumulare în instrucţiunile MAC şi MACD.
Procesoare Numerice de Semnal - CURS 10

4.5.2 ALU şi acumulatorul

Valoarea adunată sau scăzută din acumulator, arătată în exemple, poate veni fie
de la intrarea circuitului de scalare, fie de la cea a circuitului de deplasare de la
ieşirea registrului P. Bitul de carry este setat dacă rezultatul unei adunări sau
"acumulări" generează un transport, sau este resetat dacă rezultatul unei
scăderi generează un împrumut. În celelalte cazuri, este resetat după o adunare,
sau setat după o scădere.
Procesoare Numerice de Semnal - CURS 11

4.5.2 ALU şi acumulatorul

Instrucţiunile ADDC (adună la acumulator cu transport), şi SUBB (scade din


acumulator cu împrumut), la TMS320C25, folosesc valorile mai sus
menţionate pentru CY în operaţiile lor de adunare / scădere.

Singura excepţie în operaţiile cu bitul CY, este în cazul folosirii


instrucţiunilor ADDH (adună la ACCH) şi SUBH (scade din ACCH). ADDH
poate doar să seteze CY dacă se generează transport, iar SUBH poate doar să
reseteze CY dacă se generează împrumut. Altfel, nici o instrucţiune nu poate
afecta bitul CY.

Sunt prevăzute două instrucţiuni de salt (ramificare) funcţie de starea bitului


de CY: BC şi BNC. Pentru încărcarea bitului de carry există instrucţiunile
SC, RC şi LST1. Bitul CY este setat la 1 după resetul hard.
Procesoare Numerice de Semnal - CURS 12

4.5.2 ALU şi acumulatorul

Instrucţiunile SFL / SFR (introduce în CY un bit prin rotire la


stânga / dreapta cu un bit, la TMS320C2x) şi ROL / ROR (rotaţie la
stânga / dreapta la TMS320C25) realizează deplasarea sau rotirea
conţinutului acumulatorului prin bitul de CY.
Bitul SXM afectează definiţia instrucţiunii SFR (deplasarea
acumulatorului la dreapta). Când SXM = 1, SFR realizează o rotire
aritmetică la dreapta, menţinând semnul datelor din acumulator.
Când SXM = 0, SFR efectuează o deplasare logică, deplasând afară
LSB-ul şi punând MSB = 0. SFL (deplasarea acumulatorului la
stânga) nu e afectată de bitul SXM şi se comportă la fel în ambele
cazuri, deplasând afară MSB-ul şi punând în locul LSB valoarea 0.
Instrucţiunile RPT sau RPTK pot fi folosite cu instrucţiunile de
deplasare şi rotire pentru numărarea unor deplasări multiple.
Procesoare Numerice de Semnal - CURS 13

4.5.3 Multiplicatorul, registrele P şi T

TMS320C2x foloseşte un multiplicator pe 16 x 16 biţi, implementat


hardware, care este capabil să calculeze un produs cu semn sau fără
semn pe 32 de biţi, într-un singur ciclu maşină. Toate instrucţiunile
de înmulţire, cu excepţia lui MPYU (înmulţire fără semn) a lui
TMS320C25, execută în multiplicator o operaţie de înmulţire cu
semn. Aceasta înseamnă că, două numere care sunt înmulţite sunt
tratate ca două numere în complement faţă de 2, iar rezultatul este
un număr pe 32 de biţi, în complement faţă de 2.

Două registre sunt asociate multiplicatorului:


- un registru temporar pe 16 biţi care conţine unul din operanzii
pentru înmulţire, TR, şi
- un registru de produs pe 32 de biţi care conţine produsul
(rezultatul înmulţirii), PR.
Procesoare Numerice de Semnal - CURS 14

4.5.3 Multiplicatorul, registrele P şi T


Ieşirea lui PR poate fi deplasată la stânga pe 1 sau 4 biţi. Acest lucru este util pentru
implementarea aritmeticii fracţionale sau pentru alinierea produsului fracţional.
Ieşirea lui PR poate fi de asemenea deplasată dreapta cu 6 biţi pentru a permite
execuţia a până la 128 înmulţiri / acumulări fără posibilitate de depăşire.

O instrucţiune LT (încărcarea registrului T) încarcă în mod normal TR pentru a


furniza un operand (de pe magistrala de date), iar instrucţiunea MPY (multiplicare)
furnizează al doilea operand (tot de pe magistrala de date). O înmulţire poate fi
realizată de asemenea cu un operand imediat, folosind instrucţiunea MPYK. În alte
cazuri, un produs poate fi obţinut la fiecare 2 cicluri.

Două instrucţiuni de înmulţire / acumulare (MAC şi MACD) folosesc integral


capacitatea de calcul a multiplicatorului, permiţând ambilor operanzi să fie prelucraţi
simultan. Datele pentru aceste operaţii pot fi rezidente oriunde în memoria internă sau
în cea externă, sau pot fi transferate multiplicatorului în fiecare ciclu pe magistrala de
program sau de date. Acestea sunt furnizate pentru fiecare ciclu de înmulţire /
acumulare când sunt folosite cu instrucţiuni repetitive (RPT / RPTK). Porţiunea
DMOV a instrucţiunii MACD nu va funcţiona cu adrese din memoria de date externă.
Procesoare Numerice de Semnal - CURS 15

4.5.3 Multiplicatorul, registrele P şi T

La TMS32020, deînmulţitul şi înmulţitorul trebuie să fie rezidente în blocuri de


memorie RAM separate. La TMS320C25, instrucţiunile MAC şi MACD pot fi utilizate
fie cu ambii operanzi din memoria internă sau externă, fie cu unul din memoria RAM
de pe circuit.

Instrucţiunile SQRA (square / addition) şi SQRS (square / substraction) pun aceeaşi


valoare pe ambele intrări ale multiplicatorului pentru a ridica la pătrat o valoare din
memoria de date.

Instrucţiunea MPYU de la TMS320C25 execută o înmulţire fără semn, ceea ce


facilitează mult extinderea preciziei în operaţiile aritmetice. Conţinutul fără semn al
registrului T este multiplicat cu conţinutul fără semn al unei locaţii din memoria de
date, iar rezultatul este plasat în registrul P. Aceasta permite operanzilor mai mari de
16 biţi să fie împărţiţi în operanzi de 16 biţi şi prelucraţi separat pentru a genera
produse mai mari de 32 de biţi.
Procesoare Numerice de Semnal - CURS 16

4.5.3 Multiplicatorul, registrele P şi T

După înmulţirea a două numere pe 16 biţi, produsul pe 32 de biţi este


încărcat în registrul PR pe 32 de biţi al lui TMS320C2x. Produsul din PR
poate fi transferat în ALU.

Există 4 moduri de deplasare a produsului disponibile la ieşirea PR. Aceste 4


moduri sunt utile când se execută operaţii de multiplicare / acumulare,
aritmetică fracţionară, sau produse fracţionare. Câmpul PM al registrului
de stare ST1 specifică modurile de deplasare ale rezultatului PM, astfel:
- PM = 00, rezultat fără deplasare
- PM = 01, rezultat cu deplasare stânga 1 bit
- PM = 10, rezultat cu deplasare stânga 4 biţi
- PM = 11, rezultat cu deplasare dreapta 6 biţi
Procesoare Numerice de Semnal - CURS 17

4.5.3 Multiplicatorul, registrele P şi T

Deplasările stânga sunt folositoare pentru implementarea aritmeticii


fracţionare, sau pentru alinierea produsului fracţional; de exemplu:
produsul a două numere normalizate pe 16 biţi, produsul a două numere în
complement faţă de 2, produsul a două numere în format Q15, conţinând 2
biţi de semn, dintre care unul este redundant.

Formatul Q15 este unul dintre variatele tipuri ale formatului Q; este o
reprezentare a numerelor folosită frecvent când se execută operaţii cu
numere ne-întregi. O rotaţie stânga de un singur bit elimină bitul
suplimentar de semn din produs, când este transferat în acumulator.
Rezultatul în acumulator are astfel aceeaşi formă ca şi operanzii.

În mod similar, produsul unui număr normalizat pe 16 biţi sau Q15 şi o


constantă de 13 biţi în complement faţă de 2 conţine 5 biţi din care 4 sunt
redundanţi. Este cazul folosirii instrucţiunii MPYK. Aici, o deplasare de 4
biţi aliniază în mod adecvat rezultatul transferat în acumulator.
Procesoare Numerice de Semnal - CURS 18

4.5.3 Multiplicatorul, registrele P şi T


Folosirea deplasării dreapta a PM permite executarea a până la 128 operaţii de
înmulţire / acumulare consecutive fără pericolul unei depăşiri aritmetice, astfel
evitându-se problema gestionării depăşirilor.

Deplasările pot fi dezactivate ca să nu producă rotiri în produs când se lucrează cu


întregi sau operaţii cu precizie de 32 biţi. Acest lucru permite compatibilitatea cu
TMS320C1x. Trebuie notat că rotirea dreapta este întotdeauna însoţită de extensia de
semn, indiferent de starea SXM.

Cei mai puţin semnificativi 4 biţi ai registrului TR definesc de asemenea o deplasare


variabilă prin scalling shifter pentru instrucţiunile LACT, ADDT şi SUBT. Aceste
instrucţiuni sunt utile în aritmetica în virgulă flotantă, când un număr trebuie să fie
denormalizat, ceea ce înseamnă realizarea conversiei de la virgulă mobilă la virgulă
fixă.

Instrucţiunea BITT (bit test) permite testarea unui singur bit dintr-un cuvânt din
memoria de date pe baza valorii conţinute în cei mai puţin semnificativi 4 biţi din TR.
Procesoare Numerice de Semnal - CURS 19

4.6 Controlul sistemului

Controlul de sistem al procesorului TMS320C2x este asigurat de


numărătorul de program (PC), stiva, conexiunile hardware,
semnalul reset extern, întreruperi, timer şi un numărător de
repetări. Următoarele subcapitole vor descrie funcţiile fiecărei
componente în controlul sistemului şi funcţionarea magistralei
pipeline.
Procesoare Numerice de Semnal - CURS 20

4.6.1 Numărătorul de program şi stiva

TMS320C2x are un numărător de program pe 16 biţi şi o stivă hardware de


8 nivele (TMS320C25) sau 4 nivele (TMS320C20), pentru stocarea
numărătorului de program.

Numărătorul de program (PC) adresează memoria de program internă şi


externă în instrucţiunile de fetch. Stiva este utilizată în timpul subrutinelor
şi întreruperilor. PC adresează memoria program de pe circuit sau din afara
acestuia prin magistrala adreselor de program. Pe această magistrală este
adusă o instrucţiune din memoria de program şi încărcată în registrul de
instrucţiuni (IR). Când registrul IR este încărcat, PC este gata să înceapă
următorul ciclu de fetch. PC poate adresa blocul B0 al memoriei RAM de pe
circuit, când B0 este configurat ca memorie de program, sau memoria ROM
internă, precum şi memoria program externă prin magistrala externă de
date (liniile D15-D0) şi adrese (liniile A15-A0).
Procesoare Numerice de Semnal - CURS 21

4.6.1 Numărătorul de program şi stiva


Procesoare Numerice de Semnal - CURS 22

4.6.1 Numărătorul de program şi stiva

Memoria de date este adresată de PC în timpul instrucţiunii BLKD, când se


mută blocuri de date dintr-o zonă de memorie în alta. Conţinutul
acumulatorului poate fi încărcat în PC, utilizând instrucţiunile BACC sau
CALA.

La începutul unui nou ciclu de fetch, PC este incrementat sau încărcat cu


adresa de salt în cazul unor instrucţiuni de salt, întreruperi, sau subrutine.
În cazul instrucţiunilor de salt condiţionat, când nu se face saltul, PC este
incrementat o dată în plus, sărindu-se peste adresa de salt.

TMS320C2x permite repetarea execuţiei unei instrucţiuni de N+1 ori,


încărcând în registrul RPTC (registrul numărător de repetări) pe 8 biţi un
număr N. Instrucţiunea va fi executată până când RPTC ajunge la zero,
prin decrementare. Acest lucru este util în cazul multor instrucţiuni, cum ar
fi: NORM, MACD, sau SUBC.
Procesoare Numerice de Semnal - CURS 23

4.6.1 Numărătorul de program şi stiva

Stiva are 4 (TMS320C20) sau 8 (TMS320C25) nivele a câte 16 biţi şi este


accesată în timpul instrucţiunilor PUSH şi POP.
Când PC este depus în vârful stivei, conţinutul fiecărui nivel se
deplasează în jos cu o poziţie, iar conţinutul ultimei locaţii se pierde.
Acesta se pierde şi dacă se depune succesiv în stivă de 4, respectiv de 8
ori, fără a se scoate ceva. Orice extragere din stivă, după 3 şi respectiv 7
extrageri, duce la extragerea valorii de la baza stivei.
Instrucţiunile PUSHD şi POPD depun o valoare din memoria de date,
respectiv refac memoria de date cu conţinutul din stivă. Aceste
instrucţiuni permit construirea unei stive în memoria de date,
realizându-se nivele de imbricare ale subrutinelor peste dimensiunea
stivei inferioare (4, respectiv 8 nivele).

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

  • Cuprins
    Cuprins
    Document4 pagini
    Cuprins
    api-3725868
    Încă nu există evaluări
  • Cap 41
    Cap 41
    Document12 pagini
    Cap 41
    api-3725868
    Încă nu există evaluări
  • Aplicatii DSP
    Aplicatii DSP
    Document12 pagini
    Aplicatii DSP
    Corpaci Petrica
    Încă nu există evaluări
  • Cap 5
    Cap 5
    Document12 pagini
    Cap 5
    api-3725868
    100% (1)
  • Cap 42
    Cap 42
    Document18 pagini
    Cap 42
    api-3725868
    Încă nu există evaluări
  • Cap 43
    Cap 43
    Document10 pagini
    Cap 43
    api-3725868
    Încă nu există evaluări
  • Cap 44
    Cap 44
    Document14 pagini
    Cap 44
    api-3725868
    Încă nu există evaluări
  • Cap 4
    Cap 4
    Document10 pagini
    Cap 4
    api-3725868
    100% (1)
  • Cap 1
    Cap 1
    Document5 pagini
    Cap 1
    api-3725868
    50% (2)
  • Cap 2
    Cap 2
    Document10 pagini
    Cap 2
    Maria Botnari
    Încă nu există evaluări
  • Cap 21
    Cap 21
    Document10 pagini
    Cap 21
    api-3725868
    100% (1)
  • Cap 22
    Cap 22
    Document12 pagini
    Cap 22
    api-3725868
    Încă nu există evaluări
  • Pns c8
    Pns c8
    Document23 pagini
    Pns c8
    api-3725868
    Încă nu există evaluări
  • Pns c9
    Pns c9
    Document25 pagini
    Pns c9
    api-3725868
    Încă nu există evaluări
  • Pns c4
    Pns c4
    Document16 pagini
    Pns c4
    api-3725868
    Încă nu există evaluări
  • PNS C2
    PNS C2
    Document28 pagini
    PNS C2
    api-3725868
    100% (1)
  • Pns c5
    Pns c5
    Document38 pagini
    Pns c5
    api-3725868
    Încă nu există evaluări
  • PNS C7
    PNS C7
    Document25 pagini
    PNS C7
    api-3725868
    100% (1)
  • Pns c6
    Pns c6
    Document30 pagini
    Pns c6
    api-3725868
    Încă nu există evaluări
  • Pns c3
    Pns c3
    Document35 pagini
    Pns c3
    api-3725868
    Încă nu există evaluări
  • PNS C1
    PNS C1
    Document37 pagini
    PNS C1
    api-3725868
    100% (3)
  • PNS C11
    PNS C11
    Document26 pagini
    PNS C11
    api-3725868
    100% (1)
  • Pns c10
    Pns c10
    Document28 pagini
    Pns c10
    api-3725868
    Încă nu există evaluări
  • Pns c9
    Pns c9
    Document25 pagini
    Pns c9
    api-3725868
    Încă nu există evaluări
  • Pns c6
    Pns c6
    Document30 pagini
    Pns c6
    api-3725868
    Încă nu există evaluări
  • PNS C11
    PNS C11
    Document26 pagini
    PNS C11
    api-3725868
    100% (1)
  • PNS C7
    PNS C7
    Document25 pagini
    PNS C7
    api-3725868
    100% (1)
  • Pns c5
    Pns c5
    Document38 pagini
    Pns c5
    api-3725868
    Încă nu există evaluări
  • Pns c4
    Pns c4
    Document16 pagini
    Pns c4
    api-3725868
    Încă nu există evaluări