miércoles, 18 de noviembre de 2020

Contador de décadas:

Se comenzó este diseño mediante instanciacion de componentes para ello se crearon diversos elementos individuales los cuales fueron integrados en un Top dessign sin embargo, al implementar ocurrieron algunos errores y se tuvo que optar por otro diseño:


Primer intento (instanciacion de componentes) : 



Resultados: 




Se implemento un nuevo método, a continuación se describe este:

Codigo VHDL final:





RTL Analysis:



configuración de conexiones I/O:


Simulación:





Semáforo en VHDL:

 Construcción del semáforo en VHDL en la plataforma Vivado con Testbench:


Mediante una maquina de estados se programaron los casos posibles en ambos semáforos:


Simulación en Vivado:




martes, 17 de noviembre de 2020

 Flip-Flop tipo J-K Sequential circuits

Flip flop tipo Jk (jump keep) Este FF es uno de los más usados en los circuitos digitales, y de hecho es parte fundamental de muchos circuitos avanzados como contadores y registros de corrimiento, que ya vienen integrados en un chip. Este FF cuenta con dos entradas de datos J y K, su función es en principio la misma que el Registro básico NAND o NOR, pero con la diferencia que la condición en las entradas J = 1, K = 1, a diferencia del Registro NAND, que generaría una salida errónea o no deseada, en un FF J-K, obliga a las salidas a conmutar su estado al opuesto (Toggle) a cada pulso del reloj. Esto lo convierte en un tipo de FF muy versátil. Tabla de verdad de un FF tipo J-K síncrono.

Diseño del código 
diagrama RTL  schematic


diagrama tecnología

video de explicación 







 

Realización del  sequetial circuits d flip-flop (1) diseño.

Código 

Esquema RTL

Esquema de tecnología



Simulación explicada






Realizar la practica de diseño y simulación del flip-flop tipo S-R obteniendo los diferentes puntos que se piden de igual manera se debe  explicar diseño.
Código VHDL comentado Simulación explicada Esquema RTL Esquema de tecnología


diseño del código y explicación es esta parte realizamos el el proceso y como estará diseñado nuestro programa
En esta parta mostraremos el  RTL


En este aparto se mostrara el esquema  de tecnología 

Video donde se demuestra la simulación

 



 

Sequential Circuits - S-R Latches (1) implementado en Basys 3

Se describe el comportamiento del Latch S-R de acuerdo a la tabla de verdad y programando el código en Vivado o ISE project navigator de Xilinx.


Se programa el comportamiento de acuerdo al lenguaje VHDL, así como adaptándose desde el comienzo al FPGA que vamos a programar, en el caso de la basys 3  (Artix-7) mediante VIVADO.


Diagrama RTL:


Podemos simular el comportamiento del código mediante el software Vivado o ISE project navigator, para fines prácticos se programa en la tarjeta de acuerdo a las terminales de la misma y se comprueba el funcionamiento, antes claro ya sintetizado el programa, configurado el programa de conexiones y de ser posible realizada una simulación para comprobarlo.

Programación de la FPGA:








 





lunes, 16 de noviembre de 2020

Sequential Circuits - D Latches (1) implementación en placa basys 3 mediante VHDL

 Se describe el comportamiento del Latch D de acuerdo a la tabla de verdad:

Latch D:

siguiendo la siguiente tabla de verdad:



y se programa el comportamiento de acuerdo al lenguaje VHDL, así como 

adaptándose desde el comienzo al FPGA que vamos a programar, en

esta placa un Artix-7.




RTL Design:



Podemos simular el comportamiento del código mediante el software Vivado o ISE project navigator:



Corremos la síntesis y si todo sale bien abrimos el diseño implementado, configuramos los puertos donde programaremos el comportamiento en nuestra placa.

Programación de la FPGA: 



Sequential Circuits - S-R Latches (2) implementacion del ejercicio 2 en software vivado y con una FPGA Basys 3

