Está en la página 1de 12

1

PROYECTO 1
Unidad Aritmética Lógica de datos de 4 bits.
CIRCUITOS COMBINACIONALES

Tipo: Laboratorio
Dispositivo Programable: CPLD
CAD: ISEV12

OBJETIVO:
Diseñar y simular y construir una Unidad Aritmética Lógica (ALU) de 4 bits de 4 funciones. Utilizando un CPLD y programación
VHDL

DESCRIPCION
El ALU realizara las funciones de:
1. A + B
2. A-B
3. A and B
4. A xor B

1.- Los datos se dará por medio de dos dip switch de 4 bits

2.- Para la selección de la operación se utilizaran 4 Botones

3.- La salida se usara un Display de 7 segmentos y el modulo


VHDL de la practica 1.9 ( CONVERSOR DE BINARIO A 7 SEGMENTOS CON UN GAL).

PROCEDIMIENTO

1.- Defina un nuevo proyecto llamado ALU_4bits,


2

El archivo principal (TOP LEVEL) será en forma Esquemática.

2.- Defina el dispositivo CPLD a usar.

5.- Defina el archivo TOP-LEVEL del proyecto, para ello cree un nuevo archivo de tipo esquemático, llamado ALU_4bits,

Del lado derecho aparece el área de trabajo, para trabajar en forma esquemática.

6.- Posicione el cursos sobre el archivo ALU-4bits (TOP LEVEL) de click derecho y cree un nuevo archivo llamado suma 4 bit, en forma
de modulo VHDL
3

Del lado derecho aparece el área de trabajo, para trabajar en formato VHDL.

7.-Diseñe la suma empleando el código de la practica 1.11 (SUMADOR DE DOS DATOS DE 4 BITS )
8.- Pruebe la sintaxis del modulo de suma

6.- Pruebe el diseño con ISIM

7.- Convierta el archivo VHD de la suma en un módulos esquematico., seleccione “Create Schematic Symbol” o con la opción Tools >
Symbol Wisard
4

8.- Agregamos el modulo de la suma al archivo principal.

Abrimos el archivo ALU_4bit (TOP-LEVEL en Esquematico)

Seleccionamos el icono de “Add Symbol” , aparece un menú con la biblioteca de simbolos de ISE , seleccionamos la carpeta donde
esta nuestro proyecto, en la ventana de Symbol aparece el símbolo de la suma, la arrastramos al area de trabajo

8.- De igual forma creamos los módulos de la, RESTA, AND y XOR

9.- RESTA
Tome como referencia el código de la practica 1.11 (SUMADOR DE DOS DATOS DE 4 BITS CON UNA GALS. ) , cambie la entrada
B por el NEG B usando compuertas XOR
Dibuje el circuito y deduzca las funciones booleanas.
DATO A SUMADOR CODIFICADOR

A
C 1
2
3
I0/CLK
I1
IO0
IO1
23
22
21
1
2
3
I0/CLK
I1
IO0
IO1
23
22
21
I2 IO2 I2 IO2
4 20 4 20
I3 IO3 I3 IO3
5 19 5 19
I4 IO4 I4 IO4
6 18 6 18
I5 IO5 I5 IO5
7 17 7 17
I6 IO6 I6 IO6
8 16 8 16
1 I7 IO7 I7 IO7
9 15 9 15
3 I8 IO8 I8 IO8
10 14 10 14
2 I9 IO9 I9 IO9
11 11
DATO B 13
I10
13
I10
1 I11 I11

3
C 2
3
AM22V10 AM22V10

1
3
2

1
0 2
3

SUMA / RESTA

Pruebe el diseño, haga su modulo y agréguelo al proyecto principal.

10.- AND
Tome como referencia el siguiente código y modifíquelo para 4bits
5

Pruebe el diseño, haga su modulo y agréguelo al proyecto principal.

11.- XOR
Tome como referencia el código del modulo AND, modifíquelo para 4bits , pruebe el diseño, haga su modulo y agréguelo al proyecto
principal.

12 .- SELECTOR DE DATOS
Para el selector de los módulos utilice un multiplexor de 4 datos , tome como referencia la practica 1.6.- MULTIPLEXOR
Selector de 4 Datos de 4 bits
SW1 MULTIPLEXOR
DATO A F
C 1
2
I0/CLK
I1
IO0
IO1
23
22
SALIDA
THUMBSWITCH-HEX 3 21
I2 IO2
4 20
I3 IO3
5 19
SW2 6
I4 IO4
18
I5 IO5

