Fundamentos de circuitos digitales
lunes, 27 de septiembre de 2021
domingo, 21 de febrero de 2021
laboratorio 13: contadores
Laboratorio 13: contadores
juan pablo lopez guevara 20171005073
universidad distrital francisco josé de caldas
Introducción
Los contadores como circuitos secuenciales, nos sirven como elemento de estudio con el fin de aprender sobre el diseño secuencial. En esta practica se diseña un contador BCD de dos cifras.
Para esto, usamos el diseño dado en clase por el profesor
De donde tenemos la siguiente tabla de estados (cada cambio es un pulso de reloj)Conclusiones
laboratorio 14: Ejercicio contadores
Laboratorio 14: ejercicio contadores
juan pablo lopez guevara 20171005073
universidad distrital francisco josé de caldas
Enunciado
Solución del problema.Conclusiones
sábado, 20 de febrero de 2021
Laboratorio 15: matriz de leds
Laboratorio 15: matriz de leds
Juan pablo lopez guevara 20171005073
Universidad distrital francisco José de caldas
Ingeniería electrónica, fundamentos de circuitos digitales
Introducción
Debido a la necesidad de tener más cantidad de salidas de información para el usuario, aparecen las matrices de LED, que nos permiten dibujar figuras como lo son los emoticones.
Objetivos
- Implementar los 4 emoticones presentados
- Poder seleccionar cualquiera de los emoticones usando 2 bits de selección
- Tener la opción de desplazar el emoticón en la matriz
Marco teorico
Matriz de leds
![]() |
| Figura 1. Diagrama de matriz de leds 8x8 |
Metodología
Diseño
![]() |
| Esquematico |

El link para ver el funcionamiento de este circuito es este
Conclusiones
lunes, 25 de enero de 2021
Laboratorio 11: registro de 4 bits
Laboratorio 11: Registro de 4 bits
Juan Pablo López Guevara 20171005073
Universidad Distrital francisco José de caldas. Bogotá octubre
2020
Introducción
Debido a la necesidad de trabajar con numeros binarios en codigo BCD, necesitamos empezar a separar los registros entre numeros menores y mayores a 9.
Objetivos
Implementar el registro de 4 bits dado en la practica en el circuito de la practica 10 con el fin de ver que se guarden los valores binarios. Luego agregamos los componentes necesarios para que solo se guarden los numeros iguales o menores a 9.
Marco teórico
Registros
Sirven a modo de almacenamiento temporal. Permiten desplazar información y se construyen a partir de circuitos secuenciales como lo son flip-flops D o tambien JK. Son muy populares los registros de 8 bits debido a que los ordenadores manejan unidades llamadas bytes (8 bits).
Para esta practica necesitamos un registro de 4 bits como el presentado en la guía. Figura 1.
![]() |
| Figura 1. Registro de 4 bits propuesto en la guía |
Metodología.
Implementamos el registro dado en la guía (figura 1) en un bloque esquemático de PSoC creator, y lo conectamos con el circuito hecho en el laboratorio 10. Luego agregamos un circuito mayor a 9 y un habilitador para la condición botón oprimido HIGH (la cual sacamos de la salida del debouncer de la practica anterior) y a su vez la condición No mayor a nueve.
Diseño e implementación
Comenzamos planteado la tabla de verdad necesaria para el circuito mayor a 9.
![]() |
| Tabla 1. Tabla de verdad mayor a 9 |
Así usando mapas
Así, tenemos la función lógica >9=B3(B2+B1)Lo programamos en verilog
Ahora implementamos el registro dado en la guía por medio de esquemático
Conclusiones
Podemos evidenciar de forma simple y precisa la gran utilidad de los registros. Podemos almacenar valores para su uso posterior. Garantizar que solo queden guardados números menores o iguales a 9 nos abre un abanico de posibilidades como lo es manejar números binarios en código BCD. Esto nos permitiría usar bloques que ya hemos usado en laboratorios anteriores en combinación con el teclado matricial.
domingo, 24 de enero de 2021
laboratorio 10: decodificador matricial y Biestables
Laboratorio 10:Decodificador matricial y Biestables
Juan Pablo López Guevara 20171005073
Universidad Distrital francisco José de caldas. Bogotá octubre
2020
Introducción
Debido a la necesidad de manejar entradas como teclados y similar, agregamos ahora el teclado matricial de la tarjeta de desarrollo con el fin de no tener que usar los dip switch. Los transistores nos permiten almacenar datos en forma de bits, comprobaremos las tablas de verdad de los circuitos biestables disponibles en PSoC creator, así como programaremos algunos en Verilog.
Objetivos
- Implementar el decodificador de teclado matricial propuesto por la guía
- Con mapas, convertir el código resultante en código Binario
- Programar los biestables asíncronos por componentes y los sincronos por código Verilogl.
Marco Teórico
Teclado matricial
El uso de teclados para introducir información en un dispositivo es muy común debido a que simplifica el manejo de datos. Por esto, se encuentran ampliamente en dispositivos de uso cotidiano como cajeros y múltiples sistemas de seguridad.
Los teclados matriciales por lo general usan un arreglo de botones que se ubican por filas y columnas. Un teclado matricial 4x4 (como el de la tarjeta) permite manejar 16 botones con solamente 8 lineas. El método para saber que botón se ha presionado consta de un barrido en las filas de tal manera que se encuentre el botón presionado buscando un cero en las columnas.
![]() |
| Figura 1. teclado matricial |
Biestables
Existen de dos tipos, latch y flip-flop. Los latch son aquellos cuya respuesta solo depende de las entradas de exitación, pero no hay un control como un reloj. A diferencia de estos, los flip-flop se caracterizan por tener señales de control como lo puede ser un reloj. Sin embargo, en muchos de los casos podremos construir un flip-flop a partir del funcionamiento de un latch, como lo veremos en seguida.
Latch SR
Este tipo de biestable tiene 2 entradas y 2 salidas (la salida y su complemento). La tabla de verdad es la tabla 1.
![]() |
| tabla 1. Tabla de verdad biestable SR |
De aqui tenemos Q+=S+R'Q para compuertas NOR,
Q+=(S'*(R'Q)')' para compueras NAND
Así, tenemos 2 opciones para usar este latch
![]() |
| Figura 1. Biestable SR con NOR |
![]() |
| Figura 2. Biestable SR con NAND |
Flip-flop SR
Para construir este flip-flop, basta con agregar un habilitador de las entradas S y R. Para hacerlo con el mismo tipo de compuerta, analizaremos el comportamiento de una compuerta NAND como habilitador (negativo).