Se describe el comportamiento del latch S-R con entradas en activo bajo de acuerdo a la tabla de verdad:



Para ello se sigue la siguiente tabla:


Se programa el código VHDL en Vivado: 


Al ejecutar el RTL analysis obtenemos el siguiente esquemático:




y ahora procedemos a simularlo para ello se propone implementarlo en la placa, ademas se puede simular en el software donde se obtendrán los siguientes resultados:

Resultados del testbench:




Vídeos de la implementación en la placa:

Parte 1:


Parte 2:




domingo, 15 de noviembre de 2020

 Yovani Suarez Alcocer   10°B  Mecatrónica 

Introducción 

es un lenguaje de descripción de hardware, que permite describir circuitos síncronos y asíncronos. Para realizar esto debemos: - Pensar en puertas y biestables, no en variables ni funciones. - Evitar bucles combinacionales y relojes condicionados. - Saber qué parte del circuito es combinacional y cuál secuencial.  Permite que más de una persona trabaje en el mismo proyecto. En particular VHDL permite tanto una descripción de la estructura del circuito (descripción a partir de subcircuitos más sencillos), como la especificación de la funcionalidad de un circuito utilizando formas familiares a los lenguajes de programación.

De la misma manera  nos dará  a hacer la programación correspondiente  al interactuar con la placa amiba2, de esto nos lleva a conocer diferentes  temas que debemos de comprender y de dominar para esto se desarrolla ciertos estudios 

Definir las características de los sistemas DSP.

Describir la estructura interna los PLD.

Flip-Flops

Latches

Máquinas de estado digitales

Suma y resta binaria

Multiplicación y división binaria 

dado esto tendremos que razonar para hacer el diseño de los programas que son tipo lachs y flip-flop

Definir las características de los sistemas DSP.

Un procesador de señal digital (DSP) es un tipo de microprocesador (increíblemente rápido y poderoso). Un DSP es único porque realiza el procesamiento de datos en tiempo real. Esta capacidad de operación en tiempo real hace de un DSP la opción perfecta para aplicaciones en las que no vamos a tolerar retrasos.

Básicamente un DSP adquiere una señal digital y la procesa para mejorar la misma. La mejora puede ser un sonido más claro, imagen más nítida o datos más rápidos.

Aunque hay muchos procesadores DSP, la mayoría son diseñados con las mismas operaciones básicas en mente, por lo que comparten el mismo conjunto de características básicas. Estas características se dividen en tres categorías:

  • Alta velocidad de cálculos aritméticos.
  • Transferencia de datos hacia y desde el mundo real.
  • Arquitecturas de memoria de múltiple acceso.
Operaciones Básicas de un DSP

Un DSP para operar requiere unas simples funciones típicas:

  • Suma y Multiplicación.
  • Retrasos.
  • Manejo de Arreglos (vectores)

Para realizar la aritmética simple requerida los procesadores DSP necesitan unidades aritméticas de alta velocidad. La mayoría de las operaciones requieren sumas y multiplicaciones juntas, por lo cual,  existe hardware para suma y multiplicación que pueden usarse en paralelo con una sola instrucción.

Los retrasos (delays) requieren que los valores intermedios sean mantenidos para su uso posterior. Esto también puede ser un requisito, por ejemplo, para un valor total que se actualiza, el total puede ser mantenido en el procesador para evitar lecturas y escrituras masivas en la memoria. Por esta razon los DSPs tienen muchos registros que pueden utilizarse para mantener los valores intermedios.

El manejo de arreglos requiere que los datos sean eficientemente adquiridos desde posiciones de memoria consecutivas. Esto implica la generación de la próxima direccion de memoria. Por esta razon existen registros especiales que se usan para mantener las direcciones de memoria y generar la siguiente rápidamente.

Describir la estructura interna los PLD

