Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Compuertas Combiancionales Video 1
Compuertas Combiancionales Video 1
html
Dado un conjunto de salidas que entrega el circuito siempre van a depender de la situación
que se encuentre descrita en las entradas.
Para un circuito de m entradas vamos a tener 2 a la m combinaciones posibles, la cantidad de
salidas de un circuito combinacional no depende de la cantidad de entradas disponibles.
En las técnicas de diseño enfocadas en la tecnología TTL Y CMOS las características de la
compuertas NAND y NOR, como estas, resultaban vitales puesto que se podía conseguir
reducir los costos y las dimensiones del arreglo físico implementando cualquier compuerta
con estos dos operadores lógicos de tal manera que era muy importante saberlos manejar de
manera universal, en la actualidad esta forma de conocimiento ya no es tan necesaria.
Se compone de una suerte se sumas de producto s de las variables de entrada para describir
las salidas
El lenguaje hdl determina de que manera se relacionan las variables con respecto de los
bloques de multiplicacion y las sumas para definir auna función
A partir de pld
simple se desarrolaron tipos mas complejos distinguiéndose dpor como se manejan el juego
de compuertas lógicas y los elementos de memoria.
Tanto un CPLD como un FPGA poseen un gran número de elementos lógicos programables.
Pero en densidad de puertas lógicas el primero posee decenas de miles y el fpga van del
orden de cientos de miles hasta millones de ellas.
Las ventajas
Al configurar hardware estamos dirigiendo el flujo de datos manipulando señales eléctricas
por lo que el procesamiento de información es precisamente en paralelo(las compuertas
existen físicamente hablando y por lo tanto realizan operaciones de forma simultanea)
Si realizamos una sincronización de los procesos para establecer un régimen temporal
veremos que se pueden manejar altas frecuencias de flujo de datos.
El diseño implementado en un dispositivo puede desecharse para realizar otro diseño
Des
No existe un estándar común de inicialización ya que estas reglas la define
El lenguaje de descripción de hardware si es un estándar pero ciertamente es complejo por la
naturaleza paralela del dispositivo
El costo es superior al de otro tipo de soluciones tecnológicas.
VIDEO 2
FPGA: Gran Matriz de compuertas AND y OR cuyas interconexiones se definen por un
lenguaje luego podemos imaginar a estas configuraciones como tablas de verdad LUTs
Dan lugar a circuitos implementados mediante una Memoria temporal estática SRAM. El
empleo de memoria SRAM implica que el dispositivo pierde la configuración una vez se le
quita la alimentación
La salida de una LUT puede ser enviada a dos elementos, una se dirige hacia un selector de
dos canales(multiplexor), canal 1 y 2
Este dispositivo permite el paso de solo uno de los canales por vez hacia su salida.
El otro elemento al que esta conectada la LUT es un dispositivo de memoria, aquí llamada
celda básica o Flip-Flop, esta conectado a una señal de reloj, un dispositivo de tipo
secuencial, opera por ciclos de reloj, su función es la de almacenar las salidas disponibles en
cada instante de tiempo de la LUT, de tal manera que el multiplexor en su canal 2, es recibir
esa señal que se almacena temporalmente en el dispositivo de memoria.
Multiplexor: decidir si nuestra LUT, con su juego de memoria, se comporta de forma
puramente combinacional, tomar el canal 1, o de forma secuencial, tomar el canal 2,
Dispositivos secuenciales: dispositivos que manejan memoria.
A este arreglo completo se le llama unidad lógica o elemento lógico LE por sus siglas en
ingles.
Cada LE con el que cuenta el fpga están interconectados entre si y a las salidas del propio
fpga.
Implementar un proyecto con un fpga consiste en designar la tabla de verdad que da
solución al problema, determinar si es necesaria la retención de la información durante el
proceso y luego, conectar las entradas y las salidas de los elementos lógicos ya sea entre
ellos o hacia las salidas del fpga.
No es necesario minimizar las funciones, en su lugar hay que buscar estrategias que reduzcan
la cantidad de código, ya que se deben especificar todas las combinaciones posibles según la
cantidad de entradas que tenga nuestra función, aunque si especificamos, literalmente, toda
una tabla de verdad entonces estamos volviendo a la técnica tradicional de diseño.
No deseable en este dispositivo
Paso previo al diseño con FPGA es entender lenguajes de descripción de hardware VHDL
Los niveles de abstracción HDL hacen referencia a la forma de dar solución técnica aun
problema manejando una entidad y una arquitectura.
La entidad define al diseño externamente, designando el nombre del arreglo designando las
entradas y las salidas, así como los tipos de datos que estas manejan.
La arquitectura define la funcionalidad de la entidad implementando las operaciones para el
fin que persigue dicha solución.
Las entradas y las salidas de una entidad son denominadas ports o puertos.
Un tipo especial de puerto puede funcionar de manera bidireccional (se comporta como
entrada o salida a la vez).
Los puertos deben tener nombres que no deben empezar por números, no admiten símbolo
especiales salvo el guion bajo, no hay distinción entre mayúsculas y minúsculas, cada puerto
debe tener un nombre diferente.
Los tipos datos manejados por los puertos pueden ser variados, valores lógicos, valores
numéricos naturales, valores enteros, alfanuméricos, aunque no todos son sintetizables.
Existen diversas librerías para trabajar con FPGAs algunas implementadas por los propios
fabricantes pero la industria prefiere el empleo de los entandares en este caso IEEE 1164
STD LOGIC Bit por bit STD LOGIC VECTOR: manipulación de arreglos de bits, cuando
ya se habla de buffers.
Buffer: palabra de una determinada longitud de bits, por ejemplo una palabra de 4 bits de 8
bits de 16 bits, o de 32 bits etc
Para introducir los conceptos del estándar vamos a manejar los tipos de datos STD LOGIC
cuyos valores posibles son ‘0’, ‘1’, ‘U’.
Se incluyen comillas al indicar los valores posibles, ya que el compilador necesita entender
que se esta hablando de valores lógicos y no de valores numéricos ya que en ese caso será
necesario implementar otro tipo de librería.
Esquema básico que sigue un código en VHDL cuando se quiere definir una entidad.
Las palabras en negrita excepto modo son palabras reservadas del lenguaje VHDL
library: designa cual de todas las librerías disponibles se empleara.
use: determina cual conjunto de tipos de datos de la librería se van a emplear , en este caso
std_logic, permite manipular bits individualmente
entity: permite dar nombre al arreglo is: declara el comienzo de la designación de la entidad
generic (junto con sus argumentos): es un elemento opcional que permite declarar variables
constantes y propiedades para la entidad en independencia de la arquitectura que
posteriormente se declare, no es sintetizable, solo sirve para a simulación del diseño.
port: establecerá el conjunto de entradas y salidas para la entidad
end: termina la designacion de la entidad siempre indicando de nuevo el nombre que esta
tenga.
Toda sentencia en el lenguaje VHDL termina en ;
La designacion del flujo se realiza mediante : seguido inmediatamente de la dirección que el
flujo tiene (in) y posteriormente el tipo(tipo) de dato que manejara dicho puerto(entrada 1,
entrada2) los puertos se pueden enlistar separados por comas.
En la definición de port, el ultimo puerto no requiere de ; antes de cerrar el paréntesis
correspondiente.
Como la entidad es una sentencia desde que empieza la palabra formalmente dicha,
entonces la sentencia termina hasta que escribimos end nombre por lo que se coloca
también un ;.
Constant después su nombre y : seguido tipo de valor que va a manejar esta constante el
operador de asignación := y el valor correspondiente.
Variable después nombre de dicha variable, operador de asignación(:) de tipo, y
[opcionalmente] un valor inicial asignado con el operador :=
Signal, nombre de la señal seguida de el operador de asignación de tipo
Los valores entregados a la sconstantes, las variables, y las señales deben ser compatibles
con los tipos manejados.
Si nosotros vamos a emplear valor lógicos estos deben encerrarse en comillas simple
Los puertos de hecho son señales, pero su tipo de objeto es asignado una vez que nosotros lo
declaramos en la entidad,
Todos los operadores que se manejan en el leguaje VHDL y todos aquellos que no son de tipo
lógico requieren ser precargados con una librería especifica
Nos enfocaremos en aquellos de tipo lógico, recurrir a los operadores de asignación según la
necesidad del elemento de codificación que estemos utilizando.
Declara que librería se usara, la librería en cuestión IEEE;
Definir el conjunto de variables a utilizar de esa librería use
Y el conjunto de variables que es IEEE.STD_LOGIC_1164.ALL para indicar que queremos
todos los tipos definidos
Escribimos port por definir los puertos del circuito
Los puertos de nuestro dispositivo son a,b
Ponemos : para indicar la dirección del flujo, en este caso son de entrada in y se define el tipo
de dato, como se quiere que se lean valores lógicos entonces std_logic solamente,
A continuación declaramos la salida S, definir la dirección del fluji: es este caso salida out de
que tipo std_logic
Se termina de definir la entidad y ahí que cerrarla dando end y el nombre de la entidad
creada;
Solamente se ha diseñado el circuito desde afuera diciendo las entradas y la salidas
A continuación se debe designar la arquitectura architecture y darle el nombre a la
arquitectura, solo se defne la operación que se debe realizar y decimos a quien le pertenece
of
Y seguiría el espacio de los elementos auxiliares de nuestra arquitectura pero e n este caso
no se necesiatan.
Sigue la palabra begin , para comenzar a designar como van a ser las salidas con respecto de
la entradas.
Entonces dejamos espacio, S va a recibir un <= ‘1’ , el símbolo es el operador de asignación,
el valor que se asigna, en este caso es lógico debe ir entre comillas simples de no ponerlo el
compilador nos marcaria error porque interpretaría al numero justamente como un numero
y no como un valor lógico.
Luego cuando when, S recibe un 1 cuando
La simulación de un diseño se realiza aplicando formas de onda(vectores de prueba) a las
entradas del circuito, gráficamente
Consta de dos áreas
Enamrca una escala de tiempo
Lista los puntos o nodos de interés en el circuito que queremos simnlar
La escala de tiempo parte desde los 0 a 960 ns
Este rango de tiempo es demasiado grande ya que el fpga es un dispositivo de alta velocidad
por lo que hay que limitar el rango a solamente unos cuanto ns en este caso a 50.
En node Finder vamos a buscar los nodods disponibles en nuestro diseño, es decir las
entradas y salidas que definimos en la entidad, se buscan en list y se agregan a la lista de
señales a analizar y están agregados.
Aun no están definidas las formas de onda, la salida indica un valor desconocido,
Se seleccionan una a una cada entrada, se busca overwriteclock y ahí se indica el periodo y
en la ventana emergente indicaremos el periodo(cada que tiempo se va a estar repitiendo
nuestra forma de onda) de la señal y el ciclo de trabajo (cuanto tiempo estará en estado alto
y por consiguiente en estado bajo).
Se hace en que las señales establezcan todas las combinaciones de nuestra tabla de verdad.
40ns
50% 20ns en estado bajo y 20ns en estado alto
Se procede a la simulación
Al final se verifica como son las salidas de nuestro circuito
Estas formas de onda representan justamente los voltajes entregados en los pines de nuestro
FPGA, los que se deben entregar para las entradas y las respuestas que nos devuelve en
voltaje nuestro circuito, en el fpga los voltajes devueltos son de 3.3 V para un 1 y de entre 0 a
0.5 V para indicar un valor lógico 0
Emplazamiento y el enrutamiento
Configurar como las salidas y entradas de nuestro dispositivo se vincularan con los pines del
FPGA, modo grafico de designar los pines correspondientes, pine plainer
Representación grafica del FPGA, observar pines gráficos que contienen letras Qs Y Rs, pines
que pueden ser utilizados para designar entradas o salidas físicas en nuestro FPGA.
Para designar los pines vamos a la columna location y en la fila correspondiente al nodo que
queremos designar, doble click, cambia a un menú de todos los pines disponibles en el FPGA.
Luego enable live I/O check, verificar que los pines que seleccionamos son adecuados para el
trabajo que pretendemos implementar en el FPGA.
Cjeck passed, los pines son adecuados.