LABORATORIO N°1 PLD DISPOSITIVOS LÓGICOS PROGRAMABLES

DANIEL FARID ROMAN RESTAN Código: 1069471291 JORGE TAPIA GUTIERREZ Código: 3838488 JESUS DAVIVD ZAPATA RODRIGUEZ Código: 90072861387

Universidad de Pamplona, Facultad de Ingenierías y Arquitectura, Departamento de Ingeniería Eléctrica, Electrónica, Sistemas y Telecomunicaciones, Programa de: ingeniería electrónica Pamplona, Norte de Santander, Colombia 25- MARZO - 2013.

Resumen

Objetivos:  Aplicar los conceptos y conocimientos adquiridos en la clase de PLD. diseñar un circuito lógico de unidad aritmética serial (UAS) el cual cumpla con las condiciones dadas por el problemas diseñar un circuito trasmisor de datos serial de 12 bit a partir de las condiciones del problema Generar el vector de forma de onda para cada uno de los circuitos lógicos diseñados.

En presente informe se explicara el diseño de dos circuitos lógicos en los cuales el primero es una unidad aritmética serial (UAS) el cual costa de tres entradas (CLK, DIN, RST) y pose tres salidas (RES, DEC, ERR) , obstantemente este circuito se harán operaciones aritméticas las cuales estarna diseñadas a partir del el problema . El segundo circuito lógico es un trasmisor de datos serial el cual costa con cinco entradas (CLK, LOAD, IN_1, IN_2, IN_3) y pose dos salidas (TX, BUSY) este circuito trasmitirá una serie de 12 bit a partir de las condiciones que se expondrán en el problema a diseñar para este circuito lógico. El diseño de estos circuitos lógicos será diseñado mediante el programada QUARTUS II el cual nos brinda un lenguaje de programación en VHDL, los circuitos en el presente informe se diseñaran con los parámetros planteados por el profesor.

