Escolar Documentos
Profissional Documentos
Cultura Documentos
CHRISTIAN CAMILO CORONADO FERIA 20061020013 OMAR ORLANDO AMAYA 20061020001 Grupo 1
UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS FACULTAD DE INGENIERIA PROYECTO CURRICULAR DE INGENIERIA DE SISTEMAS Bogota Mayo de 2009
El problema que presentamos es el de poder hacer una comparacin entre dos nmeros binarios y mostrar en salida si el un numero es mayor, menor o igual al otro. Para esto planteamos la solucin mediante el simulador de circuitos modelsim, en el cual el problema se desarrollo de la siguiente manera: Lo primero que necesitamos son dos entradas, que serian los dos nmeros a comparar, los cuales se plantearan como vectores de x bits (para el ejemplo propuesto lo planteamos para dos nmeros de 8bits, pero modificarlo para nmeros de mas o menos bits es relativamente sencillo); tambin necesitaremos tres salidas que representaran el mayor que, menor que y el igual que: Estas entradas y salidas las declaramos dentro de una entidad ( ENTITY) que hemos llamado Comparador3b, para que esta funcione correctamente debemos utilizar las libreras adecuadas:
En la primera parte del cdigo llamamos las libreras que vamos a utilizar, en este caso solo se utilizara la IEEE.
En este ejemplo, svE1 y svE2 son los dos nmeros a comparar, cabe PORT ( destacar que el programa compra el svE1 contra el svE2 en un solo sentido; estos como se muestra son svE1, svE2: IN std_logic_vector (7 DOWNTO 0); ventores de 8Bits ( 7 DOWNTO 0). sIgual, smMyor y sMenor son las tres sIgual, sMayor, sMenor: OUT std_logic); salidas para identificar la comparacin. END Comparador3b;
Para el diseo de la arquitectura ( ARCHITECTURE) se tomaron en cuenta los tres casos posibles que pueden resultar de la comparacin, mayor, menor, igual, y se efecto la comparacin directa por medio de los operadores correspondientes ( >, <, = ) donde las salidas se manejan mediante sentencias if else:
ARCHITECTURE Comparador3bArch OF Comparador3b IS BEGIN Compara:PROCESS(svE1, svE2) BEGIN IF (svE1 = svE2) THEN sIgual <= '1'; ELSE sIgual <= '0'; END IF; IF (svE1 > svE2) THEN sMayor <= '1'; ELSE sMayor <= '0'; END IF; IF (svE1 < svE2) THEN sMenor <= '1'; ELSE sMenor <= '0'; END IF; END PROCESS Compara; END Comparador3bArch; De nuevo en el ejemplo propuesto la arquitectura algo simple ya que el programa como tan realiza la comparacin de los nmeros de 8 bits completos y no toca programar una comparacin bit a bit, el cdigo de la comparacin esta entre un PROCESS que toma como parmetros las entradas del sistema y as cada ves que una de estas cambie entonces la comparacin se vuelva a efectuar automticamente. Los IF ELSE son sensillos al solo manejar en que momento se enciende una o la otra salida dependiendo del resultado de la comparacin.
Realizando la simulacin del problema y dndole valores a cada entrada que varen en el tiempo, esto a cada bit de los nmeros a comparar, se logra una simulacin que tome casi todas las combinaciones posibles de nmeros y la salida adecuada en cada situacin: