Sunteți pe pagina 1din 6

Laboratorio 2 Procesador SPARCV8/4 y RAM

1. Primera parte
En esta parte hay 4 trabajos individuales, cada uno debe ser desarrollado por un estudiante
del grupo.
a. Unidad aritmtico-lgica ALU (primer trabajo individual).
Objetivo: Realizar una parte de la ALU (unidad aritmtico lgica) del SPARC - V8.

La ALU es donde se realizan las operaciones aritmticas (con nmeros enteros) y lgicas
(con cadenas de bits). Su misin consiste en reproducir una parte de la ALU del SPARCV8
en VHDL con la entidad ALU32 de la figura

ALU32 tiene 2 entradas de 32 bits (a y b), y una salida tambin de 32 bits (alu) donde sale
el resultado de la funcin FUN. La entrada fun de 4 bits indica cual funcin se va a realizar.
Con 4 bits se pueden realizar hasta 16 funciones, de las cuales no se van a implementar 4.
Las funciones 14-UDIV y 15-SDIV no se implementarn al igual que las funciones 9 y 13,
en estos casos podr salir por alu cualquier valor. Las 12 funciones restantes estn descritas
en la tabla anterior, en particular la funcin 8 ADDX (12-SUBX) se parece a la funcin 0-
ADD(4-SUB) slo que adems suma (resta) la entrada c de un bit. Para la suma y la resta,
los nmeros pueden estar en formato binario (sin signo) o complemento a dos (con signo)
ya que el algoritmo es el mismo para ambos formatos. En la multiplicacin s importa el
formato, las funciones 10-UMUL y 11-SMUL se diferencian en que la primera es para
nmeros en formato binario (sin signo) y la segunda es para nmeros en formato
complemento a dos (con signo). () En la bitcora hay que realizar una multiplicacin de
nmeros en binario de 4 bits y una multiplicacin de nmeros negativos en formato
complemento a dos de cuatro bits. Para la descripcin en VHDL si es importante tener en
cuenta el tipo de dato de las seales internas (signed o unsigned).

Debe crear el banco de prueba para simular cada operacin con un dato y confirmar que el
resultado es correcto. Las descripciones en VHDL se entregan como en la primera prctica.
Recuerde que el nombre del archivo .zip es similar a Lab2_20072007007.zip
b. Unidad de desplazamiento (segundo trabajo individual).
Objetivo: Realizar el desplazador.

En [Chu08,3.7.3] se describen dos implementaciones que rota amt bits. () En la bitcora
describa brevemente como funciona cada una de las implementaciones y explique cul es
mejor.

Para el SPARCV8 se requiere el desplazador Desp32.

La entrada fun indica alguna de las siguientes operaciones:
fun=1-Desplazamiento lgico (rellena con ceros) a la
izquierda (SLL) la cantidad amt .
fun=2-Desplazamiento lgico (rellena con ceros) a la derecha
(SRL) la cantidad amt.
fun=3-Desplazamiento aritmtico (rellena con el bit ms
significativo) a la derecha (SRA) la cantidad amt.
Cuando fun=0 puede salir cualquier cosa por y. Se sugiere que para
la implementacin use una estructura CASE para la funcin y en
cada uno de los casos del CASE use una estructura IF para los desplazadores.

Su misin es describir en VHDL el desplazador desp32 el cual debe ser entregado con su
respectiva simulacin (5 simulaciones por cada desplazamiento) y bitcora.
c. Banco de registros (tercer trabajo individual)
Objetivo: Realizar un banco de registros para el SPARCV8/4.

En este laboratorio slo se va a construir un banco de 31 registros (de
r[1] hasta r[31]) cada uno de 32 bits. r[0] siempre tiene la
constante cero.

En [Chu08,4.2.3] se describe el banco de registros reg_file. ()
En la bitcora describa brevemente la funcin de cada una de las
entradas y salidas.

Para esta prctica debe modificar la descripcin reg_file para obtener reg_file3 la
cual se diferencia de reg_file en los siguientes aspectos:
reg_file3 tiene tres puertos de salida.
reg_file3 no requiere la seal wr_en.
En reg_file3 cuando se direcciona r[0] debe escribir y leer la constante cero.
() En el informe explique los cambios que requiere reg_file para volverlo reg_file3.
Su misin es describir en VHDL el banco de registros reg_file3 y simularlo
(escribiendo en 9 registros entre ellos r[0] y leer 3 por cada puerto).

