Sie sind auf Seite 1von 103

Aspectos Introductorios:

Memorias.

Sistemas Digitales II – SDI112


Instituto de Investigación e
Innovación en Electrónica - IIIE.
UNIDAD I: INTRODUCCIÓN AL
DISEÑO DIGITAL.
Objetivos:
• Comprender la funcionalidad de la sentencia CASE.
• Conocer la tarjeta CYCLONE III y el entorno de
programación de Quartus II.
• Conocer la sintaxis de memorias RAM y ROM.
• Utilizar herramientas de ofimática y MATLAB para
facilitar el uso de conversiones, codificaciones para el
diseño de sus circuitos en VHDL.

Kelman Belloso UDB – IIIE – SDI112 2


Agenda.

UNIDAD I: INTRODUCCIÓN AL DISEÑO DIGITAL.


• 1.5.4 Sentencia CASE.
• 1.5.5 Cyclone III.
• 1.5.6 Circuito esquemático en Quartus II y simulación con
University Program File (VWF).
• 1.5.7 Utilización de MegaCores en Quartus II.

Kelman Belloso UDB – IIIE – SDI112 3


Agenda.
UNIDAD II: TECNOLOGÍA DE IMPLEMENTACIÓN.
• 2.1 Memorias.
• 2.1.1 Memorias: Expansión de datos.
• 2.1.2 Memorias: Expansión de capacidad.
• 2.1.3 Memorias: Expansión de memorias.
• 1.2.4.4 Clasificación: Clases - Declaración de FILE.
• 2.1.4 Memorias: ROM.
• 2.1.4.1 Memorias: ROM – Hoja de cálculo
• 2.1.4.2 Memorias: ROM – MATLAB
• 2.1.5 Memorias: RAM.
• 2.1.6 Ejercicios
Kelman Belloso UDB – IIIE – SDI112 4
1.5.4 Sentencia CASE.

Kelman Belloso UDB – IIIE – SDI112 5


1.5.4 Sentencia Case

Kelman Belloso UDB – IIIE – SDI112 6


1.5.4 Sentencia Case
 El valor de <selector_expression> se utiliza para
seleccionar qué instrucciones se ejecutarán; y puede
ser una señal, variable, cualquier tipo discreto: entero o
enumerado, o un arreglo.

 Las <opciones = choice> son valores que se comparan


con el valor de la expresión <selector_expression>.

 Debe haber exactamente una opción para cada valor


posible de <selector_expression> (mutuamente
excluyente).

Kelman Belloso UDB – IIIE – SDI112 7


1.5.4 Sentencia Case
• La instrucción case encuentra la rama que exactamente
tiene el mismo valor de selección que
<selector_expression> y ejecuta las sentencias en esa
rama.

• El tipo de cada opción debe ser del mismo tipo que el


tipo resultante de la <selector_expression>.

• Se pueden incluir más de una opción en cada rama


escribiendo las opciones separadas por el símbolo "|"
(se puede leer como "o").

Kelman Belloso UDB – IIIE – SDI112 8