Internamente todo PLD se compone básicamente de:
  • Entradas
  • Salidas
  • Matriz AND (fija o variable) Matriz OR (fija o variable) Macrocélula (opcional a la salida)
  • en esta parte se puede visualizar más a fondo la estructura del pld

    ENTRADA

    Las entradas están formadas por buffers de doble salida:

    • INVERSORA
    • NO INVERSORA
    • ARRAY DE PUERTAS AND Y OR

      En el array de puertas AND y en el de puertas OR, también se utiliza la notación abreviada.

Flip-Flops

El flip flop es el nombre común que se le da a los dispositivos de dos estados (biestables), que sirven como memoria básica para las operaciones de lógica secuencial. Los Flip-flops son ampliamente usados para el almacenamiento y transferencia de datos digitales y se usan normalmente en unidades llamadas “registros”, para el almacenamiento de datos numéricos binarios.

Son dispositivos con memoria mas comúnmente utilizados. Sus características principales son:
  • Asumen solamente uno de dos posibles estados de salida.
  • Tienen un par de salidas que son complemento una de la otra.
  • Tienen una o mas entradas que pueden causar que el estado del Flip-Flop cambie.
Los flip flops se pueden clasificar en dos:
Asíncronos: Sólo tienen entradas de control. El mas empleado es el flip flop RS.
Síncronos: Ademas de las entradas de control necesita un entrada sincronismo o de reloj.
Una vez teniendo una idea de lo que es un flip flop vamos a describir los flip flop mas usados.
Flip-Flop R-S (Set-Reset)
Utiliza dos compuertas NOR. S y R son las entradas, mientras que Q y Q’ son las salidas (Q es generalmente la salida que se busca manipular.)
La conexión cruzada de la salida de cada compuerta a la entrada de la otra construye el lazo de reglamentación  imprescindible en todo dispositivo de memoria.
Flip-Flop T
Flip-Flop J-K (Jump-Keep)
A diferencia del flip flop RS, en el caso de activarse ambas entradas a la vez, la salida adquiere el estado contrario al que tenía.
Flip-Flop D (Delay)
El flip-flop D es uno de los FF más sencillos. Su función es dejar pasar lo que entra por D, a la salida Q, después de un pulso del reloj.
Para que sirven las entradas Clear y Preset?
Cuando se están utilizando flip-flops en la construcción de circuitos, es necesario poder controlar el momento en el que un FF empieza a funcionar y el valor con el que inicia su secuencia. Para esto, los flip-flops cuentan con dos entradas que le permiten al diseñador seleccionar los valores iniciales del FF y el momento en el que empieza a funcionar.

El Flip-flop T cambia de estado en cada pulso de T. El pulso es un ciclo completo de cero a 1. Con el flip flop T podemos complementar  una entrada de reloj al flip flop rs.
El flip-flop J-K es una mezcla entre el flip-flop S-R y el flip-flop T. 

Latches

El latch (cerrojo) es un tipo de dispositivo de almacenamiento temporal de dos estados (biestable), que
se suele agrupar en una categoría diferente a la de los flip-flops. Básicamente, los latches son similares
a los flip-flops, ya que son también dispositivos de dos estados que pueden permanecer en cualquiera
de sus dos estados gracias a su capacidad de realimentación, lo que consiste en conectar (realimentar)
cada una de las salidas a la entrada opuesta. La diferencia principal entre ambos tipos de dispositivos
está en el método empleado para cambiar de estado.

Un latch es un tipo de dispositivo lógico biestable o multivibrador. Un latch S-R (Set-Reset) con entrada
activa a nivel ALTO se compone de dos compuertas NOR acopladas, tal como se muestra en la Figura (a); un latch con entrada activa a nivel BAJO está formado por dos compuertas NAND conectadas tal como se muestra en la Figura (b). Observe que la salida de cada compuerta se conecta a la entrada de la compuerta opuesta. Esto origina la realimentación (feedback) regenerativa, característica de todos los latches y flip-flops.
El latch S-R con entrada de habilitación
En un latch con entrada de habilitación  las entradas S y R controlan el estado al que va a cambiar el latch cuando se aplica un nivel ALTO a la entrada de habilitación (EN, enable). El latch no cambia de estado hasta que la entrada EN está a nivel ALTO, pero, mientras que permanezca en este estado, la salida va a ser controlada por el estado de las entradas S y R. En este circuito, el estado no válido del latch se produce cuando las dos entradas S y R están simultáneamente a nivel alto.
Tipos de  Latches


