Post on 27-Jan-2016
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
1
REV 010 -2009
LABORATORIO DE MICROPROCESADORES
Daniel A Jacoby
jacoby@itba.edu.ar
Marzo 2009
Instituto Tecnológico de Buenos aires
Uso del editor grafico de Altera (Quartus II)
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
2
Introducción
El propósito de este documento es ayudar a familiarizarse con el uso del editor grafico de Altera que forma parte del ambiente de desarrollo del Quartus II.
Iniciaremos creando un archivo esquemático partiendo desde cero. Para empezar creamos un proyecto nuevo usando el Project Wizard
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
3
1- Start Project Wizard
El primer paso es iniciar el “Project Wizard”
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
4
2- Crear una carpeta
Crear una carpeta y un nombre para el proyecto
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
5
3- Agregar archivos de diseño adicionales
Agregar archivos y librerías al proyecto
Este paso se puede ignorar y solo tiene sentido si se quiere usar material de diseños previos o de terceros
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
6
4- Selección del dispositivo
Se debe seleccionar el dispositivo indicado que es el que usa la placa Cyclone
Nota: Lo único que puede llegar a diferir es la velocidad
Actualmente se usara el dispositivo:
EP1C6T144C6
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
7
5- Selección de Herramientas adicionales de diseño
Con este cuadro se seleccionan herramientas adicionales de diseño (EDA: Electronic Design Automation) como ser Leonardo Spectrum ,synplify o modelsim.
En nuestro caso no seleccionamos ninguna
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
8
6- Resumen de las opciones seleccionadas
Con este cuadro se visualizan las opciones elegidas de manera que si alguna no corresponde con lo deseado se puede volver a modificar (Back)
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
9
7- Adicionar un esquemático al proyecto
21
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
10
8- Guardar el archivo
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
11
Herramientas de dibujo
La Barra de herramientas contiene herramientas comunes como ser escritura de texto, zoom , rotación , espejado (flip), dibujar líneas , figuras y pantalla completa.
La herramienta principal para realizar un esquemático es la de selección y dibujo asistido esta herramienta realiza diferentes operaciones dependiendo del contexto.
Dos operaciones principales se realizan mediante esta herramienta: selección de objetos y interconexión de símbolos lógicos. El “symbol tool” nos permite colocar elementos de la librería existente o de nuestros propios archivos. Las tres herramientas ortogonales nos permiten conectar objetos entre si. La herramienta banda elástica (rubberband) nos permite mantener las conexiones entre objetos cuando esta activa. Se verán ejemplos de uso de todas estas herramientas en las siguientes paginas
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
12
Inserción de Símbolos Lógicos
Existen dos formas de insertar símbolos lógicos
Usando el botón de la barra de herramientas :
O haciendo doble click en un punto no usado de esquemático
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
13
Inserción de Símbolos Lógicos
Expandiendo el árbol podemos encontrar diferentes categorías de componentes.
Todas las compuertas básicas , flipflops y conectores de entrada y salida se pueden encontrar dentro de la librería de primitivas.
Dentro de others podemos encontrar componentes heredados de la librería maxplus ( versión previa al Quartus II) asi como varios componentes de la familia 74XX (TTL). Esto ultimo es de especial interés para convertir viejos diseños basados en esta familia a su equivalente lógico en una FPGA. Finalmente estan las mega-funciones provistas por altera. Estas ultimas son bloques de mediana y alta complejidad provistos por Altera
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
14
Inserción de Símbolos Lógicos
Vamos a empezar colocando una compuerta AND en nuestro esquemático.
Para lo cual expandimos el árbol y hacemos un click con el mouse sobre el nombre del componente.
La opción repeat insert mode nos permite crear múltiples instancias del componente.
Una vez seleccionadas las opciones presionamos OK.
Si no se va hacer ningún cambio hacemos directamente dobleclick sobre el nombre del componente.
Con ESC finalizamos este modo
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
15
Inserción de Símbolos Lógicos
Acá creamos 3 instancias del componente observar como cada instancia tiene un nombre distinto (inst ,inst1, inst2)
El nombre de cada instancia es usado solo como referencia en lo archivos de netlist y reportes
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
16
Operaciones Básicas
Para seleccionar objetos en el editor Grafico simplemente hacemos click sobre los símbolos con la herramienta de selección
Podemos seleccionar múltiples objetos haciendo CTRL + Click mientras se seleccionan los símbolos o bien dibujando un área rectangular que incluya los objetos que se desean seleccionar.
Para deseleccionar se debe hacer click con el Mouse sobre un área vacía
Para mover un símbolo hacer drag del mismo ( botón izq + desplazamiento del mouse)
Para copiar un símbolo se puede usar el menú contextual al clickear el objeto o bien la tecla CTRL + Drag
Para eliminar un objeto seleccionarlo primero y luego presionar DEL o usar el menú contextual.
Se puede rotar un símbolo usando la opción para rotar del menú de contexto o las herramientas rotación en el caso de que la cantidad a rotar sea múltiplos de 90 grados
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
17
Interconexión de objetos
Para interconectar dos objetos usar la herramienta de selección y realizar un drag de un punto de conexión al otro. Nótese que la flecha cambia a cruz cuando se esta sobre el punto de conexión
Para cambiar la dirección en la que se esta dibujando un cable soltar el botón del Mouse y presionarlo nuevamente continuando así en la nueva dirección
Una forma alternativa de conectar dos componentes es acercar un componente al otro de manera que los puntos de conexión se toquen soltar el botón del mouse y luego alejar (drag) uno de los componentes del otro. La conexión se realizara en forma automática (rubber banding debe estar activo).
Para conectar un cable que no empieza en un punto de conexión se debe usar la herramienta ortogonal .
Una vez que un componente se encuentra conectado se puede mover dicho componente a otro lugar sin que se rompa la conecion (que se ajustara automáticamente) si se encuentra activa la herramienta de rubber band Caso contrario se romperá la conexión
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
18
Interconexión de objetos
Cuando se desea conectar dos líneas que se cortan se deberá usar la herramienta ortogonal y hacer un doble click en la unión para insertar un nodo (para removerlo se deberá volver a hacer doble click en la unión). No olvidar activar la herramienta ortogonal
Doble Click
Doble Click
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
19
Interconexión de objetos
Para seleccionar un segmento de una conexión basta con hacer click sobre el mismo. Si se efectúa un doble click se seleccionan todos los segmentos que forman la conexión.
Un solo click Doble click
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
20
Interconexión de objetos
Para seleccionar una porción de una conexión usar la herramienta de selección parcial seleccionando una área rectangular alrededor de la zona de interés (drag) todo lo que queda dentro de esta área puede ser eliminado
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
21
Interconexión de objetos (Buses)Para interconectar símbolos mediante buses usar la herramienta ortogonal para buses
Se Puede convertir una línea de un conductor a bus seleccionando el o los segmentos que la integran y usando el botón derecho seleccionar “Bus Line”. Si se desea convertir un bus en línea repetir la operación en forma idéntica pero seleccionando esta vez “Node Line”.
Se le pueden asignar nombres tanto a buses como a líneas seleccionando el bus (o línea) y luego seleccionando propiedades (del menú de contexto – (botón derecho)).
En el caso de los buses la sintaxis es: data[7..0].
En este caso tenemos un bus de 8 bits cuyo nombre es data
Si deseamos usar una línea del bus se debe usar el nombre del mismo agregando el índice: Ej: data2 o bien data[2]
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
22
Interconexión de objetos (Buses)Para comprobar que el nombre de un bus o línea fue ingresado correctamente seleccionar el bus o línea y verificar que el nombre también fue seleccionado.
Podemos verificar nuestras conexiones mediante el reporte de síntesis
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
23
Diseño Jerárquico
Antes de continuar borrar todos los componentes que se encuentren en schtut1.bdf
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
24
Diseño JerárquicoHabiendo finalizado con las herramientas básicas del editor vamos a concentrarnos en la etapa de diseño.
Todo diseño puede se mas o menos complejo lo importante es tener una herramienta que nos permita expresar nuestras ideas con facilidad. En general se inicia con una visión global de lo que se desea hacer. Posteriormente se divide el proyecto en unidades o bloques mas pequeños que forman un árbol jerárquico. Esto es lo mismo que se hace en lenguajes de programación. Dos practicas muy frecuentes se usan para llegar a este resultado son el diseño TOP-DOWN y BOTTOM-UP
En la implementación TOP-DOWN el diseñador tiene una visión global del proyecto dividiendo el mismo en partes mas pequeñas de esta manera el diseñador se puede concentrar mas en la estructura que en los detalles técnicos de los bloques que constituyen el diseño. Esos detalles pueden quedar por ahora indefinidos.
En la implementación BOTTOM-UP el diseñador se concentra el la implementación de bloques de menor nivel en la escala jerárquica integrando estos en estructuras de un nivel mas alto. De esta manera se pueden verificar el funcionamiento de cada bloque antes de construir el diseño completo.
Quartus II dispone de herramientas para seguir cualquiera de estos dos caminos o una mezcla de ellos.
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
25
Diseño JerárquicoBOTOM-UP
En Quartus II se pueden crear símbolos que representen a un modelo dado
Este modelo puede estar definido por un esquemático o un archivo en HDL (VHDL ,VERILOG o AHDL) según que descripción del modelo consideremos mas apropiada.
Por ejemplo podemos crear un símbolo para un sumador completo de un bit cuyo esquemático se muestra a continuación:
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
26
Diseño JerárquicoPara crear el símbolo se deben seguir los siguientes pasos:
1- Creamos un archivo esquemático donde dibujaremos el circuito cuyo nombre será: fadder.bdf
(File New block diagram / schematic file)
2- Dibujamos el circuito.
3- Creamos el símbolo
(File Create/Update Create symblol file for current file)
Una vez finalizado podemos ver el símbolo que representa nuestro nuevo componente en la librería del proyecto.
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
27
Diseño JerárquicoPodemos ahora insertar nuestro nuevo componente en un esquemático de la misma manera que lo hicimos con componentes ya existentes en la librería.
SCHTUT1.BDF
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
28
Diseño JerárquicoINFO: Cuando se generamos el símbolo se creo un archivo fadder.bsf que contiene la representación grafica de nuestro bloque. (bsf Block Symbol File)
Si deseamos podemos verlo seleccionando la opción “EDIT SELECTED SYMBOL” con el botón de contexto del Mouse.
Normalmente no es de mayor modificarlo así que lo podemos cerrar.
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
29
Diseño JerárquicoSi ahora hacemos doble click sobre el bloque obtendremos el esquemático que lo representa. De esta manera empezamos a generar nuestro primer nivel de abstracción encapsulando dentro de un símbolo un diseño de menor nivel cuyos detalles quedan ocultos detrás del símbolo.
Doble Click
SCHTUT1.BDFFADDER.BDF
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
30
Diseño Jerárquico (Navegación)Para volver al nivel superior ir al menú de proyecto y seleccionar la opción UP o directamente CTRL-U (y CTRL-D para volver a bajar)
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
31
Diseño JerárquicoSi hacemos una modificación en nuestro bloque como ser cambiar el circuito o modificar el nombre de un pin debemos regenerar el archivo grafico asociado. Recordemos que para hacer esto debemos hacer
(File Create/Update Create symblol file for current file)
Para que este cambio sea efectivo en el o los niveles superiores debemos actualizarlos símbolos en cada esquemático.
Para hacer esto seleccionamos el bloque y con el botón de contexto del Mouse seleccionar Update Symbol or Block.. Y luego la opción que corresponda
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
32
Diseño JerárquicoPodemos insertar tantas instancias de nuestro bloque como deseemos e interconectarlo con otros elementos por ejemplo con cuatro instancias tenemos un sumador completo de 4 bits
Vamos entonces a crear un archivo llamado Four_bit_ader.bdf y dibujar el siguiente circuito:
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
33
Diseño JerárquicoAhora podemos crear un nuevo componente basado en este ultimo circuito (Four_bit_ader.bdf) asi tenemos:
Insertemos este componente en schtut1.bdf
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
34
Diseño JerárquicoPodemos visualizar el árbol jerárquico con la solapa de jerarquia Esa vista del proyecto nos permite navegar y visualizar las dependencias cuando el proyecto es complejo
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
35
Diseño JerárquicoSi en lugar de un esquemático preferimos describir nuestro sumador en VHDL también podemos generar el BSF correspondiente. VHDL nos permite describir al sumador de diferentes maneras
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
36
Diseño JerárquicoOtra posible versión seria esta:
Vamos a adoptar esta versión y la guardamos como fadder.vhd u otro nombre. El primer paso es verificar que esta libre de errores
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
37
Diseño JerárquicoComo segundo paso generamos el bsf asociado (verificar que la ventana con el código fuente en vhdl este activa)
Para hacer esto repetimos la misma operación que en el caso del esquemático:
Y obtenemos:
(File Create/Update Create symblol file for current file)
(observar que el nombre de las señales es diferente en el caso del código VHDL y el esquemático así sabemos diferenciarlos esto es solo con fines didácticos )
FADDER.VHD
FADDER.BDF
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
38
Diseño JerárquicoImportante : Cada vez que se modifica el modelo ( SCH o HDL ) debemos regenerar el símbolo. Luego actualizar el bloque grafico en los esquemáticos que correspondan.
Finalmente a titulo informativo existe la posibilidad de generar un HDL a partir de un esquemático para esto hacer
File Create / Update Create HDL design file for current file (VHDL o Verilog)
Resumiendo:
Bottom-Up nos permite crear un diseño jerárquico partiendo del nivel mas bajo
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
39
Diseño Jerárquico
Top-DownQuartus II nos brinda una herramienta para diseñar con mas facilidad en el nivel jerárquico mas alto de nuestro proyecto. Esta herramienta es el editor de bloques + el smart mapper para crear diseños gráficos basados en bloques. Estos bloques inicialmente pueden ser cajas vacías representando bloques con código indefinido que están interconectados entre si. De esta manera se puede agregar , eliminar y reorganizar partes del diseño asta llegar a lo que uno desea
El editor de esquemático puede ser entones usado no solamente para dibujar estos últimos en la forma tradicional sino que además puede ser usado como un editor de un diagrama en bloques de nuestro diseño
Para empezar vamos a crear un esquemático nuevo en blanco (o borrar lo que había )
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
40
Diseño Jerárquico
Editor de bloquesVamos a crear un bloque usando la herramienta para tal fin
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
41
Diseño Jerárquico
Editor de bloquesPartes que componen al bloque
Nombre del bloque
Instancia
Tabla de I/O (Vacía pues aun
no definimos nada)
Simbolo
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
42
Diseño Jerárquico
Editor de bloquesVamos a crear un bloque que represente un sumador completo. Con el boton de contexto del Mouse elegimos “block properties” y cambiamos el nombre del bloque a Full_Adder.
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
43
Diseño Jerárquico
Editor de bloquesEn la solapa I/O Agregamos la entrada “A” de nuestro sumador como entrada
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
44
Diseño Jerárquico
Editor de bloquesAgregando las demás nos queda:
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
45
Diseño Jerárquico
Editor de bloquesSeleccionando OK nos queda el bloque y luego seleccionando la Opción AutoFit del menú de contexto podemos visualizar todas las entradas y salidas del bloque
AutoFit
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
46
Diseño Jerárquico
Editor de bloquesAhora vamos a asociar una entidad VACIA al bloque paqra lao cual en el menu de contexto seleccionamos “Create design File from selected block”
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
47
Diseño Jerárquico
Editor de bloquesComo resultado se genera el archivo FullAdder.VHD
(observar que la arquitectura esta vacia)
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
48
Diseño Jerárquico
Conduits y Smart MapperVamos a implementar un sumador completo de 4 bits para lo cual creamos 4 instancias del mismo. Para interconectarlas usaremos los llamados “Conduits” en lugar de buses.
Un conduit es in conector que conecta bloques a pines u otros bloques .Representa una colección no ordenada de señales que pueden tener un alias que las representa. Es similar a un cable canal usado en instalaciones eléctricas. Un conduit es distinto a un bus dado que por el conduit el numero de señales no es fija. Las señales provenientes de pines y de otras señales conectadas al mismo se propagan a lo largo de todo el conduit y se conectan a cualquier I/O de un bloque cuyo nombre coincida.
Se puede visualizar esta información en la tabla de conexiones disponible en las propiedades del conduit (solapa signals)
Conduit
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
49
Diseño Jerárquico
Conduits y Smart MapperEl nombre del conduit es un alias para la colección de señales y aparece sobre el conduit en la forma <<< alias name >>> .
El comportamiento de los conduit es el siguiente:
Los pines agregan automáticamente sus señales a un conduit si están en contacto con el.
Cuando se conectan bloques con conduits se realizara una conexión en forma automática entre cualquier señal cuyo nombre coincida con el del puerto I/O del bloque
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
50
Diseño Jerárquico
Conduits y Smart MapperCuando un conduit se conecta a un bloque se genera una tabla (mapper) que permite asociar los I/O del bloque con las señales en el conduit. Haciendo doble click sobre el tenemos:
Mapper
Defino que I/O
Se conecta con
Que señal del conduit
Defino el tipo de pin
In,Out o.Bidir
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
51
Diseño JerárquicoConduits y Smart Mapper
Ej: Hay dos señales A1 y B1 en el conduit como su nombre no coincide con los I/O del bloque debemos hacer el mapeo en forma manual no ocurre lo mismo con CIN cuya conexión con el bloque se realiza en forma automática (pues su nombre coincide).
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
52
Diseño JerárquicoSolo para fines didácticos vamos a completar nuestro proyecto de acuerdo a la siguiente figura:
Tener presente que la arquitectura del bloque todavía NO fue definida. Es muy ilustrativo hacer el análisis y síntesis del proyecto
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
53
Diseño JerárquicoLos resultados son los siguientes:
CIN = INPUT();
A1 = INPUT();
B1 = INPUT();
COUT = OUTPUT(GND);
S = OUTPUT(GND);
inst8 = B1 & A1;
TEST = OUTPUT(inst8);
Los dos primeros Warnings son consecuencia de que la arquitectura del Full_adder no esta definida aun. Lo mismo ocurre con el tercero dado que al no estar definida la arquitectura los pines de salida COUT y S no tienen drivers asociados (no hay ecuaciones definidas para cada pin) como consecuencia el compilador asigna valores por defecto a ambos (GND). El cuarto warning es consecuencia de lo mismo nos dice que la entrada CIN no esta conectada a ninguna lógica. Observar que esto ultimo no ocurre con A1 y A2 dado que si bien no hay arquitectura definida estas dos señales alimentan la compuerta “AND”. Observar que se puede simular el sistema aun estando ausente la definición del bloque Full_adder (Solo simulamos la compuerta).
Ecuaciones
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
54
Diseño JerárquicoLas señales en el conduit son globales y por lo tanto visibles fuera del conduit de manera que no es necesario una conexión directa al mismo. Observar la compuerta AND ahora conectada vía nombres (A1 , A2) (Connection by Name).
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
55
Diseño JerárquicoVamos completar el diseño creando un sumador completo de 4 bits. Para crear las 3 instancias restantes basta copiar y pegar (la numeración de instancias es automática).
Vamos a empezar a definir los pines de entrada y salida. Nótese que vamos a nombrar a los pines con el mismo nombre que los I/O del bloque de manera de hacer uso de la asociación automática de nombres.
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
56
Diseño JerárquicoAhora Iniciamos las conexiones de la parte de entrada empezando con CIN. Es interesante para aclarar conceptos remarcar la diferencia entre conectar usando un solo conductor (node) o un conduit. En el primer caso estamos obligados a nombrar el cable y realizar el mapeo. En el segundo caso todo es automático .
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
57
Diseño JerárquicoContinuamos con las demás entradas (vista parcial)
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
58
Diseño JerárquicoContinuamos con las demás entradas (Vista completa)
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
59
Diseño JerárquicoAhora continuamos con las salidas: (vista parcial 1/2)
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
60
Diseño JerárquicoAhora continuamos con las salidas: (vista parcial 2/2)
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
61
Diseño JerárquicoEsquema completo
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
62
Diseño JerárquicoEs ilustrativo ver que señales hay en el conduit y con que instancia están conectados
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
63
Diseño JerárquicoUna observación: Para conectar el Cout al Cin se uso un cable en lugar de un conduit se prefirió hacerlo asi pues en ambos casos era necesario el mapeo y el cabe representa mas claramente el hecho de que es una señal de un bit. Notese que se debe nombrar el cable (C1)
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
64
Diseño JerárquicoPodemos compilar para ver si no tenemos errores
Este resultado nos es familiar pues nos faltaría definir la arquitectura
ARCHITECTURE Full_Adder_architecture OF Full_Adder IS
BEGIN
S<=A XOR B XOR CIN;
COUT<=(A AND B) OR (CIN AND A) OR (CIN AND B);
END Full_Adder_architecture;
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
65
Diseño JerárquicoPodemos mejorar la legibilidad de nuestro esquema asignando aliases a los conduits
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
66
Diseño JerárquicoEl uso de bloques y conduits nos da flexibilidad en el momento de hacer cambios. Esto es agregar señales es simple. Al agregar una señal al conduit (en este caso la señal “xx” al mapper del Full_Adder cuya salida es S[0] ) la señal será agregada en forma automática al conduit. Esta señal quedara automáticamente asociada a la salida de la compuerta AND2 (inst8) por asociación automática de nombres. Una ves mas si observamos el resultado de hacer el análisis y síntesis las ecuaciones nos corroboran esta nueva conexión. Otra forma de verificar esta situación es observando las propiedades del conduit.
S[0] = OUTPUT(B1L2); B1L2 = A[0] $ CIN $ (A[3] & B[1]);
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
67
Diseño JerárquicoComo se vio Quartus II realiza en forma automática conexiones entre bloques que han sido conectados entre si. Lo mismo ocurre con buses. Veamos la implementación de un contador usando nuestro sumador. Agregando un FF a la salida del sumador y realimentando la salida del mismo hacia uno de los dos operandos (A[3..0] en este caso) y dejando el otro fijo (incremento) tendremos nuestro contador.
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
68
Diseño JerárquicoObservaciones: Se uso un bus para conectar la salida del sumador
El FF se replica por cada línea del bus
Al darle al Bus que sale del FF el mismo nombre (A[3..0]) que una de las
entradas al sumador se conectan aromáticamente.
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
69
Diseño JerárquicoEsquema completo
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
70
Diseño JerárquicoSimulacion:
Para simular debemos
1- Generar un clock externo
2- Definir el incremento B[3..0]
Entonces empezamos por crear un Vector Waweform File (VWF) esto se hace haciendo
File New.. y Other Files
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
71
Diseño JerárquicoUna vez abierto el VWF agregamos señales
Botón derecho del mouse acá
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
72
Diseño JerárquicoAhora seleccionamos las señales de interés
1
2
3
1- Muestro las señales en existencia (Filter: Pin all)
2- Seleccionamos las señales de interés CTRL-CLIK
3-Transferimos las seleccionadas al panel de selección y terminamos (OK – OK)
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
73
Diseño JerárquicoGeneramos el clock
1
2
3
1- Selecciono la señal CLK (mouse)
2- Barra de herramientas
3- Completo el cuadro: 100ns (semi periodo)
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
74
Diseño JerárquicoCIN debe estar en 0 Seleccionar CIN le asignamos 0 con
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
75
Diseño JerárquicoB[3..0] (incremento) lo ponemos en 1 Seleccionar B y con el menú de contexto seleccionamos “Arbitrary Value ..”
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
76
Diseño JerárquicoFinalmente debemos agregar las señales de salida que queremos ver Out[3..0]
Nota: Por defecto en el reporte de simulación se muestran todos los pines de salida en forma individual (no bus).
Como queremos ver las salidas Out[3..0] como un bus se las agregaron como bus en forma explicita.
BUS
Individual
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
77
Diseño JerárquicoAhora podemos simular presionando
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby
78
Diseño JerárquicoPodemos ahora probar con B=3 (para extender el tiempo de simulación: EditEnd time)
Fin