innforme practica vhdl alu

13
PRACTICA NO. 1 DISEÑO DE CIRCUITOS ARITMÉTICOS Y SECUENCIALES Maried Natalia Meneses pino Email: [email protected] KatherinJhoanna Escobar Nieves Email: [email protected] RESUMEN: En esta primera práctica de circuitos digitales se desea aplicar todos los conocimientos aprendidos en clase en el diseño de circuitos aritméticos y secuenciales. Este laboratorio se divide en dos puntos, el primero consiste en el diseño de un contador de 3 dígitos BCD, cuyo contenido se mostrará en los despliegues de 7 segmentos en la tarjeta Altera DE0; En la segunda parte, se realiza un modelo en VHDL para una unidad aritmético-lógica de 16 bits. PALABRAS CLAVES: Contador, BCD, ALU, hexadecimal, operaciones, DE0. ABSTRACT: In this first Digital Circuits Practice, it’s desired to implement all the acquired knowledge in classes, about the designing of arithmetic, and sequential circuits. This laboratory is divided in two parts, the first is about the design of a 3 BCD digits counter, whose content will be shown in the Altera DE0 7-segment displays ; In the second part a VHDL model is design for an arithmetic logic unit KEY WORDS :Counter, BCD, ALU, hexadecimal, operations, DE0. 1. INTRODUCCIÓN. Por medio de este informe se explicará el procedimiento necesario para diseñar e implementar un contador de 3 dígitos BCD y una unidad aritmético – lógica (ALU) de 16 bits. Para cumplir a cabalidad con los requerimientos se elaboraron códigos en VHDL, se realizaron sus respectivas simulaciones en la herramienta ModelSim y finalmente se crearon bloques funcionales que se explicaran durante el desarrollo del presente informe. 2. PROCEDIMIENTOS DE DISEÑO. 2.1 contador 3 Dígitos BCD. El requerimiento para este ítem es el siguiente: Implementar un contador de 3 dígitos BCD. Mostrar el contenido del contador en los despliegues de 7 segmentos HEX2-0. Utilizar una señal de control, del reloj de 50 MHz sobre la tarjeta DE0 de Altera, para incrementar el contenido del contador a intervalos de 1 segundo. Use un pulsador para resetear el contador a 0. Nuestro circuito para cumplir con el requerimiento planteado quedo de la siguiente manera: Figura 1. Circuito Total contador 3 dígitos BCD. El cual cuenta con dos entradas: CLK RESET. Clk es la señal de reloj que nos proporciona la tarjeta Altera DE0 la cual es de 500Mhz y reset va a ser una señal de control la cual intervendrá en el funcionamiento del contador de 3 dígitos BCD. Cuando esta se encuentre en estado activo, reiniciara el contador llevándolo a su estado inicial

Upload: nataliameneses8

Post on 26-Dec-2015

102 views

Category:

Documents


2 download

DESCRIPTION

ALU 16 BITS

TRANSCRIPT

Page 1: Innforme Practica VHDL ALU

PRACTICA NO. 1 DISEÑO DE CIRCUITOS ARITMÉTICOS Y SECUENCIALES

Maried Natalia Meneses pino Email: [email protected]

KatherinJhoanna Escobar Nieves Email: [email protected]

RESUMEN: En esta primera práctica de circuitos digitales se desea aplicar todos los conocimientos aprendidos en clase en el diseño de circuitos aritméticos y secuenciales. Este laboratorio se divide en dos puntos, el primero consiste en el diseño de un contador de 3 dígitos BCD, cuyo contenido se mostrará en los despliegues de 7 segmentos en la tarjeta Altera DE0; En la segunda parte, se realiza un modelo en VHDL para una unidad aritmético-lógica de 16 bits. PALABRAS CLAVES: Contador, BCD, ALU, hexadecimal, operaciones, DE0. ABSTRACT: In this first Digital Circuits Practice, it’s desired to implement all the acquired knowledge in classes, about the designing of arithmetic, and sequential circuits. This laboratory is divided in two parts, the first is about the design of a 3 BCD digits counter, whose content will be shown in the Altera DE0 7-segment displays ; In the second part a VHDL model is design for an arithmetic logic unit

