Operatorul nu este un prefix de invertor. Comportamentul operatorului NU este dependent de operandul la care acționează.
Puteți utiliza trei tipuri de operanzi cu operatorul:
1. Dacă operandul este un singur nod, GND sau VCC, se efectuează o singură inversiune. De exemplu. înseamnă că semnalul trece prin invertor.
2. Dacă operandul este un grup de noduri, fiecare membru al grupului trece prin invertor. De exemplu, magistrala A [4..1] este interpretată ca (! A4 .a3 .a2.A1).
3. Dacă operandul este un număr, acesta este tratat ca număr binar și fiecare bit este inversat. De exemplu. 9 este interpretat ca B "1001", adică B "0110".
Operatori booleeni care utilizează AND, NAND, OR, NOR, XOR și XNOR
Cu operatori binari, există cinci combinații de operanzi. Fiecare dintre aceste combinații este interpretată diferit:
1. Dacă ambii operanzi sunt noduri simple sau constante GND și VCC, operatorul efectuează o operație logică pe două elemente. De exemplu, (a b).
2. Dacă ambii operanzi sunt grupuri de noduri, operatorul acționează asupra nodurilor corespunzătoare fiecărui grup, efectuând operații bituminoase între grupuri. Grupurile trebuie să aibă aceeași dimensiune. De exemplu, (a, b, c) # (d, e, f) este interpretat ca (a # d, b # e, c # f).
3. Dacă un operand este un singur nod, GND sau VCC și un alt grup de noduri, un singur nod sau o constantă este duplicat pentru a crea un grup de aceeași dimensiune ca un alt operator. Expresia este apoi tratată ca o operațiune de grup. De exemplu, a b [4..1] este interpretat ca (a b4, a b3, a b2, a b1).
4. Dacă ambii operanzi sunt numere, atunci numărul mai scurt este extins luând în considerare semnul pentru a fi de acord cu dimensiunea unui alt număr și este apoi tratat ca o operațiune de grup. De exemplu, în expresie (3 # 8), 3 și 8 sunt convertite în numerele binare B "0011", respectiv B "1000". Rezultatul este B "1011".
5. Dacă un operand este un număr și un alt nod sau grup de noduri, numărul este divizat în biți pentru a se potrivi dimensiunii grupului și expresia este tratată ca o operație de grup. De exemplu, în expresia (a, b, c) 1, 1 este convertit în B "001" și expresia devine (a, b, c) (0, 0, 1). Rezultatul este (a 0, b 0, c 1).
O expresie care utilizează VCC ca operand este interpretată conform unei expresii care utilizează 1 ca operand. De exemplu, în prima expresie, 1 este un număr în format extins. În a doua expresie, nodul VCC este duplicat. Apoi, fiecare expresie este tratată ca o operațiune de grup.
(a, b, c) 1 = (0, 0, c)
(a, b, c) VCC = (a, b, c)
Prioritățile operatorilor booleeni și ale comparatorilor
Operanzii separați de operatorii logici și aritmetici și comparatori sunt calculați în conformitate cu regulile de prioritate de mai jos (prioritatea 1 este cea mai mare). Operațiile cu aceeași prioritate sunt evaluate de la stânga la dreapta. Cu ajutorul parantezelor (), puteți schimba ordinea calculelor.
Megafuncția este un bloc complex sau de nivel înalt care poate fi folosit în combinație cu primitivele de porți și declanșatoare și / sau cu funcții macro de tip vechi în fișierele de proiect.
Altera oferă o bibliotecă de megafuncții, inclusiv funcții din biblioteca Parametrizabile Modul (LPM) versiunea 2.1.0, în directorul \ maxplus2 \ max2lib \ mega_lpm creat în timpul instalării.
Biblioteca de funcții parametrizabile (LPM) este o bibliotecă de funcții logice independente de tehnologie, parametrizată pentru a obține scalabilitate și adaptabilitate. Altera a implementat modulele parametrizate (denumite și funcții parametrizabile) de la LPM în versiunea 2.1.0, care oferă o intrare independentă arhitectural pentru toate dispozitivele MAX + PLUS II acceptate. Compilatorul include suport integrat de compilare LPM pentru funcțiile utilizate în fișierele de intrare (schematică, AHDL, VHDL și EDIF).
O funcție parametrizabilă este o funcție logică care utilizează parametrii pentru a obține scalabilitate, adaptabilitate și implementare eficientă în siliciu.
Megayadra mega-funcțiile sunt pre-verificate fișiere HDL pentru funcții complexe la nivel de sistem care pot fi achiziționate de la Altera. Acestea sunt optimizate pentru dispozitivele FLEX 10K, FLEX 8000, FLEX 6000, MAX 9000 și MAX 7000. Mega-funcțiile Megoyadra constau din mai multe fișiere. Fișierul pentru sinteza ulterioară este utilizat pentru a implementa proiectul (montarea) în dispozitivul specificat. În plus, modelele funcționale VHDL sau Verilog HDL sunt incluse pentru proiectarea și depanarea cu unelte de modelare standard EDA.
Altera furnizează o bibliotecă de megafuncții, inclusiv orice megafuncții Megoyadra achiziționate în directorul \ maxplus2 \ max2lib \ mega_lpm creat în timpul instalării.
Mai jos este o descriere a celor mai frecvent utilizate megafuncții. Informațiile complete despre toate megafuncțiile pot fi găsite în sistemul de ajutor (meniul Ajutor, comanda Megafunctions / LPM).
lpm_and (poarta AND)
Altera recomandă utilizarea operatorilor de poartă AND sau a operatorilor lor în loc de lpm_ și pentru o implementare mai ușoară și un timp de compilare mai bun. Totuși, lpm_ și pot fi utile dacă aveți nevoie de intrări parametrizabile.
CU (LPM_WIDTH, LPM_SIZE)
Simple lpm_and valve folosesc aproximativ o celulă logică pe fiecare supapă.
MAX + PLUS II oferă peste 300 de funcții macro.
Numele funcțiilor macro din magistrală se termină în litera B. Acestea sunt identice din punct de vedere funcțional cu funcțiile macro non-bus corespunzătoare, dar au grupuri de intrare și / sau ieșiri.
Comparatoare Generatoare de paritate
Convertoare Multiplicatori rapizi
Decodoare Registrele de schimbare
Regiștrii de stocare digitală