Académique Documents
Professionnel Documents
Culture Documents
RESUMEN
En el presente trabajo propone una alternativa del trabajo de los primeros laboratorios de la materia ETN-801 Microprocesadores de la Carrera de Ingeniera Electrnica de la U.M.S.A. Para esto se supone la utilizacin de las tarjetas de estudio DE2 de Altera y/o la Spartan3-AN de Xilinx, que utilizan el mismo lenguaje de descripcin VHDL. Se tomara como referencia el texto de la materia junto con las guas prcticas, para describir parte por parte cada elemento de la ALU de la misma manera en que se lo hace en los laboratorios 1 y 2, y se incluir los mdulos que por razones econmicas no se lo plasma en laboratorio prctico para realizar la Alu-Expandida.
1. INTRODUCCIN
El conocer ntimamente el computador nos brinda una mejor perspectiva y entendimiento de este. Por tal motivo se tiene que ensamblar en cada laboratorio de la materia Microprocesadores, cada elemento del computador; teniendo como resultado a finalizar el Quinto laboratorio un pequeo Computador Digital. En primera instancia se ensambla una Unidad Bsica de Clculo (UBC), que realiza operaciones bsicas de aritmtica binaria (suma, resta, incremento, decremento, complemento a 1 y 2). Luego diseamos una Simple ALU, que realiza 3 operaciones lgicas adems de las operaciones de la UBC, aadiendo banderas para observar algn caso particular. Hasta esta instancia pudimos plasmar los circuitos en laboratorio sin inconvenientes, el problema surge si queremos expandir nuestra ALU a una mas interesante con mas funcionalidad, mas mdulos (multiplicacin, suma BCD, desplazamiento de registros), o simplemente con el hecho de querer trabajar con mas bits de palabra para las seales de entrada. Lamentablemente por razones de tiempo y econmicas, se priva al estudiante poder apreciar una ALU ms completa y con mas funcionalidad, ya que el armar este tipo de circuitos es moroso y costoso. Una solucin prctica que presentamos en este trabajo, es la utilizacin de las tarjetas de estudio fpga, adquiridas por nuestra carrera, ya que estas utilizan para su programacin VHDL, que es un lenguaje de descripcin y modelado de circuitos.
Como se observa el sistema es para entradas X y Y de n-bits cada una, lamentablemente por cuestiones econmicas en laboratorio solo se disea un circuito para 4 bits, dicha limitacin no se observa cuando se lo disea en vhdl. 2.1 TABLA FUNCIONAL:
S4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 S3 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 S2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 S1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 S0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 C 0 0 0 1 0 1 1 1 0 0 1 1 0 1 0 1 R 0 1 -1 0 -1 0 -2 -1 Y Y+1 -Y-1 -Y Y-1 Y -Y-2 -Y-1 X X+1 X-1 X -X-1 -X -X-2 -X-1 X+Y X+Y+1 X-Y-1 X-Y -X+Y-1 Y-X -X-Y-2 -X-Y-1 Funcin Borrar salida Uno positivo Uno negativo Borrar salida Uno negativo Borrar salida Dos negativo Uno negativo Leer Y Incrementar Y Complemento a 1 de Y Complemento a 2 de Y Decrementar y Leer Y Funcin compleja Complemento a 1 de Y Leer X Incrementar X Decrementar X Leer X Complemento a 1 de X Complemento a 2 de X Funcin compleja Complemento a 1 de X Sumar Funcin compleja Funcin compleja Restar Y de X Funcin compleja Restar X de Y Funcin compleja Funcin compleja
ETN-801 Microprocesadores Unidad Aritmtica Lgica Expandida 2.2 DESCRIPCIN EN VHDL: Como se observa posteriormente la metodologa que se emplea es la misma que el texto gua de la materia, para poder definir nuestra UBC de n-bits primero debemos de describir nuestra full-adder tambin de n-bits:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity sumador_n is generic (n: integer:=4);--Define numero de bits port( A,B:in std_logic_vector(n-1 downto 0); Ci:in STD_LOGIC; S:out std_logic_vector(n-1 downto 0); Co:out std_logic ); end sumador_n; architecture rtl of sumador_n is signal suma:std_logic_vector(n downto 0); begin suma<= ('0' & A) + B + Ci; S <= suma (n-1 downto 0); Co <=suma(n); end rtl;
* * * *
* *
ETN-801 Microprocesadores Unidad Aritmtica Lgica Expandida En la figura se aprecia los archivos utilizados para la compilacin por software, de nuestro circuito ALU SIMPLE CON BANDERAS (alu_f) descrito hasta esta instancia. Podemos apreciar que utilizamos mdulos como: ROM, detector de paridad, detector de exceso, detector de cero, Multiplexor 4 a 1 (no presentados por su sencillez), y la UBC que contiene el modulo full adder; todos estos descritos externamente pero utilizados para las pruebas de nuestra alu_f. Esta manera de describir es para el depurado parte a parte de cada uno de los mdulos. Con esto cubrimos el avance de los laboratorios 1 y 2 de la materia etn-801, mas no as el avance terico, ya que, se estudia una ALU con muchas ms prestaciones, que como dijimos antes no abordamos en laboratorio, por razones economas y de tiempo. A continuacin se da paso a describir en VHDL nuestra alu-expandida, a manera de prueba terica en un laboratorio de simulacin en tarjeta de desarrollo fpga.
4. ALU EXPANDIDA
Ya con bases firmes en descripcin de una ALU simple con banderas procederemos a cumplir el objetivo de este trabajo, describir una ALU-EXPANDIDA con banderas, que como repetimos una vez masa no se realiza en laboratorio por el coste y tiempo de preparacin.
De ah que podemos apreciar que a nuestra ALU-Simple le faltan los mdulos de multiplicacin, suma BCD, barrel shifter 1 y 2 para poder expandirla. Ademas se observa a la izquierda que se aadieron 2 banderas mas a nuestro modulo final, H y D que son Semi-acarreo y acarreo de suma BCD respectivamente.
ETN-801 Microprocesadores Unidad Aritmtica Lgica Expandida 4.1 TABLA FUNCIONAL: Nuestra Alu-expandida obedece la siguiente tabla funcional.
C Op. 0 1 2 3 4 5 6 7 8 9 A B C D E S7 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 S6 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 S5 1 1 1 1 1 0 1 0 1 1 1 1 0 1 0 S4 0 1 0 1 1 0 0 0 1 1 1 1 0 1 1 S3 0 0 1 0 0 0 0 0 1 1 0 0 0 1 1 S2 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 S1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 S0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 C 0 0 0 1 0 1 1 1 0 0 R 0 X Y -X -X-1 X and Y X or Y X xor Y X+Y X-Y X+1 X-1 X*Y BCD(A+B) Desplazamiento1 Funcin Borrar salida Leer X Leer y Invertir Negar X and Y X or Y X xor Y Sumar Restar Y de X Incrementar X Decrementar X Multiplicar X con Y Suma BCD Desplaza y rota una posicin a la vez la entrada X Desplaza una o mas posiciones la entrada X
Desplazamiento2
A continuacin explicaremos las funciones que se incrementaron: o o PROD.- multiplica los 4 bits menos significativos de las entradas A y B. SBCD.- suma bcd de 2 numeros BCD de 2 digitos cada uno, con la respectiva correccion. Este modulo ocasiona un Desborde que se lo presenta en la bandera D.
ETN-801 Microprocesadores Unidad Aritmtica Lgica Expandida o TD1.- tambor de desplazamiento 1, que rota los datos a la derecha posion a posicin. Este tambor es controlado por 3 bits (s10, s9 y s8). Segn la siguiente secuencia:
S10 S9 S8
C C A7 A6 A5 A4 A3 A2 A1
A7
A6
A5
A4
A3
A2
A1
A0
0 0 0 0 1 1 1 1 o
0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1
A7 A6 A5 A4 A3 A2 A1 A0
A6 A5 A4 A3 A2 A1 A0 C
A5 A4 A3 A2 A1 A0 C A7
A4 A3 A2 A1 A0 C A7 A6
A3 A2 A1 A0 C A7 A6 A5
A2 A1 A0 C A7 A6 A5 A4
A1 A0 C A7 A6 A5 A4 A3
A0 C A7 A6 A5 A4 A3 A2
TD2.- tambor de desplazamiento 2, que desplaza los datos a la derecha posion a posicin. Este tambor es controlado por 3 bits (s13, s12 y 11). Segn la siguiente secuencia:
S13 S12 S11
C C A7 A6 A5 A4 A3 A2 A1
A7
A6
A5
A4
A3
A2
A1
A0
0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1
A7 A6 A5 A4 A3 A2 A1 A0
A6 A5 A4 A3 A2 A1 A0 0
A5 A4 A3 A2 A1 A0 0 0
A4 A3 A2 A1 A0 0 0 0
A3 A2 A1 A0 0 0 0 0
A2 A1 A0 0 0 0 0 0
A1 A0 0 0 0 0 0 0
A0 0 0 0 0 0 0 0
4.2 DESCRIPCIN EN VHDL: Describiremos a continuacin nuestra alu-expandida con banderas, en un nico modulo vhdl esto quiere decir que no utilizaremos modo estructural (componentes externos), para asi poder apreciar la metodologa de diseo.
1 2 3 4 5 6 7 ---------------------------------------------ALU (Unidad Aritmetica Logica) -Alu_exp: alu expandida -tiene los modulos: AND,OR,XOR,UBC,MULTIPLICACION, -SUMA BCD,TAMBOR DE DESPLAZAMIENTO 1 Y 2. -EN UN UNICO ARCHIVO VHD SIN DESCRIPCION ESTRUCTURAL -Autor: Americo Alvarez S.
10
--Entradas --Variable de seleccion de operacion --Pulsador para los TD1 y td2. --Banderas --Salida
architecture rtl of alu_exp is type vector_array is array (0 to 15) of std_logic_vector (7 downto 0); constant memoria:vector_array:=( "01100000", -- 0 "01110000", -- 1 "01101000", -- 2 "01110101", -- 3 "01110100", -- 4 "00000000", -- 5 "00100000", -- 6 "01000000", -- 7 "01111000", -- 8 "01111011", -- 9 "01110001", -- A "01110010", -- B "10000000", -- C "10111000", -- D "11011000", -- E "11111000"); -- F signal Sx,Sy,SA,SB,UBC_R,MUX_R,BCD_R,out_rom:std_logic_vector(7 downto 0); signal op2_x,op2_y,op2_sx,op2_sy,producto:std_logic_vector(7 downto 0); signal td1_r,td2_r,suma:std_logic_vector(8 downto 0); signal bcd1,bcd2,semisuma1,semisuma2:std_logic_vector(4 downto 0); signal v1,v2,v3,v4,SR,K1,K2,s_C,reset1,reset2:std_logic; signal contador1,contador2,contador:integer; Begin out_rom <= memoria(to_integer(unsigned(ctl))); ------------------------- UBC -----------------------------op2_x<= (others=>out_rom(4)); op2_y<= (others=>out_rom(3)); op2_sx<=(others=>out_rom(2)); op2_sy<=(others=>out_rom(1)); Sx Sy SA SB <= <= <= <= A and op2_x; B and op2_y; Sx xor op2_sx; Sy xor op2_sy;
11
12
13
5. RESULTADOS
Analizando resultados de simulacin, se pudo comprobar que nuestro mximo retardo se lo obtiene del modulo de multiplicacin que est entre el rango de: 14ns a 16ns.
As que el tiempo de respuesta mximo de nuestra ALU EXPANDIDA es de 20 ns. Si consideramos el error y la implementacin en la CICLONE II:EP2C35F672C6, pudimos apreciar todas las operaciones y comprobarlas. Como comentario el tiempo mximo de respuesta de la UBC es de 13ns.
6. CONCLUSIONES y MEJORAS
o 16 operaciones aritmticas-lgicas, implementadas y verificadas. Adems de 7 banderas que nos dan referencia de resultado y entrada. Las variables de control S13 a la s8, que controlan el TD1 y el TD2, se las utilizo mediante un pulso de control Ctl2 que realiza el conteo para poder apreciar la rotacin o desplazamiento bit a bit con tan solo presionar esta variable de control aadida. Algunas banderas nos dan informacin importante pero que debemos de seleccionar cual nos sirve y cual no, para este aspecto se deber de realizar un control de paso y de temporizacin, similar al que se realiza en el laboratorio No.3 en alu con temporizacin. Se pudo verificar, la existencia de errores en el texto gua. Datos que se transmitieron al docente de materia. Se propone cambiar el modulo Tambor de desplazamiento 1 TD1, por alguna otra operacin como se logaritmo, exponencial o divisin.
REFERENCIAS
Texto gua ETN-801 microprocesadores - Ing. Marcelo Ramirez
Guias de laboratorio 1 y 2 ETN-801 Ejemplos Practicos VHDL Digital Logic And Microprocessor Design With VHDL