END IF. TEMP1:=TEMP1-TEMP2*2**I. ELSIF(SEL=2)THEN IF( CONT<8)THEN N1(CONT):=DIN. USE IEEE.ALL. CONT:=CONT+1. ELSE CONT:=CONT+1. ELSE CONT:=CONT+1. N2:=(OTHERS=> '0'). RES<=CONV_INTEGER(Y). USE IEEE. ELSIF(OPERACION="01001101" AND SEL=6)THEN--OPERACION MULTIPLICACION RES<=CONV_INTEGER(N1 * N2). CONT:=CONT+1.RST:IN BIT. SEL:=0. ELSE CONT:=CONT+1. IF(CONT=12)THEN CONT:=0. ELSIF(SEL=1)THEN IF( CONT<8)THEN OPERACION(CONT):=DIN. VARIABLE OPERACION: STD_LOGIC_VECTOR(7 DOWNTO 0). SEL:=SEL+1. END IF .TEMP2: INTEGER. N1:=(OTHERS=> '0'). SEL:=SEL+1. END IF. RES:OUT INTEGER. SEL:=SEL+1. ELSE CONT:=CONT+1. END LOOP.ALL. VARIABLE ALTA: INTEGER RANGE 0 TO 15. SEL:=SEL+1. IF (N2=0) THEN ERR<='1'. ERR:OUT BIT). ELSIF(SEL=6 AND OPERACION="01000100")THEN--OPERACION DE DIVISION TEMP1:=CONV_INTEGER(N1). ARCHITECTURE RTL OF UNI_ARIT_SERIAL IS BEGIN PROCESS(CLK. VARIABLE X: STD_LOGIC_VECTOR(31 DOWNTO 0). VARIABLE SEL: INTEGER RANGE 0 TO 7. ALTA:=0.STD_LOGIC_UNSIGNED. IF(OPERACION = "01010011" AND SEL=6)THEN --OPERACION SUMA RES<= CONV_INTEGER(N1 + N2). VARIABLE Y: STD_LOGIC_VECTOR(3 DOWNTO 0). END IF. DEC<=CONV_INTEGER(Y)*TEMP1. VARIABLE CONT: INTEGER RANGE 0 TO 12. ELSIF(SEL=4)THEN IF( CONT<8)THEN N2(CONT):=DIN.ALL. END IF.N2). ELSIF(CLK'EVENT AND CLK='1')THEN IF(DIN='0' AND SEL=0)THEN SEL := SEL+1. ELSE ERR <= '0'. END IF. ELSIF(SEL=3)THEN IF( CONT<8)THEN ALTA:=CONT+8. N2(ALTA):=DIN. FOR I IN 3 DOWNTO 0 LOOP IF (TEMP1>=TEMP2*2**I) THEN Y(I):='1'. BEGIN IF(RST='1')THEN CONT:=0. IF(CONT=12)THEN CONT:=0. ELSE X:="0000000000000000" & (N2-N1). END IF. DEC:OUT INTEGER RANGE 0 TO 10. ELSIF(SEL=5)THEN IF( CONT<8)THEN ALTA:=CONT+8. DIN:IN STD_LOGIC.STD_LOGIC_1164.N1: STD_LOGIC_VECTOR(15 DOWNTO 0). IF(CONT=12)THEN CONT:=2. TEMP2:=CONV_INTEGER(N2). ELSIF(OPERACION = "01010010" AND SEL=6)THEN --OPERACION RESTA IF(N1>N2)THEN RES<= CONV_INTEGER(N1 . END ENTITY. END IF. END IF. CONT:=CONT+1. CONT:=CONT+1. ENTITY UNI_ARIT_SERIAL IS PORT(CLK. IF(CONT=12)THEN CONT:=0. ELSE CONT:=CONT+1. END IF. USE IEEE. END IF. END IF. ELSE Y(I):='0'. CONT:=CONT+1.RST) VARIABLE N2.Problema Diseñe y simule una unidad aritmética serial (UAS) de 16 bits: CONT:=0. SEL:=SEL+1. END IF. VARIABLE TEMP1. N1(ALTA):=DIN.STD_LOGIC_ARITH. IF(CONT=12)THEN . CODIGO1 UAS LIBRARY IEEE. END IF.

ELSIF(CON=18)THEN TX<='1'. ELSIF(CON=8)THEN TX<='1'. CODIGO2 TRASMISIÓN SERIAL LIBRARY IEEE.IN_3:IN BIT_VECTOR(11 DOWNTO 0). -----------------------------------------ELSIF(OCUPADO='1' AND SEL=1)THEN IF(CON<8)THEN TX<=IN_1(CON). CON:=CON+1. CON:=CON+1. SEL:=SEL+1. CON:=CON+1. CON:=CON+1. END IF. END PROCESS. CON:=CON+1. CON:=CON+1. CON:=CON+1. ELSIF(CON>9 AND CON<14)THEN TX<=IN_1(CON-2). CON:=CON+1. ELSIF(CON=8)THEN TX<='1'. CON:=CON+1. CON:=CON+1. ELSE X(I):='1'. END LOOP. ELSIF(CON=14)THEN TX<=IN_1(0) XOR IN_1(1)XOR IN_1(2) XOR IN_1(3) XOR IN_1(4) XOR IN_1(5)XOR IN_1(6) XOR IN_1(7) XOR IN_1(8) XOR IN_1(9) XOR IN_1(10) XOR IN_1(11). ELSIF(CON=14)THEN TX<=IN_3(0) XOR IN_3(1)XOR IN_3(2) XOR IN_3(3) XOR IN_3(4) XOR IN_3(5)XOR IN_3(6) XOR IN_3(7) XOR IN_3(8) XOR IN_3(9) XOR IN_3(10) XOR IN_3(11). ELSIF(CON=18)THEN TX<='1'. CON:=CON+1. END IF. ELSIF(CON>14 AND CON<18)THEN TX<='0'. ELSIF(CON=19)THEN TX<='0'. END IF.BUSY:OUT BIT). CON:=CON+1. ELSIF(CON>9 AND CON<14)THEN TX<=IN_3(CON-2).ALL. ELSIF(CON>14 AND CON<18)THEN TX<='0'. CON:=CON+1. ---------------------------------------ELSIF(OCUPADO='1' AND SEL=3)THEN IF(CON<8)THEN TX<=IN_3(CON). ELSIF(CON=14)THEN TX<=IN_2(0) XOR IN_2(1)XOR IN_2(2) XOR IN_2(3) XOR IN_2(4) XOR IN_2(5)XOR IN_2(6) XOR IN_2(7) XOR IN_2(8) XOR IN_2(9) XOR IN_2(10) XOR IN_2(11). CON:=CON+1. VARIABLE OCUPADO:BIT. ELSIF(CON=9)THEN TX<='0'. ELSIF(CON=8)THEN TX<='1'. IN_1.IN_2. END RTL. BEGIN IF(CLK'EVENT AND CLK='1')THEN IF(LOAD='1' AND OCUPADO='0')THEN BUSY<='1'. . ELSIF(CON=9)THEN TX<='0'.FOR I IN 0 TO 31 LOOP IF(X(I)='1')THEN X(I):='0'. ELSIF(CON>14 AND CON<18)THEN TX<='0'. ---------------------------------------ELSIF(OCUPADO='1' AND SEL=2)THEN IF(CON<8)THEN TX<=IN_2(CON). CON:=CON+1. TX<='0'. END IF. CON:=CON+1. SEL:=SEL+1. ELSIF(CON=9)THEN TX<='0'. END IF. SEL:=SEL+1.LOAD:IN BIT. X:=X+1. ELSIF(CON=19)THEN TX<='0'. CON:=CON+1. ARCHITECTURE RTL OF TRANSMISOR IS BEGIN PROCESS(CLK) VARIABLE CON: INTEGER RANGE 0 TO 20. RES<=CONV_INTEGER(X). USE IEEE. OCUPADO:='1'. CON:=CON+1. ENTITY TRANSMISOR IS PORT(CLK. ELSIF(CON>9 AND CON<14)THEN TX<=IN_2(CON-2). CON:=0. CON:=0. TX. END ENTITY. CON:=CON+1. CON:=CON+1. VARIABLE SEL: INTEGER RANGE 0 TO 4.STD_LOGIC_1164.

BUSY<='0'. Conclusión: Se diseñaron los dos laboratorios expuestos anteriormente. ----------------------------------------END IF. ELSIF(CON=19)THEN TX<='1'. OCUPADO:='0'.ELSIF(CON=18)THEN TX<='1'. END RTL. SEL:=SEL+1. y se pudo comprobar su funcionamiento mediante el vector de onda. END IF. En el diseño de los circuitos lógicos fue necesario la implementación de procesos. END PROCESS. CON:=0. . CON:=CON+1. END IF.

ANEXOS Vector de forma de onda del primero circuito Vector de forma de onda del segundo circuito .

Sign up to vote on this title
UsefulNot useful

Master Your Semester with Scribd & The New York Times

Special offer: Get 4 months of Scribd and The New York Times for just $1.87 per week!

Master Your Semester with a Special Offer from Scribd & The New York Times