Laboratorio 3: Taller de Aritmética

Anuncio
Taller de Aritmética - Parte 2
Organización del Computador 1
Verano 2014
1.
Ejercicios
Para cada uno de los ejercicios deberá realizar un diagrama en papel del componente que
se desea implementar. Además realizar un test exhaustivo mediante una simulación que
pruebe la funcionalidad del mismo. Para la resolución de los ejercicios sólo podrá utilizar
compuertas lógicas de 2 entradas o los componentes que usted mismo haya desarrollado.
Para cada componente deberá hacer que el mismo sea utilizable en la construcción de otros
componentes más complejos. Para ello, en la vista de Implementation del ISE seleccione el
archivo del módulo correspondiente. Luego despliegue el menú Design Utilities y corra el
proceso Generate Schematic Symbol haciendo doble click sobre el mismo.
1.1.
Testing avanzado
Para realizar un test exhaustivo y de manera menos artesanal a lo hecho hasta el momento,
dado que ya sabemos cómo hacerlo manualmente, vamos a automatizar el control de las
respuestas para permitir una veloz verificación. Para ello se puede incluir un código similar
al que se detalla a continuación:
integer passed = 0 , failed = 0;
initial
begin
// Initialize Inputs
A = 4 ’ b0000 ; // input A
B = 4 ’ b0001 ; // input B
Op = 4 ’ b0001 ; // codigo de la operacion
#25;
if ( res == 4 ’ b0001 )
begin
passed = passed
$display ( " OK " ) ;
end
else
begin
failed = failed
$display ( " FAIL
end
// valor de retorno esperado
+ 1;
+ 1;
A= %b , B= %b , Op= %b , res = %b " , A , B , Op , res ) ;
#25;
// (...)
#25;
$display ( " TOTAL OK = %d , TOTAL FAIL = %d " , passed , failed ) ;
end
1
1.2.
Ejercicio 7 - c mux 16a1 4b.v
En el archivo c_mux_16a1_4b.v se encuentra la implementación de un multiplexor de 16
a 1 de 4 bits. El mismo cuenta con 16 entradas de 4 bits: in_0[3:0] a in_15[3:0] y una
entrada de 4 bits: sel[3:0] y la salida res[3:0]. En la salida se reflejará una de las 16
entradas que será seleccionada según el valor codificada por los bits de la entrada, si sel
vale 00002 , entonces en res veremos el contenido de in_0, si sel vale 00012 , entonces en
res veremos el contenido de in_1, etc. Realizar un test para verificar el funcionamiento del
mismo.
1.3.
Ejercicio 8 - c ALUb4.sch
Haga una ALU que debe tener los siguientes ports de entrada:
A[3:0]
B[3:0]
Op[3:0]
y las siguientes salidas:
S[3:0]
La salida S deberá mostrar la salida dependiendo del valor ingresado por Op, de la siguiente
manera:
00002 entonces S=A&B (and bit a bit)
00012 entonces S=A|B (or bit a bit)
00102 entonces S=A+B (suma binaria)
01102 entonces S=A-B (resta binaria)
01112 entonces S=(A<B) (set less than)
11002 entonces S=~(A|B) (nor bit a bit)
1.4.
Ejercicio 9
Haga un detector de V y Z e incorpore estos 2 flags como salidas de la ALU del ejercicio
anterior.
1.5.
Ejercicio 10
Bajar de la página de la materia el archivo ALU-on-board.zip. Descomprimirlo en algún
directorio. Dentro del ISE ir a File→ Open project y abrir el proyecto que acaba de descomprimir. En el mismo deberá incluir todos los fuentes (archivos .sch y .v) necesarios para
definir la ALU del punto anterior. Para ello utilice la opción Add source.
Si fuera necesario, marcar como Top Module el módulo ALUmap y correr el proceso Generate
Programming File. Copiar el archivo de extensión .bit al pendrive y probarlo en la placa.
2
Este proyecto permite utilizar la placa para testear la ALU. Se utilizarán los Slide switches,
Push buttons y LEDs.
La interpretación que que se debe hacer de estos componentes:
S(0)
S(1)
S(2)
S(3)
-
-
Z
V
Op(0)
1
Op(1)
Op(3)
1.6.
A(0)
A(1)
A(2)
A(3)
B(0)
B(1)
B(2)
B(3)
0
Op(2)
Ejercicio 11
Bajar de la página de la materia el archivo io-oc1.zip (“Proyecto: InputOutput-OC1”).
Descomprimirlo en algún directorio. Dentro del ISE ir a File→ Open project y abrir el proyecto
que acaba de descomprimir. En el mismo deberá incluir todos los fuentes (archivos .sch y
.v) necesarios para definir la ALU del punto anterior.Para ello utilice la opción Add source.
Si fuera necesario, marcar como Top Module el módulo io-oc1 y correr el proceso Generate
Programming File. Copiar el archivo de extensión .bit al pendrive y bajarlo a la placa.
Sin desconectar la corriente de la placa, conectar la UART y correr los tests automáticos
usando el comando ./test_alu.py. El mismo se encuentra en el archivo alu-autotest.tar.gz
que se puede descargar de la página.
3
Descargar