KEY WORDS :Counter, BCD, ALU, hexadecimal, operations, DE0.

1. INTRODUCCIÓN. Por medio de este informe se explicará el procedimiento necesario para diseñar e implementar un contador de 3 dígitos BCD y una unidad aritmético – lógica (ALU) de 16 bits. Para cumplir a cabalidad con los requerimientos se elaboraron códigos en VHDL, se realizaron sus respectivas simulaciones en la herramienta ModelSim y finalmente se crearon bloques funcionales que se explicaran durante el desarrollo del presente informe.

2. PROCEDIMIENTOS DE DISEÑO. 2.1 contador 3 Dígitos BCD.

El requerimiento para este ítem es el siguiente:

Implementar un contador de 3 dígitos BCD. Mostrar el contenido del contador en los despliegues de 7 segmentos HEX2-0. Utilizar una señal de control, del reloj de 50 MHz sobre la tarjeta DE0 de Altera, para incrementar el contenido del contador a intervalos de 1 segundo. Use un pulsador para resetear el contador a 0.

Nuestro circuito para cumplir con el requerimiento planteado quedo de la siguiente manera:

Figura 1. Circuito Total contador 3 dígitos BCD.

El cual cuenta con dos entradas: CLK RESET.

Clk es la señal de reloj que nos proporciona la tarjeta Altera DE0 la cual es de 500Mhz y reset va a ser una señal de control la cual intervendrá en el funcionamiento del contador de 3 dígitos BCD. Cuando esta se encuentre en estado activo, reiniciara el contador llevándolo a su estado inicial

Page 2: Innforme Practica VHDL ALU

el cual es cero “0000” e iniciando nuevamente el conteo.

Este tiene 3 salidas S2, S1, S0 donde S2 corresponde al digito más significativo del contador de 3 bits BCD y S0 el menos significativo del mismo.

Este circuito está compuesto por un divisor de frecuencia ( clk_div), contador de 3 dígitos BCD y 3 decodificadores, los cuales se explicaran a continuación .

2.1.1. DIVISOR DE FRECUENCIA

Fue necesaria la utilización de un circuito divisor de frecuencia, puesto que se nos pedía que el contenido del contador aumentara a intervalos de 1 segundo y como se sabe la señal de reloj que maneja la tarjeta Altera DE0 es de 50 Mhz, motivo por el cual se tuvo que hacer modificaciones sobre esta para el buen funcionamiento del circuito.

Se tomó un circuito divisor de frecuencia diseñado por el docente, el cual nos permitía operar a cualquiera de las siguientes frecuencias:

-1 Mhz. -100 Khz. -10 Khz. -1 Khz. -100 hz. -10hz. -1 hz. Como se deseaba trabajar a 1 frecuencia de 1 hz para obtener un periodo de un segundo, lo que se hizo fue conectar la señal de reloj de nuestro circuito contador de 3 dígitos BCD a la salida deseada del circuito divisor de frecuencia. El RTL de este circuito y su respectivo bloque funcional se logran ver en las siguientes imágenes:

Figura 2. RTL circuito divisor de frecuencia. Como puede observarse en el circuito esquemático, este divisor cuenta con 1 sola entrada (clock_50Mhz) la cual obedece a la señal de reloj transmitida por la tarjeta Altera DE0 y 7 salidas que corresponden a cada una de las frecuencia a las que se puede convertir dicha señal .

Figura 3. Bloque funcional divisor de frecuencia