1.5.4 Sentencia Case
• La opción [when <choice_n to/downto choice_m>
especifica un rango discreto de valores. Si el valor de
<selector_expression> coincide con cualquiera de los
valores del rango, las sentencias en la rama se ejecutan.
Esta opción sólo se puede utilizar si la
<selector_expression> es de tipo discreto.

Kelman Belloso UDB – IIIE – SDI112 9


1.5.4 Sentencia Case
• La opción especial others se utiliza para manejar todos
los valores posibles de <selector_expression> no
mencionados en las alternativas anteriores.

• Si se incluye, sólo debe haber una rama que utilice la


opción others, y debe ser la última alternativa en la
instrucción case.

Kelman Belloso UDB – IIIE – SDI112 10


1.5.4 Sentencia Case

Kelman Belloso UDB – IIIE – SDI112 11


1.5.4 Sentencia Case

Kelman Belloso UDB – IIIE – SDI112 12


1.5.4 Sentencia Case

Kelman Belloso UDB – IIIE – SDI112 13


1.5.4 Sentencia Case

Kelman Belloso UDB – IIIE – SDI112 14


1.5.4 Sentencia Case

Kelman Belloso UDB – IIIE – SDI112 15


1.5.4 Sentencia Case

Kelman Belloso UDB – IIIE – SDI112 16


1.5.5 Cyclone III.

Kelman Belloso UDB – IIIE – SDI112 17


1.5.5 Cyclone III

Kelman Belloso UDB – IIIE – SDI112 18


1.5.5 Cyclone III

Kelman Belloso UDB – IIIE – SDI112 19


1.5.5 Cyclone III

Kelman Belloso UDB – IIIE – SDI112 20


1.5.5 Cyclone III

Kelman Belloso UDB – IIIE – SDI112 21


1.5.5 Cyclone III

Kelman Belloso UDB – IIIE – SDI112 22


1.5.5 Cyclone III

Kelman Belloso UDB – IIIE – SDI112 23


1.5.5 Cyclone III

Kelman Belloso UDB – IIIE – SDI112 24


1.5.5 Cyclone III

Kelman Belloso UDB – IIIE – SDI112 25


1.5.5 Cyclone III

Kelman Belloso UDB – IIIE – SDI112 26


1.5.5 Cyclone III

Kelman Belloso UDB – IIIE – SDI112 27


1.5.5 Cyclone III

Kelman Belloso UDB – IIIE – SDI112 28


1.5.5 Cyclone III

Kelman Belloso UDB – IIIE – SDI112 29


1.5.6 Circuito esquemático en
Quartus II y simulación con
University Program File (VWF).

Kelman Belloso UDB – IIIE – SDI112 30


1.5.6 Circuito esquemático en Quartus II y
simulación con University Program VWF
(VWF: Vector Waveform File).
 Creating a Waveform Simulation for Intel
(Altera) FPGAs (Quartus version 13 and
newer) (Sec 4-4B ):
https://www.youtube.com/watch?v=a8JAkK
hxlQI
 En Quartus II, dé clic izquierdo en: File >>
New (o presione Ctrl + N).

Kelman Belloso UDB – IIIE – SDI112 31


1.5.7 Utilización de MegaCores
en Quartus II.

Kelman Belloso UDB – IIIE – SDI112 32


1.5.7 Utilización de MegaCores en
Quartus II.
 Tutorial Creating RAM Memory Quartus II Altera:
https://www.youtube.com/watch?v=1nhTDOpY5gU

Kelman Belloso UDB – IIIE – SDI112 33


2.1 Memorias.

Kelman Belloso UDB – IIIE – SDI112 34


2.1 Memorias
 La capacidad de una memoria es independiente del tipo de
memoria (RAM, ROM, FLASH, etc.) se define por la cantidad
de pines de direcciones y datos que tenga el integrado
(memoria):

Kelman Belloso UDB – IIIE – SDI112 35


2.1 Memorias
 Ambas figuras son igualmente equivalentes

Kelman Belloso UDB – IIIE – SDI112 36


2.1 Memorias
 Cuál es la capacidad de la memoria mostrada a continuación

Kelman Belloso UDB – IIIE – SDI112 37


2.1 Memorias
 Capacidades grandes resumidas (abreviadas):

Kelman Belloso UDB – IIIE – SDI112 38


2.1 Memorias
 ROM: Read Only Memory (Memoria solo de lectura, de
fabrica se pre-guardan los datos que se leerán en el circuito
donde se conecte), ejemplo el firmware o acciones de un
programa de una máquina industrial del cual el inventor de la
misma tiene patentado dicho código.

 RAM: Random Access Memory (Memoria de acceso


aleatorio, por lo cual se puede escribir o leer en cualquier
momento, por lo general es una memoria de tipo volátil quiere
decir que los datos se pueden perder si se retira la
alimentación.

Kelman Belloso UDB – IIIE – SDI112 39


2.1.1 Memorias: Expansión de datos

 Expansión de datos
(tamaño de palabra).

Kelman Belloso UDB – IIIE – SDI112 40


2.1.2 Memorias: Expansión de capacidad

 Expansión de la capacidad
IC1
(cantidad de pines de
dirección, por ende
cantidad de localidades).

IC2

Kelman Belloso UDB – IIIE – SDI112 41


2.1.2 Memorias: Expansión de capacidad
 Expansión de capacidad (Pines de dirección).

Integrado
A10 A9 – A0
habilitado
0 00 0000 0000 IC1
0 ….. IC1
0 11 1111 1111 IC1
1 00 0000 0000 IC2
1 ….. IC2
1 11 1111 1111 IC2

Kelman Belloso UDB – IIIE – SDI112 42


2.1.3 Memorias: Expansión de memorias
 Generar una memoria ROM de 4k x 12, con integrados de 1k x 4.

Kelman Belloso UDB – IIIE – SDI112 43


2.1.3 Memorias: Expansión de memorias

1k x 12

4k x 4

Kelman Belloso UDB – IIIE – SDI112 44


2.1.3 Memorias: Expansión de memorias
 Empleando componentes de memoria ROM 2Kx8, de memoria
RAM 1Kx4, realice los decodificadores de memoria para acceder
al siguiente mapa de memoria:

8 bits
Kelman Belloso UDB – IIIE – SDI112 45
2.1.3 Memorias: Expansión de memorias
Memoria ROM:
 Cálculo de la capacidad: 02FFFh – 01000h + 1 = 1FFFh o 8192
direcciones (8192/1024 = 8K).
 Se requieren 4 componentes de 2K (2048 direcciones) para una
capacidad de 8K.
 Cada uno maneja 11 líneas de direcciones (2048=2^11).
 Las líneas A0 – A10 seleccionarán las 2048 localidades en cada
memoria (componente - ROM 2Kx8).

Kelman Belloso UDB – IIIE – SDI112 46


2.1.3 Memorias: Expansión de memorias

 Las líneas A13 – A11 seleccionan las secciones de 2K de cada


componente.
 Por tratarse de memorias de sólo lectura, no se utilizarán pines de
habilitación de escritura/lectura' (W/R').

Kelman Belloso UDB – IIIE – SDI112 47


2.1.3 Memorias: Expansión de memorias

¿Podrían decir el rango de direcciones para


cada memoria de 2K?

Kelman Belloso UDB – IIIE – SDI112 48


2.1.3 Memorias: Expansión de memorias
Memoria RAM:
 Cálculo de la capacidad: 037FFh – 03000h + 1 = 800h o 2048
direcciones (2048/1024 = 2K).
 Se requieren 2 componentes de 1K para formar una capacidad de
2K. Sin embargo, éstos sólo almacenan 4 bits por dirección (RAM
1Kx4), por lo que se deben colocar 2 componentes adicionales por
banco (en paralelo con las líneas de dirección) para almacenar 8
bits por dirección.
 Cada uno maneja 10 líneas de direcciones (1024=2^10), con los
pines A9 – A0.

Kelman Belloso UDB – IIIE – SDI112 49


2.1.3 Memorias: Expansión de memorias

 La línea A10 selecciona las secciones de 1K de cada componente.


 W/R' permitirá seleccionar la escritura/lectura de los bancos de
memoria.

Kelman Belloso UDB – IIIE – SDI112 50


2.1.3 Memorias: Expansión de memorias

¿Podrían decir el rango de direcciones para cada


bloque de memoria de 1K?

Kelman Belloso UDB – IIIE – SDI112 51


2.1.3 Memorias: Expansión de memorias
 Realice un decodificador de memoria para el siguiente sistema,
considerando que dispone de componentes de memoria RAM de
4Kx8, y ROM de 16Kx8 requiere el siguiente mapa de memoria:

16 bits
Kelman Belloso UDB – IIIE – SDI112 52
2.1.3 Memorias: Expansión de memorias
Memoria RAM:
 Cálculo de la capacidad: 0DFFFh – 0A000h + 1 = 4000h ó 16384
direcciones (16384/1024 = 16K).
 Se requieren 4 componentes de 4K (4096 direcciones) para una
capacidad de 16K. IC utilizables: 4Kx8.
 Cada uno maneja 12 líneas de direcciones (4096=212).
 Las líneas A11 – A0 seleccionarán las 4096 localidades en los
componentes.

16 bits

Kelman Belloso UDB – IIIE – SDI112 53


2.1.3 Memorias: Expansión de memorias
16 bits

 Las líneas A14 – A12 seleccionan las secciones de 4K de cada


componente.
 W/R' permitirá seleccionar la escritura/lectura de los bancos de
memoria.

Kelman Belloso UDB – IIIE – SDI112 54


2.1.3 Memorias: Expansión de memorias

¿Podrían decir el rango de direcciones para


cada memoria de 4K?

Kelman Belloso UDB – IIIE – SDI112 55


2.1.3 Memorias: Expansión de memorias

¿Podrían decir el rango de direcciones para


cada memoria de 4K?

Kelman Belloso UDB – IIIE – SDI112 56


2.1.3 Memorias: Expansión de memorias
Memoria ROM:
 Cálculo de la capacidad: 09FFFh – 02000h + 1 = 08000h ó
32768 direcciones (32768/1024 = 32K).
 Se requieren 2 componentes de 16K (16384 direcciones) para
una capacidad de 32K. Cada uno maneja 14 líneas de direcciones
(16384=214). IC utilizables: 16Kx8.
 Las líneas A13 – A0 seleccionarán las 16384 localidades en los
componentes. Sin embargo, no todas presentan una variación de
sus bits desde 0 hasta 1 (ver A13), sino únicamente desde A12
hasta A0.

16 bits

Kelman Belloso UDB – IIIE – SDI112 57


2.1.3 Memorias: Expansión de memorias
16 bits

 Las líneas A15 – A13 seleccionan las secciones de 8K de cada


componente.
 Por tratarse de memorias de sólo lectura, no se utilizarán pines de
habilitación de escritura/lectura' (W/R').

