Introducción A Quartus Ii
Introducción A Quartus Ii
Introducción A Quartus Ii
CATEDRÁTICO:
ING. SALVADOR
GERMAN.
INSTRUCTORES:
BR. A
BR. R
ESTUDIANTES:
C
R
1. Objetivos........................................................................................................................................2
2. Introducción...................................................................................................................................3
3. Marco Teórico:................................................................................................................................4
4. Obtención e Instalación del software.............................................................................................8
5.Desarrollo de los circuitos.............................................................................................................16
6.Observaciones...............................................................................................................................24
7. Preguntas de Investigación...........................................................................................................25
8. Conclusiones................................................................................................................................32
Bibliografía:......................................................................................................................................33
1. Objetivos
Objetivo general:
Desarrollar y exponer mediante el lenguaje de descripción de circuitos
electrónicos VHDL, simulaciones con Quartus II y ModelSim
Objetivo específico:
2
2. Introducción
Los circuitos digitales han sido muy importantes para el avance de la tecnología, la
mayor parte de los dispositivos digitales que conocemos los emplean, como, por
ejemplo, las computadoras personales, termómetros digitales, cámaras, entre
otros, para lo cual es necesario conocer sobre ellos. Al hablar sobre circuitos
digitales es importante definirlos, como un sistema formado por un conjunto de
dispositivos electrónicos que reciben un cierto número de señales digitales de
entrada, las procesan y generan una o varias señales digitales de salida. También
es necesario hablar sobre señales digitales, que son aquellas que presentan una
variación discontinua con el tiempo y que solo puede tomar ciertos valores
discretos, a diferencia de las señales analógicas que pueden tomar un número
infinito de valores en un rango especificado.
En el presente reporte se pretende dar un primer contacto a los lenguajes HDL ,
acrónimo de Hardware Description Language especialmente se destaca el AHDL
que es el lenguaje de descripción de software de Altera y VHDL que se explicara
en detalle cada uno de ellos más adelante, lo cual nos servirán para describir
circuitos digitales o redes lógicas auxiliándonos de la herramienta Quartus II de
Altera para poder representarlos y ModelSim para realizar su simulación
respectiva en base a la codificación sobre el circuito.
3
3. Marco Teórico:
VHDL:
¿Qué es un VHDL?
Es el acrónimo que representa la combinación de VHSIC Y HDL, donde el primero
es el acrónimo de Very High Speed Integrated Circuit y el segundo es a su vez el
acrónimo de Hardware Decription Language.
Es un lenguaje definido por el IEEE (Institute of Electrical and Electronicos
Engineers) (ANSI/IEEE 1076-1993) usado por ingenieros para describir circuitos
digitales.
VHDL significa very-high-speed integrated circuits hardware description language
o lenguaje de descripción de hardware de circuitos integrados de muy alta
velocidad.
¿Qué es un FPGA?
Un FPGA no es un microcontrolador, en realidad es un conjunto masivo de celdas
o bloques lógicos programables. Estas celdas son programadas individualmente
para convertirse en pequeños bloques de construcción. Pueden ser compuertas
simples (AND, OR y NOT, etc) o flip-flops.
Así que la diferencia con un micro es que nosotros programamos cada celda para
funcionar como un bloque de memoria lógica. Esto significa que, debido a que
cada bloque es tan independiente, todos están operando al mismo tiempo. A
diferencia de un micro donde cada línea de código se procesa a su vez. Por lo
tanto, los programadores de FPGA pueden conseguir velocidades mucho más
altas de procesamiento.
Este punto anterior es muy importante a tener en cuenta. Un programa realizado
en VHDL puede parecer como un programa de computadora clásico (secuencial) y
puede procesar los datos en los cambios de flanco del clock, pero hay que
recordar que todo está funcionando a la vez (paralelo).
El Lenguaje se encuentra definido en bloques también. Cada función que
deseamos, es a nivel superior definida como una “entidad” donde se especifican
las entradas y salidas del bloque. Como, por ejemplo, una compuerta AND queda
definida como:
4
Figura 3.2 bloque de arquitectura de la
compuerta AND
5
El lenguaje VDHL, contiene otros comandos más complejos que pueden existir
dentro de la arquitectura como Loops While, If y If-Else. Todos los tipos de cosas
que se ven en la programación en C. Sin embargo, cuando se define un bucle en
C el código da vueltas y vueltas, en VHDL que en realidad podríamos estar
diciendo que genera múltiplos bloques idénticos de lógica y que todos ellos
procesen datos en un ciclo de clock si así se requiere .
HDL:
Un lenguaje de descripción de hardware es un lenguaje de programación
especializado que se utiliza para definir estructura, diseño y operación de circuitos
electrónicos, y más comúnmente, de circuitos electrónicos digitales, como el
convertidor analógico digital o cualquier antena satelital. Así, los lenguajes de
descripción de hardware hacen posible una descripción formal de un circuito
electrónico, y posibilitan su análisis automático y su simulación.
Los HDL utilizan expresiones estándar basadas en texto que reflejan la estructura
de los circuitos electrónicos, si se viera dentro de una tarjeta, se podrían observar
más de un millo de compuertas a disposición del programador. Al igual que los
lenguajes de programación concurrentes, la sintaxis y la semántica de los HDL
incluyen notaciones específicas para la concurrencia. Sin embargo, al contrario de
lo que ocurre con la mayoría de los lenguajes de programación , los HDL incluyen
también una notación específica para el tiempo, debido a que este es una
característica fundamental de los circuitos electrónicos reales. Los HDL son algo
más rico que los lenguajes de la lista de conexiones (cuyo propósito es expresar la
conectividad entre una jerarquía de bloques), ya que no solo permiten definir la
estructura del circuito, sino también su comportamiento.
Así los HDL pueden ser usados para escribir especificaciones “ejecutables” de
hardware. Es decir, un programa escrito en HDL hace posible que el diseñador de
hardware pueda modelar y simular un componente electrónico antes de que sea
construido físicamente. Es esta posibilidad de “ejecución” de componentes lo que
hace que a veces los HDL se vean como lenguajes de programación
convencionales, cuando en realidad se debería clasificarlos más precisamente
como lenguajes de modelado.
6
AHDL:
Abreviatura de Altera Hardware Description Language (Lenguaje de descripción de
hardware de Altera). Este lenguaje de descripción de hardware cuyo propietario es
Altera Corporation para la programación de CPLDs (Complex Programmable Logic
Devices o Dispositivos complejos de lógica programable) y FPGAs(Field
Programmable Gate Arrays o Campo de matrices de Puertas Programables).
Compilado con el Quartus de Altera y la serie de compiladores Max+, este
lenguaje tiene una sintaxis parecida al lenguaje de programación C y una
funcionalidad similar a VHDL.
ModelSim:
ModelSim es un entorno realizado por Mentor Graphics, que permite el desarrollo
y la verificación de Hardware Description Languages (HDL) como Verilog, VHDL y
SystemC. La simulación puede realizarse utilizando la interfaz gráfica (GUI) o los
script. La familia de simuladores ModelSim que nace de la unión entre la
tecnología de simulación single-kernel (SKS, Single Kernel Simulator) y un entorno
de debug para Verilog, VHDL y SystemCed es la elección ideal sea por ASIC que
por FPGA.
7
Quartus II Web Edition:
La Edición Web es una versión gratuita de Quartus II. Esta versión permite la
compilación y la programación de un número limitado de dispositivos Altera.
La familia de FPGAs de bajo coste Cyclone, está soportada por esta edición, por
lo que los pequeños desarrolladores y desarrolladoras no tendrán problemas por
el coste del desarrollo de software.
Es un entorno de diseño multiplataforma que se adapta fácilmente a sus
necesidades específicas en todas las fases del diseño de FPGA y CPLD. El
software Quartus II ofrece la productividad y el rendimiento más altos para los
FPGA, CPLD y Hardcopy ASIC de Altera.
El software Quartus II ofrece síntesis y colocación y enrutamiento superiores, lo
que resulta en ventajas de tiempo de compilación.
Las características de reducción de tiempo de compilación incluyen:
- Soporte multiprocesador.
- Re compilación rápida.
-Re compilación incremental.
8
4. Obtención e Instalación del software.
ModelSim:
Para la descarga del software ModelSim es necesario entrar a este sitio:
http://dl.altera.com/13.0/?
edition=subscription&product=modelsim_ae&download_manager=direct&platform=
windows#tabs-2 .Donde nos encontraremos una página similar a la siguiente:
9
Figura 4.2: Cuadro de descarga
11
Para descarga el software de la pagina oficial de altera se puede hacer mediante
el siguiente enlace: https://www.altera.com/downloads/download-center.html donde
se nos mostrara algo similar a lo siguiente:
Una vez dentro debemos desplazarnos hacia abajo donde nos encontraremos un
cuadro titulado “Software Selector” donde debemos ubicarnos en la pestaña
titulada “Select by version” donde debemos buscar la versión que deseemos
descargar, en este caso la versión 13.0 service pack 1 y luego presionar la versión
web.
Una vez seleccionada la versión web del programa se nos presentara una pantalla
similar a la siguiente, donde debemos seleccionar el sistema operativo y el método
12
13
15
17
Paso 3: se abre el ModelSim y se crea un nuevo proyecto importando los datos
del Quartus II
Paso 4: se comienza a crear las interacciones de esta manera y sucesivamente:
Así sería la interacción 0 Así sería la interacción 5 Así sería la interacción 9
Interacción 0 1 2 3 4 5 6 7 8 9
18
1.3 Diseñe una red lógica con varias salidas, cuya entrada sea un digito BCD y
cuyas salidas se definen como sigue: f1 detecta los dígitos de entrada divisibles
entre 4; f2 detecta los números mayores o iguales a 3; f3 detecta los números
menores que 7.
Paso 1: Obtener una tabla de verdad a partir del enunciado del problema.
Puesto que el enunciado nos dice claramente cuáles serán las entradas, sabemos
que un digito en BCD está compuesto por 4 bits, en este caso tendremos 4
entradas A, B,C y D que representaran cada uno de los bits del BCD 8421,
además nos especifica 3 salidas f1, f2 y f3, donde serán los dígitos divisibles entre
4, mayores o iguales a 3 y menores que 7 respectivamente.
Tabla de verdad obtenida del problema:
Entradas Salidas
A B C D f1 f2 f3
0 0 0 0 0 0 0 1
1 0 0 0 1 0 0 1
2 0 0 1 0 0 0 1
3 0 0 1 1 0 1 1
4 0 1 0 0 1 1 1
5 0 1 0 1 0 1 1
6 0 1 1 0 0 1 1
7 0 1 1 1 0 1 0
8 1 0 0 0 1 1 0
9 1 0 0 1 0 1 0
19
Figura 1 Ejercicio 1.3: Código VHDL
20
Figura 3 Ejercicio 1.3: Grafico 1 obtenido en ModelSim
21
1.4 Las normas de seguridad de los aviones moderno exigen que, para señales de
vital importancia para la seguridad del aparato, los circuitos deben estar triplicados
para que el fallo de uno de ellos no produzca una catástrofe. En caso de que los
tres circuitos no produzcan la misma salida, esta se escogerá mediante votación.
Diseñe el circuito “votador” que se ha de utilizarse para obtener como resultado el
valor mayoritario de las tres entradas.
Paso 0: analizar el problema y entender lo que nos dice el enunciado
El problema nos dice que un sistema de seguridad de circuitos triplicados debe de
fallar 3 veces, entonces cuando esto suceda, se somete a votación y como nos
dice el valor mayoritario se entiende que de las votaciones debe de ser mayor o
igual a dos
Paso 1: hacer la tabla de verdad y ver cuales cumplen con los requisitos de
nuestro problema
22
Paso 3: se abre el ModelSim y se crea un nuevo proyecto importando los datos
del Quartus II
Paso 4: se comienza a crear las interacciones de esta manera y sucesivamente:
Interacción 0 1 2 3 4 5 6 7
23
6.Observaciones
24
7. Preguntas de Investigación
7.3 Uso de las instrucciones IF… THEN y CASE… WHEN para implementar el
código VHDL directamente de las tablas de verdad.
25
Ejemplo: IF…THEN.
El siguiente ejemplo es sobre un circuito que dé como salida 1 cuando el código
BCD de entrada sea un numero decimal impar.
La tabla de verdad es la siguiente:
A B C Y
0 0 0 0 0
1 0 0 1 1
2 0 1 0 0
3 0 1 1 1
4 1 0 0 0
5 1 0 1 1
6 1 1 0 0
7 1 1 1 1
26
Figura 7. 4 Grafico generado en modelSim sobre el ejemplo de IF… THEN
Ejemplo: CASE… WHEN.
Retomaremos el problema anterior, pero con la variante que se codificará
utilizando la instrucción CASE… WHEN por lo que la tabla de verdad será la
misma:
A B C Y
0 0 0 0 0
1 0 0 1 1
2 0 1 0 0
3 0 1 1 1
4 1 0 0 0
5 1 0 1 1
6 1 1 0 0
7 1 1 1 1
Como utilizaremos sentencias diferentes para nuestro código VHDL nos quedara
de la siguiente manera:
27
Figura 7. 6: Grafico obtenido de la simulación del ejemplo sobre CASE… WHEN
a) Escalares
- integer
- floating point
- enunmerated
- physical
b) Compuestos
- array
- record
c) Punteros
- Access
d) Archivos
- file
28
TYPE nombre_tipo IS ARRAY (especificación) OF tipo_dato;
SIGNAL nombre_señal: nombre_tipo [:= valor_inicial];
CONSTANT nombre_señal: nombre_tipo [:=valor_inicial];
VARIABLE nombre_señal: nombre_tipo [:=valor_inicial];
Ejemplos:
TYPE row IS ARRAY (7 downto 0) OF STD_LOGIC;-- arreglo 1D
TYPE matrix IS ARRAY (0 TO 3) OF row; -- arreglo 1Dx1D
SIGNAL x: matrix[:”0001”] ; --para arreglo 1D
--Otra forma de hacer lo mismo del código mostrado arriba
TYPE matrix IS ARRAY (0 TO 3) OF STD_LOGIC_VECTOR(7 DOWNTO 0);
A) Tipo escalar
B) 1D
C) 1Dx1D
D) 2D
ENTITY compuertaNOR IS
PORT (
a,b :IN BIT;
x :OUT BIT
);
END compuertaNOR;
29
END CompuertaNORhecha;
o not
o and
o nand
o or
o nor
o xor
o xnor
Relaciones
o = (igual)
o /= (diferente)
o < (menor)
o > (mayor)
Aritméticos
o + (adición)
o - (sustracción)
o * (multiplicación)
o / (división)
30
o rem (resto de a/b con el signo de a)
Misceláneos
o ** (exponencial)
Signo (unarios)
o +
o –
o shift_right
o shift_left
Concatenación
o &
31
8. Conclusiones
32
Bibliografía:
33