El banco de registros del SPARC en principio puede tener ms de 100 registros pero slo
deja ver una ventana de 32 registros divididos en 4 grupos
r[0]=%g0 r[8]=%o0 r[16]=%l0 r[24]=%i0
r[1]=%g1 r[9]=%o1 r[17]=%l1 r[25]=%i1
r[2]=%g2 r[10]=%o2 r[18]=%l2 r[26]=%i2
r[3]=%g3 r[11]=%o3 r[19]=%l3 r[27]=%i3
r[4]=%g4 r[12]=%o4 r[20]=%l4 r[28]=%i4
r[5]=%g5 r[13]=%o5 r[21]=%l5 r[29]=%i5
r[6]=%g6 r[14]=%o6 r[22]=%l6 r[30]=%i6
r[7]=%g7 r[15]=%o7 r[23]=%l7 r[31]=%i7
d. Memoria de programa y contador (cuarto trabajo individual).
Objetivo: realizar la memoria RAM con doble puerto, para datos y programa.


En el SPARC v8 pueden estar separadas la RAM de datos y la ROM de programa
(arquitectura Harvard), pero tambin pueden estar en la misma memoria RAM (arquitectura
Von Neumann), en este ltimo caso la memoria debe tener dos puertos de salida de datos
(dout_dat y dout_prog) con sus respectivas direcciones (addr8_dat y addr8_prog). Para el
SPARC v8/4 vamos a usar la arquitectura Von Neumann.

Las entradas ce_dat y ce_prog habilitan o deshabilitan su respectiva parte de la memoria
RAM. En particular a cd_dat le corresponde la parte de datos.
Cuando ce_dat es cero la RAM
o ignora la escritura de datos (we_dat) y
o sale cero por dout_dat.
Cuando ce_dat es uno la RAM funciona normalmente, esto es,
o los datos se escriben en la direccin addr8_dat slo cuando we_dat es uno y
o por dout_dat sale el dato de la misma direccin.
A la entrada ce_prog solo le corresponde habilitar o deshabilitar la salida dout_prog.


En [CHU08] se presentan varias descripciones en VHDL para la memoria RAM con doble
puerto. La de lectura asincrnica (Listing 11.3 ) es la que funciona con el procesador del
lab2, pero esta descripcin se implementa en los CLB de la FPGA y no en los bloque de
RAM de la FPGA y por los tanto ocupa muchos recursos valiosos.

NOTA: La implementacin con lectura sincrnica (Listing 11.4 ) se diferencia de la anterior
en que la direccin es almacenada en un registro y por lo tanto requiere un ciclo de reloj
adiciona para leer la memoria. Esta implementacin si utiliza los bloques de memoria RAM
de la FPGA dejando libre los CLB. Pero esta implementacin requiere cambiar el
procesador del lab2, por ejemplo segmentndolo. Se recomienda utilizar el (Listing 11.3 )
aunque sea con una memoria ms pequea. Despus de ver como segmentar el procesador
se podra utilizar el (Listing 11.4 )

La la memoria RAM del (Listing 11.3 ) requiere unos cambios para poder ser usada en el
procesador SPARCv8/4, como son colocar las entradas ce_dat y ce_prog de acuerdo a la
anterior descripcin, adems hay que colocar el siguiente programa en la RAM cuando
rst=1.

() En el informe explique los cambios que requiere la RA M. Su misin es describir en
VHDL la RAM y simularla (leyendo 3 instrucciones del programa y luego escribiendo en
6 posiciones de memoria y leyndolas).

2. Segunda parte
Esta segunda parte es desarrollada en grupo. Sin embargo, cada uno es responsable de una
parte del SPARCv8/4.



e. Microprocesador SPARC V8/4 y ROM
Objetivo: Integrar los laboratorios anteriores para construir el SPARC V8/4 y la ROM.
Subir a aulas virtuales el trabajo en grupo con el banco de prueba en el formato establecido.

En la simulacin del trabajo en grupo se debe mostrar que est funcionando el programa:
dir instruccin
0 ADD %g1,%g0,6
4 ADD %g2,%g0,9
8 ciclo: ADD %g2,%g2,%g2
12 SUBcc %g1,%g1,1
16 BNE ciclo
20 NOP
24 fin: BA fin
28 NOP
() En la bitcora del trabajo en grupo
debe describir que hace el programa.
Subir a aulas el trabajo en grupo con
la simulacin.

f. Implementacin
Objetivo: Acondicionar el SPARC V8/4 para ser implementado en la FPGA.
En la figura se muestra como se debe implementar el SPARCv8/4 en la borad de la
universidad. El contador es para disminuir la frecuencia del reloj para que quede cercano a
un Hz. En los LEDs se visualizan los bits menos significativos de la ALSU y de la
direccin de la memoria de programa. De esta forma cada ciclo de reloj se puede saber qu
instruccin se est ejecutando y el resultado en la ALSU. Recuerde que para la
implementacin es necesario realizar el archivo .UCF como se indica en UG334.pdf. Si va
a simular se recomienda disminuir el nmero de bits del contador de 26 bits a 1bit.

En algunas implementaciones del SPARC despus de RESET el PC queda en 400016. Sin
embargo, en el diseo propuesto los bits de direccin ms significativos son ignorados, esto
implica que en ESTE laboratorio es indiferente si el PC se inicializa con 0 o con 400016.

S-ar putea să vă placă și