2.1.2 CONTADOR 3 DIGITOS BCD Para la solución de esta primera parte de la práctica, se tomó como base el diseño del contador BCD de 1 digito realizado en clase con las orientaciones del docente, el cual realizaba un conteo de 0 a 9. Para este caso, se necesita un contador que vaya de 0 hasta 999 en numeración decimal. Para realizar este diseño se realizaron 3 contadores BCD en cascada el cual funciona de la siguiente manera: -DÍGITO MENOS SIGNIFICATIVO: Va incrementar de 1 en 1 desde “0000”, en el momento que sea igual a “1001” (9) este regresará a 0. -2 DÍGITOMÁS SIGNIFICATIVO: Este incrementara su valor cada que el digito menos significativo complete un ciclo, este cambiara desde a cero “0000” hasta “1001” como corresponde en numeración BCD. - DÍGITO MÁS SIGNIFICATIVO: El funcionamiento de este contador, depende del segundo contador; Su valor va a cambiar de 1 en 1 desde “0000” hasta “1001”, cuando el segundo contador BCD compete su ciclo. En el momento que este tomé el valor de (9) “1001” regresara automáticamente a “0000” para volver a iniciar la

Page 3: Innforme Practica VHDL ALU

cuenta. Es de resaltar que el momento en que dicho contador tome su ultimo valor posible, en los display se 7 segmentos se mostrara el valor “999” que corresponde el número máximo al que puede llegar nuestro contador total. Ya habiendo explicado, el procedimiento pensado para el diseño de nuestro contador de 3 dígitos BCD , se mostrará posteriormente su diseño en VDL :

Figura 4. VHDL contador 3 dígitos BCD. Como logra observarse en el código, este contador de 3 dígitos BCD, cuenta con dos (2) entradas, los cuales son RESET y CLK ; Y 3 salidas Q,R y S que representan cada uno de los dígitos de nuestro contador .Siendo S el digito más significativo y Q el menos significativo. Después de compilar dicho código en Quartus II y no obtener ningún error, se procede a visualizar el RTL de nuestro circuito el cual quedo de la siguiente manera: Figura 5. RTL contador de 3 dígitos BCD. Ahora, para corroborar el buen funcionamiento del mismo, se procede a su respectiva simulación usando el programa ModelSim. El resultado de dicha simulación se muestra en la figura No. 6a y 6b En lasfiguras: - La primera línea o fila corresponde a la entrada Clk, la cual es la señal de reloj de frecuencia 1 hz que nos proporcional el circuito divisor de frecuencias. -La segunda fila corresponde a la entradareset la cual en el estado 1 permite el funcionamiento del contador, y en el estado 0 lógico reinicia la cuenta del mismo. -La tercera fila, Es la salida Q el cual representa al digito menos significativo de nuestro contador. -La cuarta y quinta línea corresponden respetivamente a las salidas R y S . Siendo S digito más significativo. Tal como como se había nombrado anteriormente, se logra observar en la figura 4.a que en el momento. En el que se obtiene el numero 999 ( 1001 1001 1001) en contador vuelve a su estado inicial, comenzando la cuenta nuevamente desde 0 (0000).

Page 4: Innforme Practica VHDL ALU

Figura 6 a. Simulación contador 3 dígitos BCD.

Figura 6.b Simulación contador 3 dígitos BCD.

En la simulación logra observarse también, que el contador hace 1 variación de 1 en 1 en numeración BCD, además de evidenciarse que en el momento que el digito menos significativo llega a 9 este inicia nuevamente su cuenta y activa en conteo en el segundo digito más significativo, y este a su vez a llegar al mismo número provoca un aumento en el conteo de S. En la figura 4.b. en el momento que la entrada RESET se encuentra inactiva, el contador detiene su cuenta y regresa a su estado inicial “0000”, para empezar nuevamente la cuenta. Finalmente el bloque funcional , para el contador de 3 dígitos BCD se muestra posteriormente, señalando las 2 entradas de este sistema reset y clk y cada una de las salidas S,Q,R las cuales serán mostradas luego en los display 7 segmentos:

