Sunteți pe pagina 1din 13

Proiectul 49

Cojocaru Ionut-Cosmin si Iscru Bogdan

Calculatoare Engleza

Schema implementata a procesorului pic24:


Instructiuni non jmp Flag Instructiune salt
AND Ws,#lit5,Wd Z BRA Z,Expr

LOOP: mov 0x1020, w1 ;INW0=001f


and w1, #0x10, w3
rep1: bra z,rep1
and w1,#0x8,w4
bra z,cont1
rep2: bra rep2
cont1: mov w4,0x1024
bra LOOP

Informatiiledespreblocuri :

U_New_PC PC_Update in care New_PC va primi o valoarea noua a PC.

U_PC ProgCnt in care PC va stoca valoarea din NEW_PC bazandu-se pe frontal crescator al Clk.

U_ROM ROM32x24 in care se folosesc doar adresele Addr(4:0), celelalte nefiind importante.

U_MUXRegD MUX2V4 este un multiplexor folosit pentru stabilirea pozitiei bitului de destinatie.

U_Ctrl ctrl in care odata primita instructiunea, este responsabil pentru determinarea valorilor si a
tuturor semnalelor si a ordinii in care o sa fie folosite in executie.

U_REGS File_Regs consta intr-un set de registrii care pot sa fie scrisi sau cititi. Contine 2 porturi de
citire RdReg1 si RdReg2 si un singur port de scriere WrReg.

U_ALU ALU este responsabil cu operatiile aritmetico-logice. Primeste 2 valori RdData1 si RdData2 si
face operatia dorita in functie de valoarea ALUOP si trimite rezultatul pe iesirea Y. Este de asemenea
responsabil pentru calcularea valorii flag-ului.

U_DataMem DataMem este blocul de memorie care contine memorie RAM si care este resposabil
pentru operatie de Input/Output.

XLXI_4 MUX2V16 este multiplexorul folosit la stabilirea daca informatia care a fost scrisa in registru
vine de la ALU sau de la blocul de memori edepinzand de instructiunea curenta.
Tabelul de adevar al semnalelor generate de blocul de control:

OPCODE AluOP MemWr Mem2Reg RegWr CE_flag Branch RegDest BranchZ

ADD 01000 000 0 0 1 1 0 0 0


wb,ws, wd
SUB 01010 001 0 0 1 1 0 0 0
wb,ws, wd
AND 01100 010 0 0 1 1 0 0 0
wb,ws, wd
IOR 01110 011 0 0 1 1 0 0 0
wb,ws, wd
MOV 10001 110 1 0 0 0 0 0 0
wns, f
MOV 10000 110 0 1 1 0 0 1 0
f, wnd
BRA 001101 110 0 0 0 0 1 0 0
expr
BRA 001100 110 0 0 0 0 0 0 1
Z, expr
AND 01100 111 0 0 0 0 0 0 0
wb, #lit5, wd

Rolurile semnalelor:

AluOPestefolosit in ALU pentru a determinaoperatia care trebuiecalculata.

MemWrestefolosit in cazul in care estenevoiesascriesau nu in memorie.

Mem2Reg estefolosit ca o selectie de semnfolosit in MUX2V16 care determinadacainformatia care


trebuiescrisa in registru a venit din ALU sau din DataMem. Depinde de informatia care se executa in
momentul respective.

RegWrestefolositpentru a determinadacaestemomentul in care trebuiescrissau nu in registrulFile_Regs.

CE_flageste clock-ul de activare al semnalului.

Branchse face 1 dacaopcodulinstructiunii din ctrl reprezintainstructiunea BRA Expr si in cazcontrar se


face 0.

RegDestestefolosit ca un semnal de selectiepentru MUX2V4 pentru a determinapozitiabitilor de


destinatie.

BranchZ se face 1 daca opcodul instructiunii din ctrl reprezinta instructiunea BRA Z,Expr si in caz contrar
se face 0.
Tabelul cu instructiuni:

Instructiuni
ADD 0100 0www wBqq qddd dppp ssss
wb,ws, wd
SUB 0101 0www wBqq qddd dppp ssss
wb,ws, wd
AND 0110 0www wBqq qddd dppp ssss
wb,ws, wd
IOR 0111 0www wBqq qddd dppp ssss
wb,ws, wd
MOV 1000 1fff ffff ffff ffff ssss
wns, f
MOV 1000 1fff ffff ffff ffff dddd
f, wnd
BRA 0011 0111 nnnn nnnn nnnn nnnn
expr
BRA 0011 0010 nnnn nnnn nnnn nnnn
Z, expr
AND 0110 0www wBqq qddd d11k kkkk
wb, #lit5, wd

w = address of the base register

B = byte/word operation

q = destination address mode

d = destination register

p = source address mode

s = source register

f = address of the file register

n = offset from (PC + 2)

k=bits that provide the literal operand, a five-bit integer number.


Paginile din manual cu instructiunile: