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

y ahora unimos todo el topdesign. Para esto, usamos la lógica nombrada en el apartado metodología. De esta forma eliminamos el problema del rebote usado con reloj para el registro de 4 bits, ya que pasaba que a veces guardaba los números menores a 9 y a veces no. Por ello, nos aseguramos que la entrada CLK del registro de 4 bits solo reciba nivel alto cuando no sea mayor a 9 y a su vez el debouncer nos diga que hay una tecla presionada.

y los pines usados fueron

El link del video es el este
 

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).

74LS38 - Compuerta Lógica NAND - TdElectrónica

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

Latches in Digital Logic - GeeksforGeeks 

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

JK Flip-flops

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 

Designing of T Flip Flop

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 logicas

para 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

JK
T

ahora con los síncronos (código verilog)

SR (usando compuertas nand, figura 2)



JK (usando case, ya que de la forma vista en el apartado teórico nos surgieron problemas)

T (instanciando el JK anterior)

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.






domingo, 10 de enero de 2021

Laboratorio 9: Uso de verilog para ahorro de componentes PSoC

Laboratorio 9: Uso de verilog para ahorro de componentes PSoC

Juan Pablo López Guevara 20171005073

Universidad Distrital francisco José de caldas. Bogotá octubre
2020

Introducción

Debido a limitaciones en la tarjeta de desarrollo, es de gran utilidad recurrir a la programación mediante codigo. Esto permite reducir los componentes necesarios para un mismo propósito, lo cual nos será muy útil debido a la gran cantidad  de compuertas que iremos necesitando en los laboratorios siguientes.

Objetivos

  • Adquirir una destreza basica para la creación de componentes en Verilog
  • Rediseñar componentes como los sumadores de las anteriores practicas usando lenguaje Verilog
  • Diseñar usando solamente Verilog un multiplicador de 4 bits
 

Marco Teórico

Lenguaje Verilog 

Verilog HDL es un tipo de lenguaje de descripción de hardware. Los lenguajes de descripción de hardware son similares a los lenguajes de programación en sintaxis (a excepción que en los lenguajes de descripción de hardware se hace importante los tiempos de ejecución, como se verá en practicas posteriores) pero están enfocados en ser usados como una forma practica de definir una estructura de diseño para circuitos digitales.

El diseño estructural en Verilog consta de básicamente describir las compuertas lógicas, así como sus diferentes conexiones necesarias para construir el modulo deseado (recordemos que un modulo es la unidad básica de diseño en verilog).

Para evidenciar de manera practica el funcionamiento de Verilog en circuitverse, recurriremos al ejemplo dado en clase

Figura 1. Sumador de 1 bit en Verilog (circuit verse)

Como vemos en este ejemplo, la sintaxis estructural tiene por objetivo describir las compuertas a usar y sus conexiones.

Estos módulos los podemos instanciar para crear componentes más sofisticados, como vimos al principio del curso (que con un sumador completo de 1 bit podríamos construir un sumador de n bits).

Figura 2. Sumador de 4 bits en Verilog (circuitVerse)

Aquí podemos ver un screenshot de los dos componentes

Para ver los tipos de conexión que tenemos disponibles, así como la diferencia entre Verilog en circuitVerse y en el PSoC creator, tomaremos directamente del material de la guia el ejemplo de como se  construye este sumador de 4 bits


Ambos tipos de conexión nos seran utiles en mayor medida dependiendo de lo que necesitemos. Debido a lo extenso que puede hacerse nombrar demasiadas conexiones, puede que nos sea util solo crear componentes "repetitivos" en su construcción, como lo son comparadores, sumadores, multiplexores, decodificadores. Por esta razón, lo más practico en nuestra practica podría no ser nombrar todas las conexiones entre módulos de diferente indole, sino solo diseñar bloque por bloque en verilog y luego unirlos de forma estructural como las practicas anteriores.

Multiplicación binaria

Es bien sabido que la multiplicación binaria sigue la misma estructura que la decimal, por lo que esto nos permite hacer el análisis visto en la parte teórica

Figura 3. Estructura para el diseño del multiplicador usando sumadores de 4 bits

Metodología

Para esta practica, construiremos en Verilog (PSoC creator) un sumador de 1 bit, y con este modulo, un sumador de 4 bits. Para completar el multiplicador, necesitamos diseñar un bloque que agrupe las diferentes multiplicaciones (compuertas AND) de tal manera que el multiplicador se arme como en la siguiente figura


Figura 4. Diagrama de un multiplicador de 4 bits a partir de sumadores

Diseño

Para diseñar este multiplicador, usaremos como base la figura 4. Por cada renglón, agruparemos los 4 sumadores de 1 bit en un sumador de 4 bits mediante Verilog, y agruparemos todas las compuertas AND en un único bloque multiplicador también en verilog.

Desarrollo de la practica

comenzamos programando el modulo sumador completo

Luego programamos el sumador de 4 bits, para lo que necesitamos incluir el codigo del sumador de 1 bit









Luego programamos el bloque multiplicador





























Ahora veamos la unión de todos los bloques



En este link, podemos ver el funcionamiento de este multiplicador de 4 bits

Conclusiones

Vemos que gracias al uso de verilog pudimos construir el multiplicador con gran facilidad y sin necesidad de usar el apartado esquimatico con compuertas logicas como las practicas anteriores. Como se sabe, esto nos permite ahorrar compuertas, por lo que para practicas posteriores, sería de gran ayuda tener diseñados en Verilog los componentes como sumadores, comparadores, multiplexores y codificadores.


















ecuaciones para fisica