Figura 7.Bloque funcional contador 3 dígitos BCD 2.1.3 DECODIFICADOR DE BCD A 7 SEGMENTOS. Como se pide mostrar el contenido del contador en los despliegues de 7 segmentos HEX2-0, fue necesario usar 3 bloques decodificadores de BCD a 7 segmentos con el fin de mostrar las salidas S, Q, R en la tarjeta Altera DE2. Se usó el decodificador diseñado en clase, con las debidas instrucciones del docente . Su bloque funcional se presenta a continuación: MKSKSKSKSKSKSKS

Page 5: Innforme Practica VHDL ALU

Figura 8. Bloque funcional conversor a 7 segmentos En el RTL del mimo se puede observar que el decodificador de BCD a 7 segmentos cuenta con una entrada de 4 bits que corresponden a cualquiera de los números que puede tomar cada bit del contador, es decir aquellos que están entre “0000” y “1001” y una salida de 7 bits que corresponden a cada uno de los segmentos que componen un display . Figura 9.RTL circuito conversor a 7 segmentos.

2.2 Unidad Aritmético – Lógica (ALU) de 16 bits. El requerimiento para la ALU se describe a continuación: Realice un modelo en VHDL para una unidad aritmético lógica (ALU) de 16 bits. Verifique la operación correcta con una simulación. A y B son entradas de 16 bits a la ALU, e Y es la salida. Una operación de desplazamiento y rotación sigue a las operaciones aritméticas y lógicas. El opcode controla las funciones de la ALU de la siguiente:

Figura 10 . Tabla Unidad Aritmético Lógica.

El circuito final de nuestra ALU consta 4 entradas: reset , clk (señal de reloj), “Numero” que permite ingresar al sistema el número A y B, una entrada “En” que funciona como una línea de selección de un mux. Además, está compuesto por 9 bloques funcionales, estos son: 1 sistema para el ingreso de los números a operar denominado IngresoNum ; 1 bloque Generador que controla posteriormente el opcodede la ALU; 1 multiplexor de 4 a 1 el cual controla lo que se va a observar en el display de 7 segmentos; 4 bloques deco_7segmentos conectados a la salida del multiplexor y un divisor de frecuencia que permitirá visualizar los resultados a una frecuencia de 1Hz. El circuito total es el siguiente:

Figura 11 . Circuito final ALU 16 bits.

Page 6: Innforme Practica VHDL ALU

2.2.1 DIVISOR DE FRECUENCIA El divisor de frecuencia utilizado para el diseño de nuestra ALU de 16 bits es el mismo que se explicó en el numeral 2.1.1 del presente informe. 2.2.2 INGRESO DE NÚMEROS (IngresoNum) Este bloque funcional es básicamente un sistema que nos permite ingresar los números A y B con los que se van a realizar las diferentes operaciones lógicas y aritméticas. Para el ingreso de los números se utilizó una entrada denominada Numero de 10 bits, la cual corresponde a los 10 switches de la tarjeta Altera DE0 y dos salidas A y B que son los números que posteriormente serán operados en la ALU. Ya que la FPGA solo cuenta con 10 switches, fue necesario crear unas señales en el VHDL que tiene como función:

• numAB : Para ingresar el número deseado, en la tarjeta corresponde a los switches del [8...0].

• S1: Utilizada para seleccionar cual de los números se va a ingresar. Si el interruptor S1=0 se guardará el número A, cuando S1=1 el número a ingresar es el B. Esta entrada corresponde al interruptor más significativo [10].

• S2: Esta entrada tiene la función de determinar si se ingresaran los 8 bits más o menos significativos de cada número. Cuando S2=1 se ingresaran al sistema los primeros 8 bits más significativos, de lo contrario, S2=0 se guardaran los 8 bits menos significativos. Como ya se dijo el número que se esté ingresando depende de exclusivamente de S1.

