Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1 ESPECIFICACIN FUNCIONAL
Llus Ters
Instituto de Microelectrnica de Barcelona, IMB-CNM (CSIC)
Universitat Autnoma de Barcelona (UAB)
P2.1
1TIPOSDEINSTRUCCIONES
Sehan definido 8tipos deinstruccin;
Paracada instruccin =>cdigo,lista deparmetros:
Operacin
Xk :=A;
Xk :=INj;
OUTi :=Xj;
OUTi :=A,
Xk :=f(Xi,Xj);
gotoN;
ifXi>0gotoN;
ifXi<0gotoN;
Ejemplo:sistema decontroldetemperatura.
0:ASSIGN_VALUE,5,10
1:DATA_INPUT,0,0
2:DATA_INPUT,1,1
3:OPERATION,4,0,1,subtract
4:JUMP_NEG,4,7
5:JUMP_POS,4,9
6:JUMP,10
7:OUTPUT_VALUE,0,1
8:JUMP,10
9:OUTPUT_VALUE,0,0
10:DATA_INPUT,3,2
11:DATA_INPUT,2,2
12:OPERATION,4,2,3,subtract
13:OPERATION,4,4,5,subtract
14:JUMP_NEG,4,11
15:JUMP,1
P2.1
(X5:=10)
(X0:=IN0)
(X1:=IN1)
(X4:=X0 X1)
(ifX4<0thengoto7)
(ifX4>0thengoto9)
(goto10)
(OUT0:=1)
(goto10)
(OUT0:=0)
(X3:=IN2)
(X2:=IN2)
(X4:=X2 X3)
(X4:=X4 X5)
(ifX4<0thengoto11)
(goto1)
P2.1
2ESPECIFICACINFUNCIONAL
Sistemadigitalaimplementar:
nmero
instruccin
programa
4
P2.1
Comentario:
Especificacin inicial (semana 1):
instruccion siguiente definida por un
circuito/programador externo en
funcion decierta condiciones
internas
operaciones
instrucciones
condiciones
Especificacin modificada:
Nmero delainstructionsiguiente
calculado internamente por el
procesador;
programa almacenado en memoria.
(=arcquitectura vonNeumann)
5
Algoritmo:especificacin funcional
number:=0;
loop
caseprogram(number)is
when(ASSIGN_VALUE,k,A)=>
X(k):=A;number:=number+1;
when(DATA_INPUT,k,j)=>
X(k):=IN(j);number:=number+1;
when(DATA_OUTPUT,i,j)=>
OUT(i):=X(j);number:=number+1;
when(OUTPUT_VALUE,i,A)=>
OUT(i):=A;number:=number+1;
when(OPERATION,i,j,k,f)=>
X(k):=f(X(i),X(j));number:=number+1;
when(JUMP,N)=>
number:=N;
when(JUMP_POS,i,N)=>
ifX(i)>0thennumber:=N;elsenumber:=number+1;endif;
when(JUMP_NEG,i,N)=>
ifX(i)<0thennumber:=N;elsenumber:=number+1;endif;
endcase;
endloop;
P2.1
X:vectordeclarado previamente.
Nmero decomponentes X:adefinir
posteriormente.
Cada componente Xes unnmero de8bits.
6
(Ejercicio)
P2.1
Asumimos que:
X es unconjunto de16componentes ycada uno puede almacenar unnmero de8bits,
Hayhasta8puertos deentraday8puertos desalida cada uno de8bits,
Elnmero mximo deinstrucciones deunprograma es 256,
Solohay2operaciones distintas paraf:suma yresta.
Cuantas instrucciones distintas sepueden definir?
P2.1
(Solucin)
(ASSIGN_VALUE,k,A)
(DATA_INPUT,k,j)
(DATA_OUTPUT,i,j)
(OUTPUT_VALUE,i,A)
(OPERATION,i, j, k, f)
(JUMP,N)
(JUMP_POS,i,N)
(JUMP_NEG,i,N)
Xk :=A;
Xk :=INj;
OUTi :=Xj;
OUTi :=A,
Xk :=f(Xi,Xj);
gotoN;
ifXi>0gotoN;
ifXi<0gotoN;
16256=4096
168=128
816=128
8256=2048
1616162=8192
256
16256=4096
16256=4096
RESUMEN
P2.1
P2.1
10
1DIAGRAMADEBLOQUES
number:=0;
loop
caseprogram(number)is
when(ASSIGN_VALUE,k,A)=>
X(k):=A;number:=number+1;
when(DATA_INPUT,k,j)=>
X(k):=IN(j);number:=number+1;
when(DATA_OUTPUT,i,j)=>
OUT(i):=X(j);number:=number+1;
when(OUTPUT_VALUE,i,A)=>
OUT(i):=A;number:=number+1;
when(OPERATION,i,j,k,f)=>
X(k):=f(X(i),X(j));number:=number+1;
when(JUMP,N)=>
number:=N;
when(JUMP_POS,i,N)=>
ifX(i)>0thennumber:=N;elsenumber:=number+1;endif;
when(JUMP_NEG,i,N)=>
ifX(i)<0thennumber:=N;elsenumber:=number+1;endif;
endcase;
endloop;
P2.2
Entradasexternas:
IN0,IN1,,IN7;
instruction;
Salidas externas:
OUT0,OUT1,,OUT7;
number;
Datos internos:X;
Transferencias dedatos:
OUT(i)<=X(j)oA;
number <=(number +1)oN;
X(k)<=A oIN(j) of;
operaciones:f(X(i),X(j)).
12
DATOSINTERNOS
P2.2
Entradasexternas:
IN0,IN1,,IN7;
instruction;
Salidas externas:
OUT0,OUT1,,OUT7;
number;
Datos internos:X;
Transferencias dedatos:
OUT(i)<=X(j)orA;
number <=(number +1)orN;
X(k)<=A orIN(j) orf;
operaciones:f(X(i),X(j)).
13
TRANSFERENCIASDEDATOSyOPERACIONES
P2.2
Entradasexternas:
IN0,IN1,,IN7;
instruction;
Salidas externas:
OUT0,OUT1,,OUT7;
number;
Datos internos:X;
Transferencias dedatos:
OUT(i)<=X(j)orA;
number <=(number +1)orN;
X(k)<=A orIN(j) orf;
operaciones:f(X(i),X(j)).
14
P2.2
DIAGRAMADEBLOQUES
seleccinentrada
seleccinsalida
bancode
registros
programa
{X(i)}
go to
recursosde
clculo
15
P2.2
INSTRUCCIONES(especificacionesadicionales)
Cdigo ylista deparmetros
(ASSIGN_VALUE,k,A)
(DATA_INPUT,k,j)
(DATA_OUTPUT,i,j)
(OUTPUT_VALUE,i,A)
(OPERATION,i, j, k, f)
(JUMP,N)
(JUMP_POS,i,N)
(JUMP_NEG,i,N)
Operacin
Xk :=A;
Xk :=INj;
OUTi :=Xj;
OUTi :=A,
Xk :=f(Xi,Xj);
gotoN;
ifXi>0gotoN;
ifXi<0gotoN;
Solodosoperaciones f:+y;
Bancoderegistros:16registros (i,j, k: sonnmeros de4bits);
nmero mximo deinstrucciones:256 (N es unnmero de8bits).
Lacodificacin deinstrucciones sedefinir ms adelante.
16
2DESCRIPCINDELOSBLOQUES
2.1SELECCINDEENTRADA
seleccinentrada
seleccinsalida
bancode
registros
{X(i)}
go to
recursosde
clculo
P2.2
number:=0;
loop
caseprogram(number)is
when(ASSIGN_VALUE,k,A)=>
X(k):=A; number:=number+1;
when(DATA_INPUT,k,j)=>
X(k):=IN(j); number:=number+1;
when(DATA_OUTPUT,i,j)=>
OUT(i):=X(j);number:=number+1;
when(OUTPUT_VALUE,i,A)=>
OUT(i):=A;number:=number+1;
when(OPERATION,i,j,k,f)=>
X(k):=f(X(i),X(j));number:=number+1;
when(JUMP,N)=>
number:=N;
when(JUMP_POS,i,N)=>
ifX(i)>0thennumber:=N;elsenumber:=number+1;endif;
when(JUMP_NEG,i,N)=>
ifX(i)<0thennumber:=N;elsenumber:=number+1;endif;
endcase;
endloop;
17
(seleccin deentrada)
seleccinentrada
Especificacin funcional
loop
caseinstructionis
when(ASSIGN_VALUE,k,A)=>
to_reg :=A;
when(DATA_INPUT,k,j)=>
to_reg :=IN(j);
when(OPERATION,i,j,k,f)=>
to_reg :=result;
whenothers=>
to_reg :=don'tcare;
endcase;
endloop;
P2.2
number:=0;
loop
caseprogram(number)is
when(ASSIGN_VALUE,k,A)=>
X(k):=A; number:=number+1;
when(DATA_INPUT,k,j)=>
X(k):=IN(j); number:=number+1;
when(DATA_OUTPUT,i,j)=>
OUT(i):=X(j);number:=number+1;
when(OUTPUT_VALUE,i,A)=>
OUT(i):=A;number:=number+1;
when(OPERATION,i,j,k,f)=>
X(k):=f(X(i),X(j));number:=number+1;
when(JUMP,N)=>
number:=N;
when(JUMP_POS,i,N)=>
ifX(i)>0thennumber:=N;elsenumber:=number+1;endif;
when(JUMP_NEG,i,N)=>
ifX(i)<0thennumber:=N;elsenumber:=number+1;endif;
endcase;
endloop;
18
P2.2
2.2SELECCINDESALIDA
seleccinentrada
seleccinsalida
bancode
registros
{X(i)}
go to
recursosde
clculo
number:=0;
loop
caseprogram(number)is
when(ASSIGN_VALUE,k,A)=>
X(k):=A;number:=number+1;
when(DATA_INPUT,k,j)=>
X(k):=IN(j);number:=number+1;
when(DATA_OUTPUT,i,j)=>
OUT(i):=X(j); number:=number+1;
when(OUTPUT_VALUE,i,A)=>
OUT(i):=A; number:=number+1;
when(OPERATION,i,j,k,f)=>
X(k):=f(X(i),X(j));number:=number+1;
when(JUMP,N)=>
number:=N;
when(JUMP_POS,i,N)=>
ifX(i)>0thennumber:=N;elsenumber:=number+1;endif;
when(JUMP_NEG,i,N)=>
ifX(i)<0thennumber:=N;elsenumber:=number+1;endif;
endcase;
endloop;
19
P2.2
(seleccin desalida)
seleccinsalida
Especificacin funcional
loop
caseprogram(number)is
when(DATA_OUTPUT,i,j)=>
OUT(i):=reg;
when(OUTPUT_VALUE,i,A)=>
OUT(i):=A;
whenothers=>
OUT(i):=OUT(i);
endcase;
endloop;
Salida registrada
(como unelemento dememoria)
number:=0;
loop
caseprogram(number)is
when(ASSIGN_VALUE,k,A)=>
X(k):=A;number:=number+1;
when(DATA_INPUT,k,j)=>
X(k):=IN(j);number:=number+1;
when(DATA_OUTPUT,i,j)=>
OUT(i):=X(j); number:=number+1;
when(OUTPUT_VALUE,i,A)=>
OUT(i):=A; number:=number+1;
when(OPERATION,i,j,k,f)=>
X(k):=f(X(i),X(j));number:=number+1;
when(JUMP,N)=>
number:=N;
when(JUMP_POS,i,N)=>
ifX(i)>0thennumber:=N;elsenumber:=number+1;endif;
when(JUMP_NEG,i,N)=>
ifX(i)<0thennumber:=N;elsenumber:=number+1;endif;
endcase;
endloop;
20
RESUMEN
P2.2
21