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:
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 TFlip-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 entradaactiva 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.
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:
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 ..