Una vez se realiza el proceso de ingreso de números, se concatenan a la salida los 8 bits más significativos con los 8 menos significativos para formar los números A y B. El código del sistema de ingreso de los números en VHDL se muestra en la siguiente imagen:

Figura 12 .VHDL Ingreso Números.

Una vez diseñado el VHDL se procede a compilar con el fin de verificar que no haya errores en el código lo que nos permite realizar posteriormente crear el bloque funcional del circuito tal y como se muestra en la siguiente imagen:

Figura 13 . Bloque funcional circuito de Ingreso de Números.

Page 7: Innforme Practica VHDL ALU

2.2.3 UNIDAD ARITMETICO-LOGICA 16 BITS Nuestra Unidad aritmético- lógica va a realizar 11 operaciones la cuales van a depender de la señal enviada por el opcode , tal como se mostró en la figura No. 8. Esta cuenta con 3 entradas, A y B que corresponden a los dos números de 16 bits que se van a manejar y OPCODE que es una señal de control de 5 bits la cual va a indicar la operación a realizarse con los números A y B, siendo estas funciones lógicas, aritméticas, de rotación o transferencia. Además se cuenta con una salida Y , de 16 bits la cual es la respuesta de la acción realizada dentro de la ALU y una salida adicional Cout que va a señalar si existe o no acarreo en la operación realizada.

Figura 14. VHDL ALU 16 bits En la figura se observa que esta ALU realiza las siguientes operaciones lógicas: -Transferencia de A: En la salida se obtiene el mismo valor de la entrada A. -Transferencia de B: Y será equivalente al segundo valor ingresado a la unidad aritmético-logica. -A or B: Realiza una adición lógica entre los números A y B. -A and B: Realiza la función booleana de producto lógico entre los números A y B. -Transferencia ALU_OUT: En la salida se mantiene el valor de salida anterior obtenido. Operaciones aritméticas: - A + B : Realiza una suma aritmética entre las cantidades seleccionadas como A y B. - A + 1: A la entrada A se suma aritméticamente un 1. - A - 1: Al valor seleccionado como A se le sustrae aritméticamente un 1. - A - B Se realiza una sustracción aritmética, a A se le resta B. Operaciones de desplazamiento: - Rotación a la izquierda: El segundo bit más significativo toma la posición del más significativo, y este a su vez toma lo posición del bit menos significativo. Cada bit toma la posición del su bit antecesor en forma ascendente. -Desplazamiento hacia la derecha: Cada bit toma del valor delbit ubicado a su derecha, es decir estos pierden un bit de significancia. Al ser un desplazamiento, es de mencionarse que el bit

menos significativo se pierde, y en la posición del bit más significativo se agrega un cero.

Page 8: Innforme Practica VHDL ALU

Ya habiendo explicado el contenido del VHDL realizado en Quartus II para nuestra ALU, de 16 bits, se procedió a su respetiva compilación y posteriormente la visualización de su RTL es cual se puede observar en la figura 14

Figura 15. RTL ALU 16 bits. En este se logran observar en la parte superior izquierda las entradas A y B cada uno de 16 bits, en la parte inferior la entrada opcode de 5 bits que actúa como línea de selección de cada uno de los 32 multiplexores presente en el circuito, controlando la operación realizada en un instante dado. Ahora, para estar seguros del correcto funcionamiento de la unidad lógico-aritmética de 16 bits se procedió a realizar su simulación en ModelSim.

Figura 16. Simulación 1 ALU16 bitsOpcode 000XX En esta imagen se logra observar, que para un: Numero A =FFF1= 1111 1111 1111 0001 Numero B=1FFF = 0001 1111 1111 1111 Y opcode= • 00000 →Y= FFF1

Dicho resultado corresponde a la transferencia de A, por lo tanto es verídico este resultado.