F
7 17
DATO B C 8
9
I6
I7
I8
IO6
IO7
IO8
16
15
THUMBSWITCH-HEX 10 14
I9 IO9
11
I10
13
I11
SW3
AM22V10

DATO C F
C
THUMBSWITCH-HEX

SW4 S1 0
DATO D F
C
THUMBSWITCH-HEX S0 0

Pruebe el diseño, haga su modulo y agréguelo al proyecto principal.


6

13.- INTERCONEXION DE LOS MODULOS

Para conectar los modulos que forman el ALU , utilice el comando en ISE ADD WIRE

Para definir las entradas y salidas que conectaran a las terminales del cpld utilice el comando Add IO Marker

De forma automática se asigna el nombre genérico de XILINX_#### , a las etiquetas de entrada y salida , ### es un numero consecutivo.

Para asignar un nuevo nombre a la etiqueta, sobre de ella de Click derecho > Rename Port > Rename the Branch, en la ventana que
aparece cambie el nombre de Xilin_###, por el nuevo nombre en nuestro caso DATO A

14.- Cheque que no existan errores en el esquemático usando el comando Check Schematic

15.- Simule el diseño.


16 Asigne las terminales del CPLD a las variables usadas
16.- Genere el archivo .bi,
17 Programe el CPLD
18 Pruebe el diseño en el Laboratorio usando la Tarjeta CPLD.
7

Versión con HDL


Tome como referencia el siguiente código para realizar el alu ,
Comparar el número de recursos usados por el ALU cuando se fabrica en forma esquemática y en código HDL.

Ejemplo de Código HDL para el ALU  

-- ALU DE 4 BITS 
library IEEE; 
use IEEE.STD_LOGIC_1164.ALL; 
use IEEE.STD_LOGIC_UNSIGNED.ALL; 

entity ALU is 


Port ( A,B : in STD_LOGIC_VECTOR (4 downto 0); 
C : out STD_LOGIC_VECTOR (4 downto 0); 
OPERACION : in STD_LOGIC_VECTOR (2 downto 0)); 
end ALU; 

architecture Behavioral of ALU is 


begin 
PROCESS(OPERACION) 
BEGIN 
CASE OPERACION IS 
WHEN "000" => 
C <= A + B; 
WHEN "001" => 
C <= A - B; 
WHEN "010" => 
C <= A + 1; 
WHEN "011" => 
C <= B + 1; 
8
WHEN "100" => 
C <= A AND B; 
C(4) <= '0'; 
WHEN "101" => 
C <= A OR B; 
C(4) <= '0'; 
WHEN "110" => 
C <= A XOR B; 
C(4) <= '0'; 
WHEN OTHERS => 
C <= NOT (A OR B); 
C(4) <= '0'; 
END CASE; 
END PROCESS; 
end Behavioral; 
9

APENDICE A
DEFINICION DE BUSES en ISE
Usando la forma ESQUEMATICA

Utilizando la herramienta ADD WIRE Dibujamos dos líneas horizontales

Usando la herramienta ADD NET NAME en el campo NAME escribimos el nombre “Dato_4bits”

Del lado derecho aparece un cursor con este nombre, lo movemos y lo posicionamos en la primera línea

Repetimos el mismo comando pero ahora escribimos el nombre del bus que queremos definir lo nombramos “Dato_4bits(3:0)”

Movemos el cursor y lo posicionamos en la segunda línea


10

La segunda línea aparece más gruesa lo cual indica que se trata de un bus

Con la herramienta ADD IOMARKER asignamos etiquetas a los extremos

Para trabajar de manera individual con los con los bit del bus

Usamos la herramienta ADD BUS TAP, Trazamos dos línea verticales en el bus y agregamos salidas o entradas de bus usando
esta herramienta.

Al seleccionar BUS TAP Aparece una ventana en donde podemos cambiar la orientación .

Posicionamos el BUSTAP en el bus en el lugar donde queremos meter o sacar un bit.

Utilizando la herramienta ADD WIRE le agregamos una línea a cada “BUSTAP”


11

Al agregar la línea en los extremos aparece un pequeño cuadro de color rojo indicando que es una terminal.

Usando la herramienta ADD NET NAME en el campo NAME escribimos el nombre del bit del bus que nos interese.

Listo ya se pueden usar de manera individual los bits que forman el bus.

Si se requiere con la herramienta ADD IOMARKER les asignamos etiquetas para usarlos como entrada o salida
12

También podría gustarte