Kelman Belloso UDB – IIIE – SDI112 58


2.1.3 Memorias: Expansión de memorias

¿Podrían decir el rango de direcciones para


cada memoria de 16K?

Kelman Belloso UDB – IIIE – SDI112 59


2.1.3 Memorias: Expansión de memorias

¿Podrían decir el rango de direcciones para


cada memoria de 16K?

Kelman Belloso UDB – IIIE – SDI112 60


Recordando la sección:
1.2.4 Clasificación: Objetos de datos.
Cada objeto de datos tiene un tipo y una clase.
• La clase indica que se puede hacer con el objeto de
datos.
• Los tipos indican que tipos de datos son albergados
por el objeto de datos.

Kelman Belloso UDB – IIIE – SDI112 61


1.2.4.4 Clasificación: Clases -
Declaración de FILE.
• Esta clase (File) de declaración de objeto sirve para
crear un tipo (booolean, std_logic, etc.) de archivo que
no existe dentro del tipo estándar VHDL.

• La sintaxis para la declaración de objetos (clase File) es:

• La sintaxis contiene el nombre escogido para


representar y el tipo de datos contenidos en el archivo
(sólo un tipo de datos es permitido).

Kelman Belloso UDB – IIIE – SDI112 62


1.2.4.4 Clasificación: Clases -
Declaración de FILE.
• Ejemplos:
1)