• 00001→ Y= FFE3 En ALU _OUT se obtiene como resultado el Numero A al ser los tres primeros bits más significativos “000” , pero al ser los 2 bits menos significativos “01” la operación a realizarse es una rotación ala izquierda de dicho número , por ende el bit más significativo ocupa el lugar del ultimo , y todos los demás bits ocupan la posición del bit mayor a ellos en significancia, como se muestra a continuación: Y = ←A Y = ←1111 1111 1111 0001 Y = 1111 1111 1111 0011 Y = FFF3

• 00010 → Y= 7FF8 En ALU _OUT se obtiene como resultado el Numero A al ser los tres primeros bits más significativos “000”, pero al ser los 2 bits menos significativos “10” la operación a realizarse es un desplazamiento a la derecha el cual consiste en que cada uno de los bits tome la posición del bit inmediatamente anterior a él en orden de significancia, el ultimo bit se pierde y en la posición del bit más significativo se asigna un cero, tal cual como se logra ver en el resultado Y Y =→A. Y=→1111 1111 1111 0001 Y= 0111 1111 1111 1000 Y= 7FF8

Page 9: Innforme Practica VHDL ALU

• 00011→ Y=0000 Al ser los dos bits menos significativos “11” la operación a realizar es una transferencia de ceros, por lo cual a nuestra salida obtenemos el número 0 de 16 bits.

Figura 16. Simulación 2 ALU 16 bits Opcode001XX OPCODE : 001XX = Transferencia de B =ALU_OUT • 00100→ Y=1FFF

En esta caso los dos últimos bits de Opcode nos indican que la operación a realizar es la transferencia de ALU_OUT, y al ser esta transferencia de B , lo que hace nuestra Unidad lógica-aritmética es arrojar el mismo número que se está ingresando como B , el cual es 1FFF.

• 00101 → Y=3FFE Los dos últimos bits de opcode señalan que la operación a realizar que debo rotar a B hacia la izquierda por lo cual: Y = ←B Y = ←0001 1111 1111 1111 Y = 0011 1111 1111 1110 Y = 3 F F E

• 00110 → Y=OFFF En este caso se pide que el número B cumpla con la función de desplazamiento hacia la derecha, por lo cual a nuestra salida se tendría:

Y = →B Y = →0001 1111 1111 1111 Y = 0000 1111 1111 1111 Y = OFFF Como puede observarse se agregó un cero en la casilla del bit más significativo, y los demás bits se desplazaron hacia la derecha perdiéndose únicamente el último de ellos.

• 00111 → Este opcode indica que se debe

realizar una transferencia de ceros, por lo cual es nuestra simulación observamos como salida 1 cero el numeración hexadecimal.

Ahora, con este mismo proceso de análisis, se verifica que los valores encontrados en la simulación, sean correspondientes a los resultados que establecen la operación de los números. Se hace la prueba resultado a resultado con el fin de descartar errores en el diseño de nuestra ALU. Como en las operaciones mostradas hasta el momento, no se ha mostrado como es el funcionamiento de la salida Cout, es decir del bit de acarreo, se pasará inmediatamente al análisis de la simulación obtenida para el caso en el que los 3 bits más significativos del opcode son 100 que corresponde a la suma aritmética entre A y B, la cual al ser los números ingresados a la ALU lo suficientemente grandes generan acarreo en el resultado de operación.

Figura 17. Simulación 2 ALU 16 bits

Opcode100XX

Para A+B, el opcode es 100XX. Valores que se pueden ver en la imagen anterior.

OPCODE: • 10000→ Y= 1FF0 Este primer código, lo que hace es transferir el resultado que se obtuvo de la operación A+B, donde: A+B = FFF1 + 1FFF A+B = 1111 1111 1111 0001 + 0001 1111 1111 1111 A+ B=1 0001 1111 1111 0000 A+B =1 1FF0

Page 10: Innforme Practica VHDL ALU

