Metodata Comportamentală de Descriere Alu

Previzualizare laborator:

Extras din laborator:

Scopul lucrării:Să se descrie o unitate aritmetico logică cu un set de 16 UA elementare. Să se sintetizeze codul scris în Verilog pentru a obţine circuitul digital.

Date teoretice:

Unităţi logico-aritmetice (ALU)

Circuitele prezentate anterior efectuau câte o singură funcţie. Ele decodificau, multiplexau, sumau sau roteau. Este momentul să prezentăm o modalitate prin care se poate proiecta un circuit a cărui funcţie să poată fi selectată dintr-o mulţime predefinită de funcţii utile. Un astfel de circuit necesar în conceperea unor maşini care realizează prelucrări diverse asupra aceloraşi variabile aplicate intrărilor. Operaţiile efectuate de astfel de circuite sunt de tip logic sau aritmetic, motiv pentru care ele se numesc unităţi logico - aritmetice, ALU (Arithmetic and Logic Unit).

Arhitectura unei unităţi logico - aritmetice

Prin acest paragraf vom răsunde la întrebarea: care sunt funcţiile efectuate de o ALU? Nu are importanţă în această fază, de definire arhitecturală, cum se realizează aceste funcţii. Definiţia arhitecturală dă seamă de comportamentul circuitului, de felul cum acesta este văzut la bornele sale, Ia interfaţa sa cu celelalte subsisteme cu care interacţionează.

Conexiunile sunt de mai multe tipuri:

1. două intrări, fiecare de câte n biţi reprezentând cei doi operanzi:

Fig. 1 Schema bloc a unei unităţi logico-aritmetice.

- operandul stâng (left) codificat cu Ln-1... Lo

- operandul drept (right) codificat cu Rn-1... R0

2. intrare pentru specificarea operaţiei logico - aritmetice de efectuat între cei doi operanzi, codificată, în cazul exemplului nostru, cu trei biţi, F2F1F0 (numărul de biţi depinde de setul de funcţiuni al ALU)ieşirea de n biţi pe care se generează rezultatul, On-1... O0

3. o serie de biţi cu semnificaţie independentă, numiţi indicatori sauflag-uri, ce car¬acterizează relaţii între operanzi sau rezultatul operaţiei efectuate; în exemplul pe care-1 dăm vom lua în consideraţie următoarele fiag-uri:

CARRY : este un bit ce reprezintă depăşirea ce apare la operaţiile aritmetice cu întregi pozitivi

EQUAL : indică identitatea celor doi operanzi, Ln-1 ... L0 şi Rn-1 ... R0

ZERO : semnalizează faptul că rezultatul operaţiei curente, On-1... O0 este o configuraţie binară cu toţi biţii egali cu zero

SGN : reprezintă valoarea celui mai semnificativ bit, On-1, al rezultatului care, dacă rezultatul este interpretat ca un număr cu semn, este valoarea semnului (0 pentru plus şi 1 pentru minus)

PAR : reprezintă cel mai puţin semnificativ bit al rezultatului, care, dacă rezul¬tatul este interpretat ca număr întreg, reprezintă paritatea numărului (0 pentru număr par şi 1 pentru număr impar)

OVF : reprezintă depăşirea capacităţii de reprezentare a numerelor întregi (cu numerele negative reprezentate prin complementul faţă de 2); este un fel de carry pentru întregii cu semn.

Setul de funcţii al ALU va fi limitat, pentru exemplul pe care-1 folosim, la următoarele:

AND : Oi = LiRi, pentru i = 0,1,... (n -1)

OR : Oi = Li + Ri, pentru i = 0,1,... (n - 1)

XOR : Oi =Li  Ri, pentru i = 0,1,... (n - 1)

ADD : adună modulo 2n cei doi operanzi reprezentând două numere întregi

SUB : scade modulo 2n cei doi operanzi reprezentând două numere întregi

INC : incrementează modulo 2n operandul stâng

LEFT : ieşirea ia valoarea operandului stâng

SHL : reprezintă deplasarea logică cu o poziţie la dreapta a operandului stâng (cel mai puţin semnificativ bit se pierde).

ALU uzuale realizează şi alta funcţii, cum ar fi decrementarea (DEC), rotirea (ROT), NOT, ş. a.

Mersul lucrării:

module ALU(L,R,F,Out,PAR,SGN,CARRY,OVF,ZERO,EQUAL);

parameter ADD=1,SUB=2,INC=3,DEC=4,ROL=5,ROR=6,SHL=7,

SHR=8,OR1=9,AND1=10,NOT1=11,XOR1=12,NEG1=13,

LEFT=14,RIGHT=15;

input [7:0] L,R;

input [3:0] F;

output [7:0] Out;

output PAR, SGN, CARRY,OVF,ZERO,EQUAL;

reg CARRY;

reg [7:0] Out;

assign ZERO = ~(|Out);

assign EQUAL = (L==R);

assign SGN = Out[7];

assign PAR = Out[0];

always @ (L or R or F)

case (F)

ADD: {CARRY,Out}=L+R;

SUB: {CARRY,Out}=L-R;

INC: Out=L+1;

DEC: Out=L-1;

ROL: Out = {L[0], L[7:1]};

ROR: Out = {L[6:1], L[7]};

SHL: {CARRY,Out} = {L[6:0], 1'b0};

SHR: {CARRY,Out} = {1'b0, L[7:1]};

OR1: Out = L|R;

AND1: Out = L&R;

NOT1: Out = ~L;

XOR1: Out = L^R;

NEG1: Out = 0-L;

LEFT: Out = L;

RIGHT: Out = R;

endcase

endmodule

Modulul de simulare:

module ALU_SIM;

reg [3:0] F;

reg [7:0] L;

reg [7:0] R;

wire CARRY,OVF,ZERO,EQUAL;

wire SGN, PAR;

wire [7:0] Out.

Observații:

Universitatea Tehnica a Moldovei

Facultatea CIM

Catedra Microelectronica si semiconductoare

Download gratuit

Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.

Structură de fișiere:
  • Metodata Comportamentala de Descriere Alu.docx
Alte informații:
Tipuri fișiere:
docx
Nota:
7/10 (1 voturi)
Nr fișiere:
1 fisier
Pagini (total):
5 pagini
Imagini extrase:
5 imagini
Nr cuvinte:
911 cuvinte
Nr caractere:
4 825 caractere
Marime:
119.32KB (arhivat)
Publicat de:
NNT 1 P.
Nivel studiu:
Facultate
Tip document:
Laborator
Domeniu:
Electronică
Predat:
la facultate
Materie:
Electronică
Sus!