2)

Kelman Belloso UDB – IIIE – SDI112 63


1.2.4.4 Clasificación: Clases -
Declaración de FILE.
• Ejemplos:
3)

Kelman Belloso UDB – IIIE – SDI112 64


2.1.4 Memorias: ROM

Kelman Belloso UDB – IIIE – SDI112 65


2.1.4 Memorias: ROM
 Crea un tipo de datos multidimensional para almacenar
valores
 Debe crear: constantes, señales o variables de ese tipo.
 Se utiliza para crear memorias y guardar vectores en
simulación
 Declaración de arreglo tipo de matriz:

Kelman Belloso UDB – IIIE – SDI112 66


2.1.4 Memorias: ROM

Kelman Belloso UDB – IIIE – SDI112 67


2.1.4 Memorias: ROM
 Implementar una memoria ROM de 6 pines de
dirección, 8 bits de datos, con habilitador de lectura.
Se almacenará el mensaje: UDB – IIIE, FPGA
Spartan-6-LX9-MicroBoard.

Kelman Belloso UDB – IIIE – SDI112 68


2.1.4.1 Memorias: ROM – Hoja de cálculo
 Función caracter de Excel:

=DEC.A.HEX(J3) = CARACTER(J3)

51

Kelman Belloso UDB – IIIE – SDI112 69