El latch S-R (SET-RESET)
Un latch es un tipo de dispositivo lógico biestable o multivibrador. Un latch S-R (Set-Reset) con entrada
activa a nivel ALTO se compone de dos compuertas NOR acopladas, tal como se muestra en la Figura (a); un latch con entrada activa a nivel BAJO está formado por dos compuertas NAND conectadas tal como se muestra en la Figura (b). Observe que la salida de cada compuerta se conecta a la entrada de la compuerta opuesta. Esto origina la realimentación (feedback) regenerativa, característica de todos los latches y flip-flops.

El latch S-R con entrada de habilitación


En un latch con entrada de habilitación  las entradas S y R controlan el estado al que va a cambiar el latch cuando se aplica un nivel ALTO a la entrada de habilitación (EN, enable). El latch no cambia de estado hasta que la entrada EN está a nivel ALTO, pero, mientras que permanezca en este estado, la salida va a ser controlada por el estado de las entradas S y R. En este circuito, el estado no válido del latch se produce cuando las dos entradas S y R están simultáneamente a nivel alto.



***Máquinas de estado digitales***
Un ‘estado’ es la condición de una cosa en un tiempo determinado. Algunos que pueden realizar tareas y que utilizan estados como su núcleo son máquinas de estado. También son conocidas como máquinas de estado finitas, lo que significa que sabemos todos los posibles estados de ella. La clave para la máquina de estado es el concepto del tiempo y la historia. El estado de la máquina es evaluada periódicamente. Cada vez que es evaluada, un nuevo estado es elegido (el que podría ser el mismo estado nuevamente) y el resultado es presentado.

Un diagrama de una máquina de estado genérica. El elemento de memoria  contiene el nuevo estado conocido como el estado variable. Cuando la máquina de estado cuenta con los servicios, el estado variable es actualizado con el valor de la próxima etapa. Acá la nueva etapa es una función de ambos; el estado actual y algunos inputs. La nube de la lógica es un sistema que decide cual será el próximo estado, o la próxima lógica de estado

Una máquina de estado simple: El contador.

Un clásico ejemplo de una máquina de estado es un contador. Por ejemplo, un ‘for loop’ o un circuito integrado lógico de 74×4040 trabajan como una máquina de estado. Cada vez que la máquina cambia de estado, ya sea por la línea del reloj o por el comportamiento de bucle, el estado de la memoria cambia a un nuevo estado igualando el estado anterior más uno. El set finito de estados que puede tener es la cantidad de números que puede contar.

Maquinaestado2

Un contador básico expresado como máquina de estado

Partes de la máquina de estado del contador:

  • El estado actual es el valor que ha sido contado.
  • El resultado es el estado actual.
  • La próxima etapa lógica es lo que sea el estado actual + 1.
  • No hay entradas. En un diagrama más avanzado, una entrada o una función de reseteo del contador será establecido como entrada.

La máquina de estado avanza a cualquier ritmo que sea atendida.

Máquinas de Estado Moore y Mealy

Los profesores de lógica digital aman preguntar en las pruebas sobre Moore vs. Mealy y es por eso que tenemos que mencionarlo. La distinción entre ellas muchas veces no hace sentido, mientras escribas en una maquina de estado en C; es más como una: distinción de “como hacer un hardware lógico”. Para nosotros la lección de Moore y Mealy es que existió gente que pensó sobre este tipo de cosas e inventó formas de notarlo. Mientras ellos se centraban en el hardware lógico, nosotros nos centraremos en el software c.

Máquina de estado Moore

Puedes notar que no importa cuál será el estado de la entrada, la salida solo depende el estado actual contenido dentro del elemento de la memoria.