Como puede observarse se obtiene como resultado de la operación un numero de 17 bits, como se estaban operando dos cantidades de 16 bits , se asigna una respuesta de 16 bits y se adiciona una salida adicional que indicara si se presenta o no acarreo en la operación.

• 10001→ Y= 1 3FE0 Este opcode esta definido como la rotación a la izquierda del resultado de la operación aritmética A+B. Y = ←A+B Y= ←1 0001 1111 1111 0000 Y= 1 0011 1111 1110 0000 Y= 1 3FE0 Como puede observarse la operación obtenida teóricamente corresponde al valor entregado por el simulador Model-Sim. El programa esta diseñado de tal manera que el bit de acarreo sea el bit más significativo aun si este se modifica mediante una rotación. Ahora, ya habiendo comprobado el buen funcionamiento de Unidad Lógica- Aritmética mediante la simulación, se pasa a crear el bloque funcional de esta, quedando de la siguiente forma.

Figura 18. Bloque funcional ALU.

Donde se logra ver que esta cuenta con 3 entradas : A,B y opcode y 2 salidas : Y que me almacena el resultado de la operación hecha y Cout que a indicar s existe acarreo o no, al hacer la operación.

2.2.4 GENERADOR

El generador es un circuito que corresponde a un contador de 5 bits, su función principal es controlar el opcodede la ALU, es decir, seleccionar la operación o función que va a realizar la unidad aritmética - lógica entre los números A y B de 16 bits. El código en VHDL es el siguiente:

Figura 18. VHDL Generador (Contador de 5 bits).

Una vez creado y compilado el VHDL de nuestro circuito Generador de operaciones, es posible mirar el RTL del mismo:

Figura 19. RTL circuito Generador.

Como se aprecia el circuito Generador es respectivamente un contador de 5 bits con una salida “O” de 4 hasta 0, este contador corresponde a un arreglo de flip-flops tipo D, además tiene una entrada controlada por el reloj (clk) que permite que los flip-flops se activen y realicen el conteo. La simulación de este circuito se ilustra en la siguiente imagen y además se hace su respectiva explicación:

Page 11: Innforme Practica VHDL ALU

Figura 20. Simulación circuito Generador. De la anterior simulación se puede deducir que:

- El contador de 5 bits se incrementa siempre que haya un flanco de reloj

- Una vez es activada la señal de reset, el contador toma el valor de 0 y reinicia su conteo una vez se desactive la misma señal.

- El contador inicia desde el número “00000”

y se incrementa hasta el número “11111”.

Después de verificar que el contador funciona correctamente se crea su bloque funcional:

Figura 21 . Bloque funcional circuito Generador

2.2.5 MULTIPLEXOR DE 4 A 1 El multiplexor de 4 a 1 tiene la función de seleccionar que se va a visualizar en el display de siete segmentos de la tarjeta Altera DEO, tiene 5 entradas, estas son: DO, D1, D2, D3 y una línea de selección En. Esta línea cumple con las siguientes características:

- Si En = 00, selecciona DO por lo tanto en el display se visualiza el número A.

- Si En = 01, selecciona D1 por lo tanto en el display se visualiza el número B.

- Si En = 10, selecciona D2 y corresponde a observar el resultado de las operaciones en el siete segmentos.

- Si En = 11, selecciona D3 que está conectada

a GND.

Es importante tener en cuenta que tanto las entradas D0, D1, D2, D3 como la salida Z son números de 15 bits. El VHDL del mux de 4 a 1 es el siguiente:

Figura 22 . VHDL Multiplexor de 4 a 1. Posteriormente se compila, para evitar cualquier clase de error y en seguida se observa que es lo que realmente se genera mediante el RTL del circuito:

Page 12: Innforme Practica VHDL ALU

