Secțiunea 12: Modul multiplicator hardware
Modulul de multiplicare a hardware-ului poate fi utilizat de către microcontrolerul familiei MAXQ pentru operații de multiplicare de mare viteză. Modulul multiplicator hardware conține două registre de operand pe 16 biți și un registru de rezultate pe 32 de biți, care este doar pentru citire, și o baterie care are o rată de biți de la 32 biți la 48 biți pentru diferite microcontrolere din această familie. Un multiplicator de hardware poate efectua multiplicarea și acumularea / scăderea a doi operandi pe 16 biți într-un singur ciclu. Modulul de multiplicare hardware, fără a utiliza nucleul de calcul, acceptă următoarele acțiuni:
- Înmulțire cu sau fără semn doi operandi de 16 biți
- Înmulțirea cu sau fără semn cu acumularea a doi operandi pe 16 biți
- Înmulțire cu sau fără semn, scăzând doi operandi de 16 biți
- Înmulțirea cu un semn cu inversul a doi operandi de 16 biți
Arhitectura multiplicatorului arhitecturii
Multiplicatorul de hardware constă din două registre de 16 biți ale operanților cu încărcare paralelă (MA, MB); Un registru de rezultate numai pentru citire constând din două registre paralele pe 16 biți (MC1R și MC0R); baterie, care constă din două sau trei registre paralele pe 16 biți (MC2, MC1 și MC0); și registrul de stare / comenzi (MCNT). Rețineți că adâncimea de biți și disponibilitatea registrulor MC2 depind de tipul specific al familiei de microcontrolere MAXQ. Figura 44 prezintă schema bloc a multiplicatorului de hardware.
Figura 44. Arhitectura multiplicatorului hardware
Controlarea multiplicatorului de hardware
Alegerea modului în care va funcționa multiplicatorul de hardware se realizează de către patru biți de serviciu ai registrului MCNT: SUS, MSUB, MMAC și SQU. Numărul de operanzi care trebuie încărcați pentru a porni un anumit mod este determinat de bitul OPCS, cu excepția celei de squaring (SQU = 1). În modul squaring, operația începe imediat după încărcarea unui operand specific (MA sau MB), indiferent de starea bitului OPCS. Regiștrii MCNT vă permit să selectați modul de operare și numărul de operanzi care trebuie încărcați pentru a efectua operația. Orice operație de scriere la registrul MCNT resetează automat contorul numărului de operanzi încărcate, dar nu afectează conținutul registrelor operanzilor, se determină în cazul în care starea de biți CLD. O dată cu ajutorul biților registrului MCNT dat modul dorit, apoi imediat după încărcarea unei anumite cantități de acești biți multiplicator operanzilor hardware efectuează multiplicare, multiplicare cu acumulare / scădere sau inversiune multiplicare.
Selectarea registrului de ieșire
Multiplicatorul de hardware are un bit de control MCW pentru selectarea registrului de înregistrare a informațiilor, care vă permite să stocați MC2: MC0 în registrul MC (acumulator) înregistrat în registre. Când bitul MCW este setat la 1, rezultatul acestei operații nu este memorat în registrele MC. Când bitul MCW este resetat la 0, conținutul regiștrilor MC este actualizat după fiecare operație. Perechea de registre MC1R și MC0R este doar pentru citire și este actualizată indiferent de starea bitului MCW. În această pereche de registre conține întotdeauna datele care vor fi încărcate în registrul pereche MC1: MC0, cu condiția ca MCW = 1 sau MMAC = 0. Când MCW = 0 și MMAC = 1, conținutul registrelor perechilor MC1R: MC0R pot să nu corespundă conținutul perechii de registru MC1: MC0, dar acest lucru va fi previzibil și poate fi util în unele cazuri. Acest lucru este descris în detaliu în Tabelul 17.
Selectarea modului de operare cu sau fără semnul operanzilor
Operanzii pot conține numere cu sau fără semn, dar tipul de date trebuie să fie specificat de software-ul aplicației prin setarea bitului SUS. Pentru operarea în mod fără a lua în considerare semnul operanzilor, bitul SUS al registrului MCNT trebuie să fie setat la 1; pentru a lucra în mod, luând în considerare semnul operanzilor, bitul SUS trebuie să fie resetat la 0. Procesul multiplicator hardware procesează cu numere nesemnate ca și cu valorile absolute. Pentru un număr binar de 16 biți, operanzii au valori de la 0 la 216 - 1 (xFFFFh). Când funcționează în modul semn, operanzii trebuie să fie reprezentați în cod binar-complementar, în care cel mai semnificativ bit determină semnul numărului. Gama de numere binare-complement pe 16 biți este între -2 (16-1) (x8000h) și +2 (16-1) - 1 (x7FFF). Rezultatul oricărei operații care ia în considerare semnul operanzilor înainte de scrierea sau acumularea / scăderea în registrul MS este precedat de o extensie semnată. Pentru a lucra în modul de multiplicare cu inversiune, bitul SUS trebuie întotdeauna resetat la 0 (adică trebuie să fie definit modul de operare ținând cont de semnul operanzilor). Încercarea de înmulțire cu inversarea în mod fără a lua în considerare semnele operanzilor duce la un rezultat incorect și la setarea bitului OF. Modificarea tipului de date care trebuie selectate (operanzi) prin setarea bitului SUS nu modifică conținutul registrelor MC. Registrele MC sunt disponibile pentru scriere / citire și pot fi modificate de software-ul aplicației, dacă este necesar.
Selectați numărul de operanzi
Bitul OPCS vă permite să selectați o operație cu una sau două operațiuni. Atunci când bitul OPCS este resetat la 0, multiplicatorul începe să execute biții SUS, MSUB și MMAC numai după încărcarea ambelor operanzi (una în registrul MA și una în registrul MB). Când bitul OPCS este setat la 1, operația începe imediat după încărcarea fiecărui operand (MA și MB). În modul squaring (SQU), starea bitului OPCS este ignorată, iar conversia începe după încărcarea unuia dintre operanzi (MA sau MB).
Funcționarea multiplicatorului de hardware
Accesul la multiplicatorul hardware
Nu există nicio limită pentru cât de repede sunt introduse datele în registrele operatorului sau în ordinea în care sunt introduse. Singura cerință este ca datele din registrele MA și / sau MB să corespundă setărilor stabilite de biții din registrul MCNT. Multiplicatorul de hardware urmărește intrarea în registrele MA și MV și pornește calculele imediat după ce a fost scris numărul necesar de operanzi. Dacă se selectează modul de conversie după scrierea a două operanzi, conversia va fi efectuată după scrierea a două operanzi. Dacă aplicația trebuie să reîncarce primul operand, este necesar să resetați același operand sau să folosiți bitul CLD al registrului MCNT pentru a reinitializa multiplicatorul de hardware; altfel încărcarea celui de-al doilea operand va începe operația de calcul. Bitul CLD este auto-curățat și este conceput pentru a reinitializa multiplicatorul de hardware. După setarea acestui bit, registrele de operanzi și contorul numărului de operanzi înregistrați sunt șterse.
Modul de multiplicare definit de biți începe imediat după ce operandul / operandul este scris și executat într-un singur ciclu. Datele din doar în citire registre și ca rezultat MC1R MC0R deja prezentă în cadrul următor, și în modul de multiplicare, acumularea / scăderea (MCW = 0 și MMAC = 1) în registrul de date MC2: 0 pentru a instala un singur ciclu de mai târziu. Când bitul MCW = 0, rezultatul înregistrărilor MC2: 0 va fi de asemenea disponibil întotdeauna numai după un ciclu suplimentar. Acest ciclu, care este necesar pentru actualizarea registrelor MC2: 0, nu împiedică inițializarea unui alt calcul. Lucrul cu un hop poate fi pornit (indiferent de tipul de date și numărul de operanzi) fără a fi nevoie să se creeze întârzieri între încărcarea operanților.
Tabelul 17. Modurile de operare ale multiplicatorului de hardware