Máquina de estado Mealy

en el cual entra en profundidad acerca de crear máquinas de estado desde funciones matemáticas, y describe esas salidas de máquinas de estado en términos de sus entradas.

Para diagramar la máquina Mealy, la salida está hecha para depender de ambos: el estado actual y la entrada. Aquí la nube de la lógica de la próxima etapa contiene la lógica de salida también:

También puede ser dibujado separando la nube en la lógica del próximo estado o lógica de salida.

Diagramas de Estado Abstractos

Hasta ahora, hemos visto que las máquinas de estado tienen una memoria que almacena el estado actual, que debe provenir de algún estado, y que irá al siguiente estado. Aunque nuestro diagrama actual no muestra como se mueve a través de estados, el propósito debiese ser dibujar un mapa de movimiento entre los estados para que podamos escribir un código que emule nuestro diseño. Esto se llama diagrama de estado.

***Suma y resta binaria***

Suma de números Binarios

Las posibles combinaciones al sumar dos bits son

  • 0 + 0 = 0
  • 0 + 1 = 1
  • 1 + 0 = 1
  • 1 + 1 = 10
      100110101
    +  11010101
    ———————————
     1000001010

Operamos como en el sistema decimal: comenzamos a sumar desde la derecha, en nuestro ejemplo, 1 + 1 = 10, entonces escribimos 0 en la fila del resultado y llevamos 1 (este "1" se llama  arrastre). A continuación se suma el acarreo a la siguiente columna: 1 + 0 + 0 = 1, y seguimos hasta terminar todas la columnas (exactamente como en decimal).

Resta de números binarios

El algoritmo de la resta en binario es el mismo que en el sistema decimal. Pero conviene repasar la operación de restar en decimal para comprender la operación binaria, que es más sencilla. Los términos que intervienen en la resta se llaman minuendo, sustraendo y diferencia.

Las restas básicas 0-0, 1-0 y 1-1 son evidentes:

  • 0 - 0 = 0
  • 1 - 0 = 1
  • 1 - 1 = 0
  • 0 - 1 = no cabe o se pide prestado al proximo.

La resta 0 - 1 se resuelve, igual que en el sistema decimal, tomando una unidad prestada de la posición siguiente: 10 - 1 = 1 y me llevo 1, lo que equivale a decir en decimal, 2 - 1 = 1. Esa unidad prestada debe devolverse, sumándola, a la posición siguiente. Veamos algunos ejemplos:


***Multiplicación y división binaria***
Multiplicación

La tabla de multiplicar para números binarios es la siguiente:

  ·

  0

  1

  0

  0

  0

  1

  0

  1


El algoritmo del producto en binario es igual que en números decimales; aunque se lleva a cabo con más sencillez, ya que el 0 multiplicado por cualquier número da 0, y el 1 es el elemento neutro del producto.

Por ejemplo, multipliquemos 10110 por 1001:

  10110  X  1001                            

                       10110               

                    00000                

                  00000                

                10110                

                11000110

División de números binarios

La división en binario es similar al decimal; la única diferencia es que a la hora de hacer las restas, dentro de la división, éstas deben ser realizadas en binario.

Ejemplo

Dividir 100010010 (274) entre 1101 (13):

  100010010 |1101
-0000                010101   
  10001   -1101     01000    - 0000       10000       - 1101         00011
         - 0000
            01110
            - 1101
            00001}




Conclusión 

realizado las practicas  realizadas nos damos a conocer la complejidad de cada una  de la misma manera 
dado a los ejercicios que teníamos que resolver haciendo un diseño  y la estructura de cada una de ellas ya que cada parte lleva una dificulta en la hora de implementar el código en la placa  igual en el estudio y la practica de diseño de códigos y diseños para lograr el objetivo de hacer funcionar las practicas ..

Contador de décadas:

Se comenzó este diseño mediante instanciacion de componentes para ello se crearon diversos elementos individuales los cuales fueron integrad...