Figura 23 . RTL Multiplexor de 4 a 1. De la anterior figura es posible confirmar que si se ha generado un multiplexor el cual tiene una salida Z de 16 bits. La salida escogerá una única entrada dependiendo exclusivamente de la línea de selección. Luego se realizó la simulación del multiplexor de 4 a 1 y se confirmó su correcto funcionamiento, la herramienta ModelSim nos generó esta simulación

Figura 24. Simulación Multiplexor de 4 a 1. Se puede concluir de la anterior imagen que la salida Z obtenida depende estrictamente de la combinación que tome la línea de selección En, confirmando que cuando es “00” selecciona D0, sí es “01” selecciona D1, “10”

selecciona a D2 y por último cuando es “11” a la salida se tendrá D3, pero para el caso de nuestra ALU de 16 bits D3 la conectamos a tierra ya que no se utilizó. En la simulación se dieron valores arbitrarios solo para corroborar en funcionamiento del circuito. Una vez se verifico el funcionamiento del mux se creó su bloque funcional, este es: Figura 25. Bloque funcional Multiplexor 4 a 1. 2.2.6 DECODIFICADOR HEXADECIMAL A SIETE SEGMENTOS: Este bloque funcional fue indispensable para comprobar el funcionamiento de nuestra ALU a través de los displays de siete segmentos de la tarjeta Altera DE0. Se utilizaron 4 decodificadores ya que la unidad aritmético-lógica es de 16 bits, por lo tanto se requería utilizar 4 displays. Para realizar el código del decodificador de hexadecimal a siete segmentos nos basamos en el decodificador BCD realizado en clase. El código es el siguiente:

Page 13: Innforme Practica VHDL ALU

Figura 26. VHDL decodificador hexadecimal La simulación del decodificador se realizó en ModelSim y después se creó el bloque funcional del mismo:

Figura 27 . Bloque funcional Decodificador

3. CONCLUSIONES: 3.1 Es indispensable simular los circuitos diseñados, ya que esto nos permite verificar si el circuito está funcionando o no tal y como se desea. La herramienta que no permite hacer las simulaciones se llama ModelSim.

3.2 Esta práctica de laboratorio en VHDL nos permitió incursionar en el diseño de circuitos digitales, haciendo uso de todas las herramientas y técnicas vistas en clase de Circuitos Digitales II.

3.3 Durante la creación del circuito deseado en VHDL es de vital importancia el manejo del orden, para que a la hora de presentar algún error durante la compilación, sea apreciado de manera rápida el error disminuyendo el tiempo ocupado en el diseño de los mismos.

3.4 Se pudo cumplir satisfactoriamente con los requerimientos planteados, los cuales eran diseñar un contador de 3 dígitos BCD y Mostrar el contenido del contador en los despliegues de 7 Segmentos HEX2-0, además de diseñar e implementar una Unidad Lógica- Aritmética de 16 bits, que desarrollaba diferentes funciones como por ejemplo rotación y desplazamiento .

3.5 Al ser la primera práctica desarrollada en VHDL

fue elemental el trabajo en equipo, siendo esta una oportunidad de aprendizaje y ayuda mutua durante el desarrollo y diseño de los sistemas.

3.6 El programa Altera Quartus II es una herramienta de gran ayuda durante el diseño de circuitos

secuenciales y aritméticos ya que brinda recursos necesarios para la creación y comprobación de los mismos.

3. REFERENCIAS

[1] ORTIZ, DAGO. "Modelo para informe en iEEE" . SLIDESHARET.NET. disponible en

http://es.slideshare.net/dagoortiz/modelo-

para-informe-en-ieee.

[2] Ramos, Carlos.(2012- julio 26) "ESTADO

FINITO - DIVISOR DE FRECUENCIA CON

VHDL" . disponible en

http://www.estadofinito.com/divisor-

frecuencia-vhdl/.

[3] Urbano, Fernando.(2014 )Apuntes de clase

circuito aritméticos y secuenciales, diseños

realizados durante la clase