Professional Documents
Culture Documents
Nro. 1
ABSTRACT
Cargador: Modulo
encargado de inicializar los valores de los registros.
En computacion,
la unidad aritmetico
logica,
tambien
de arithmetic loconocida como ALU (siglas en ingles
gic unit), es un circuito digital que calcula operaciones
etc.) y opearitmeticas
(como suma, resta, multiplicacion,
raciones logicas
(si, y, o, no), entre dos numeros.
ALU: Modulo
encargado de realizar las operaciones
tabuladas en los requerimientos.
DESCRIPCION
CARGADOR
cargador(entrada,boton_a,boton_b,
boton_op,a,b,op);
CONSIGNA IMPLEMENTADA
Implementar una ALU sobre FPGA.
Utilizar las placas de desarrollo Basys II.
La ALU debe ser parametrizable (bus de datos) para
poder ser utilizada posteriormente en el trabajo final.
Validar el desarrollo por medio de Test Bench.
La ALU debera realizar las siguientes operaciones:
Operacion
ADD
SUB
AND
OR
XOR
SRA
SRL
NOR
Codigo
100000
100010
100100
100101
100110
000011
000010
100111
Entradas
entrada: Es el registro de entrada de ancho de bus
parametrizable.
DESARROLLO
Calculadora: Modulo
encargado de instanciar los
otros modulos.
1
Salidas
CALCULADORA
module calculadora(entrada,boton_a,boton_b,
boton_op,rdo,carry,zero);
ALU
alu(a,b,op,rdo,carry,zero);
Entradas
a: Este registro de entrada es un operando de la ALU.
b: Este registro de entrada es un operando de la ALU.
Variables Internas
wire [BUS_DAT_MSB+1:0] resultado;
Se utiliza una sola variable interna de tipo wirepara
funcion alu
almacenar el resultado de la funcion
Salidas
rdo: Este registro almacena el resultado de la opera de la ALU.
cion
VALIDACION
la operacion.
la operacion.
2
module ALU_tb ;
2
3
4
5
6
7
// Inputs
reg [ 7 : 0 ] entrada ;
reg boton_a ;
reg boton_b ;
reg boton_op ;
8
9
10
11
12
// Outputs
wire [ 7 : 0 ] rdo ;
wire carry ;
wire zero ;
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
initial begin
// Initialize Inputs
entrada = 7 ;
boton_a = 1 ;
#20
boton_a = 0 ;
entrada = 5 ;
boton_b = 1 ;
#20
boton_b = 0 ;
entrada = 8 ' b00100000 ; // ADD
boton_op = 1 ;
37
38
39
40
41
42
43
end
44
45
Variable
a
b
op
resultado
endmodule
Para las pruebas se fueron cambiando los valores de entrada, para cargar los registros con los valores que prueben mejor cada una de las operaciones.
ADD (binario 100000)
Variable
a
b
op
resultado
Valor
250
20
100000
14 + (carry)
Valor
250
20
100010
230
Variable
a
b
op
resultado
Valor
10101010
11110000
100100
10100000
OR (binario 100101)
Variable
a
b
op
resultado
Valor
10101010
11110000
100101
11111010
4
Valor
10101010
11110000
100110
01011010
Variable
a
b
op
resultado
Valor
10101010
11110000
100111
01011010
proxima
prueba se pone 0 como bit mas significativo de
Variable
a
b
op
resultado
Valor
10101010
11110000
000011
11000011
Variable
a
b
op
resultado
5
Valor
00000110
11110000
000011
00000011
cero logico
en vez de mantener el bit mas significativo.
Valor
10000110
11110000
000010
10100000