2.1.4.1 Memorias: ROM – Hoja de cálculo
 Función caracter de Excel:

Kelman Belloso UDB – IIIE – SDI112 70


2.1.4.1 Memorias: ROM – Hoja de cálculo
 Función realizada en Hoja de cálculo.

Kelman Belloso UDB – IIIE – SDI112 71


2.1.4.2 Memorias: ROM – MATLAB
 Función realizada en Matlab

 Ejemplo de utilización:
F=ascii2rom('UDB – IIIE, FPGA Spartan-6-LX9-MicroBoard')

Kelman Belloso UDB – IIIE – SDI112 72


2.1.4.2 Memorias: ROM – MATLAB
 Copiamos el contenido de F y lo pegamos sobre el código
VHDL

0=>x"55",1=>x"44",2=>x"42",3=>x"20",4=>x"96",5=>x"20",6=>x"49",7
=>x"49",8=>x"49",9=>x"45",10=>x"2C",11=>x"20",12=>x"46",13=>x"50
",14=>x"47",15=>x"41",16=>x"20",17=>x"53",18=>x"70",19=>x"61",20=
>x"72",21=>x"74",22=>x"61",23=>x"6E",24=>x"2D",25=>x"36",26=>x"
2D",27=>x"4C",28=>x"58",29=>x"39",30=>x"2D",31=>x"4D",32=>x"69
",33=>x"63",34=>x"72",35=>x"6F",36=>x"42",37=>x"6F",38=>x"61",39
=>x"72",40=>x"64",others=>x"FF"

Kelman Belloso UDB – IIIE – SDI112 73


2.1.4 Memorias: ROM - VHDL

Kelman Belloso UDB – IIIE – SDI112 74


2.1.4 Memorias: ROM - VHDL

Kelman Belloso UDB – IIIE – SDI112 75


2.1.4 Memorias: ROM - VHDL

Kelman Belloso UDB – IIIE – SDI112 76


2.1.4 Memorias: ROM.

Kelman Belloso UDB – IIIE – SDI112 77


2.1.4 Memorias: ROM - TB.

Kelman Belloso UDB – IIIE – SDI112 78


2.1.4 Memorias: ROM.

Kelman Belloso UDB – IIIE – SDI112 79


2.1.4 Memorias: ROM - Ejercicio.
Instanciar el ejemplo KBH006_LX9_Count_1Hz con el
ejemplo KBH005_LX9_ROM.

 Se parte de la idea que se poseen ambos archivos y


estos se guardarán en la carpeta del proyecto recién
creado.

Kelman Belloso UDB – IIIE – SDI112 80


2.1.4 Memorias: ROM - Ejercicio.

Kelman Belloso UDB – IIIE – SDI112 81


2.1.4 Memorias: ROM - Ejercicio.

Kelman Belloso UDB – IIIE – SDI112 82


2.1.4 Memorias: ROM - Ejercicio.

Kelman Belloso UDB – IIIE – SDI112 83


2.1.4 Memorias: ROM - Ejercicio.

Kelman Belloso UDB – IIIE – SDI112 84


2.1.4 Memorias: ROM - Ejercicio.

Kelman Belloso UDB – IIIE – SDI112 85


2.1.4 Memorias: ROM - Ejercicio.

Out_Count

Kelman Belloso UDB – IIIE – SDI112 86


2.1.5 Memorias: RAM.

Kelman Belloso UDB – IIIE – SDI112 87


2.1.5 Memorias: RAM.