Si tomamos la entrada A como reloj, veremos que cuando es 0, tenemos siempre de salida HIGH (lo que en logica negativa seria 0) y cuando tenemos 1, tenemos el complemento de B. Esto nos permite hacer un habilitador para el circuito de la figura 2. de donde este será la señal reloj.
![]() |
| Figura 3. Flip-flop SR |
![]() |
| Tabla 2. Flip-flop SR. No cambia de estado si E no esta en HIGH |
Latch D (delay)
Sirve a modo de memoria o como delay. Su tabla de verdad es la siguiente
y su funcion logica es Q+=D
Podemos construir un latch D a partir del latch SR de la figura 1.
![]() |
| Figura 4. latch D a partir de SR |
Flip-flop D
A partir del flip flop SR de la figura 3 podemos construir el flip-flip D
latch jK
Es la mejor del SR, eliminando la restricción en que no podian ser iguales en nivel alto las entradas. Su tabla de vedad es la siguiente
y su funcion logica es Q+=QK'+Q'J
Flip-flip JK
Básicamente, aprovechamos la logica del Flip-flop SR agregándole una nueva entrada para el reloj

Latch T
Basicamente es un latch JK con ambas entradas (J y K) en una unica entrada, su tabla de verdad es la siguiente
y su función lógica es Q+=T'Q+TQ'=T(+)Q
Flip-Flop T
Es un flip-flop JK con las entradas J y K siendo la misma

Metodología
Para este laboratorio, implementaremos el circuito dado en la guía, tomaremos la tabla de datos de salida del teclado matricial, usando mapas construiremos un deco para convertirlos a binario y programaremos los biestables vistos en el apartado anterior.
Decodificador de teclado matricial
![]() |
| circuito dado en la guía |
Para implementarlo más facil, crearemos un bloque para el deco2a4 y el codificador 4 a 2.
![]() |
| Decodificador 2 a 4 |
![]() |
| Codificador 2 a 4 |
Así, tenemos la implementación del decodificador dado en la guia
![]() |
| Decodificador matricial |
Usando este decodificador, encontramos la siguiente tabla de verdad
Por medio de mapas, encontramos las siguientes funciones logicaspara B0
y su función lógica resumida sería: S3(S1S2'+S0S2)+(S1+S3)'
Para B1
y su función lógica B1=(S0+S1)'S2+S1(S2+S3)'+S0(S2'+S1'S3)Para B2
Y su función lógica B2=S3((S0+S2)'+S0S1')+S2(S0(+)S1)'
Para B3
y su función logica B3=S0(S2+S1)+S2(S1(+)S3)Luego juntamos todo en un único deco
Así juntamos ambos circuitos y tenemos el siguiente resultado
Biestables
Comenzamos por los Biestables asíncronos
SR
D
JKT
ahora con los síncronos (código verilog)
SR (usando compuertas nand, figura 2)
A través de este link podemos evidenciar el funcionamiento de los circuitos desarrollados en esta practica.
Conclusiones
Concluimos que claramente es importante el uso de la tarjeta de desarrollo, ya que sin esta no seriamos capaces de evidenciar correctamente los errores a la hora de programar los pasos en verilog, ya que como nos pasó con el biestable sincrono JK, tuvimos que recurrir a un case recomendado en internet, ya que el circuito no tenia el comportamiento deseado cuando se usaban compuertas.
Es más que claro que se comprobó que los biestables son circuitos secuenciales en los que toca tener en cuenta los estados anteriores para entender el estado siguiente. Estos nos brindan un gran abanico de posibilidades, desde memorias, comparadores, divisores de frecuencia y demás.
Por otro lado, vemos lo útil de usar teclado envés de usar los pull up de la tarjeta, ya que aumenta la comodidad del usuario.
-
Practica 1: Circuitos integrados, compuertas lógicas. Juan Pablo López Guevara 20171005073 Universidad Distrital francisco José de caldas. B...
-
Laboratorio 7: sumador de 7 bits con visualización dinámica Juan Pablo López Guevara 20171005073 Universidad Distrital francisco José de cal...







































