Kelman Belloso UDB – IIIE – SDI112 88


2.1.5 Memorias: RAM.

Kelman Belloso UDB – IIIE – SDI112 89


2.1.5 Memorias: RAM - TB.

Kelman Belloso UDB – IIIE – SDI112 90


2.1.5 Memorias: RAM.

Kelman Belloso UDB – IIIE – SDI112 91


2.1.5 Memorias: RAM - TB.

Kelman Belloso UDB – IIIE – SDI112 92


2.1.5 Memorias: Generar señales.

Kelman Belloso UDB – IIIE – SDI112 93


2.1.5 Memorias: Generar señales.
MATLAB function

Kelman Belloso UDB – IIIE – SDI112 94


2.1.5 Memorias: Generar señales.

Kelman Belloso UDB – IIIE – SDI112 95


2.1.5 Memorias: Generar señales.

Como correr la función en MATLAB:

Kelman Belloso UDB – IIIE – SDI112 96


2.1.6 Ejercicios.
 Utilizar la función de Matlab para producir cuatro
señales distintas en memorias ROM, colocar un
DAC0808 con su respectivo convertidor I – V, para
visualizar los datos de la memoria instanciada por medio
de un contador binario que vaya de la dirección mínima
a la máxima que posee la memoria.
 Realice código VHDL para reproducir audio guardado
en una memoria (duración del audio de al menos 1 min).
 Realice un código VHDL tomando la idea del ejercicio
anterior para reproducir datos de señales biométricas por
ejemplo ECG.

Kelman Belloso UDB – IIIE – SDI112 97


2.1.6 Ejercicios.

 Desarrolle una memoria ROM de 128x8, el cual se


mostrará en un display matricial DLG2416 con el
mensaje:
Universidad Don Bosco - Sistemas digitales 2 –
SDI112

 Desarrolle una memoria RAM de 1k x 4, desarrolle la


instanciación para lograr tener memorias RAM de 4k x
8.

Kelman Belloso UDB – IIIE – SDI112 98


2.1.6 Ejercicios.

• Desarrolle una memoria ROM de 128x8 con el


mensaje:
Instituto de investigación e Innovación en
Electrónica
• Desarrolle una memoria ROM de 256x12, guarde el
contenido de las combinaciones del ejercicio del
display matricial.

Kelman Belloso UDB – IIIE – SDI112 99


Bibliografía.

Kelman Belloso UDB – IIIE – SDI112 100


Bibliografía
 Creating a Waveform Simulation for Intel (Altera)
FPGAs (Quartus version 13 and newer) (Sec 4-4B ):
https://www.youtube.com/watch?v=a8JAkKhxlQI
 Tutorial Creating RAM Memory Quartus II Altera:
https://www.youtube.com/watch?v=1nhTDOpY5gU
 http://ocw.uc3m.es/tecnologia-electronica/electronica-
digital/espanol_pdf/tema-8.-memorias
 Quartus II 13 0 FPGA:
https://www.youtube.com/watch?v=aAYBlfCCt5I
 Creating a Schematic Design for Intel (Altera)
FPGAs (Sec 4-4A ):
https://www.youtube.com/watch?v=oVvmeyVMtEI
Kelman Belloso UDB – IIIE – SDI112 101
Bibliografía
 https://www.altera.com/customertraining/webex/Begin_Si
mple_FPGA_Design/presentation_content/WebObjects/1a
e7c217-69c2-4aaf-b693-f3737956013b/index.html
 https://www.youtube.com/user/alteracorp
 https://www.altera.com/content/dam/altera-
www/global/en_US/pdfs/literature/tt/tt_my_first_fpga.pdf
 Circuit Design with VHDL(Pedroni MIT 2004).pdf
 Fundamentos de logica digital, con diseno VHDL -
Stephen Brown, Zvonko Vranesic - 2da Ed.pdf

Kelman Belloso UDB – IIIE – SDI112 102


Muchas Gracias por su atención.

Kelman Belloso UDB – IIIE – SDI112 103

Das könnte Ihnen auch gefallen