Este documento introduce Verilog y el entorno de diseño XILINX para realizar prácticas de laboratorio sobre diseño de sistemas digitales. Los objetivos son familiarizarse con Verilog, conocer el entorno de diseño XILINX y desarrollar el proceso de diseño y simulación. Se describen dos circuitos, un decodificador 4 a 16 y un contador de 4 bits, para ser simulados. También se explican los pasos para crear un proyecto en XILINX, añadir los ficheros Verilog, y simular y verificar los diseños.
Propuesta 1: BÚSQUEDA DE DATOS
Propuesta 2-3: ORDENAMIENTO DE DATOS
Propuesta 4: Microprocessor Architecture.
⭐ For more information visit our blog:
https://vasanza.blogspot.com/
Problema #1: (5%) ¿Cuál de las siguientes afirmaciones referente al Sistemas Operativo Windows XP para sistemas embebidos, es correcta?
Problema #2: (5%) ¿Cuál de las siguientes afirmaciones referente al Sistemas Linux Embebido, es correcta?
Problema #3: (5%) ¿Cuál de las siguientes afirmaciones referente al Sistemas Operativo DOS, es correcta?
Problema #4: (5%) ¿Cuál de las siguientes afirmaciones referente a Java para sistemas embebidos, es correcta?
Problema #5: (5%) ¿Cuáles de las siguientes afirmaciones referentes a comando GNU/Linux son ciertas?
Problema #6: (5%) ¿Cuáles de las siguientes afirmaciones referentes a comando GNU/Linux son ciertas?
Problema #7: (5%) ¿Cuáles de las siguientes afirmaciones referentes a comando GNU/Linux son ciertas?
Problema #8: (5%) ¿Cuáles de las siguientes afirmaciones referentes a comando GNU/Linux son ciertas?
Problema #9: (30%) Belwafi et Al., escribió el paper titulado “A novel embedded implementation based on adaptive filter bank for brain-computer interface systems” en donde desarrolla un Brain Computer Interface (BCI) basado en filtrado dinámico de señales EEG adquiridas desde un sistema OPENBCI basado en FPGA, como se muestra en la siguiente gráfica.
Problema #10: (30%) Proponer la realización del sistema de la pregunta 9 con un sistema embebido basado en procesador ARM (Raspberry Pi) y escribir el algoritmo que utilizaría.
Problema #1: (5%) ¿Cuáles de los siguientes enunciados son descripciones de los desafíos que deben superar los Sistemas Ciber - físicos (CPS)?
Problema #2: (10%) ¿Cuáles de las siguientes afirmaciones de los registros de configuración del AVR ATmega328P son ciertos?
Problema #3: (10%) ¿Cuáles de las siguientes afirmaciones referentes a la arquitectura del AVR ATmega328P son ciertas?
Problema #4: (50%) El sistema propuesto en la Fig. 1 permite adquirir datos de forma inalámbrica desde un sensor cualquiera conectado al End Device hacia un equipo Coordinador. El equipo Coordinador puede realizar en cualquier momento la solicitud de lectura del valor analógico del sensor conectado a una de las entradas ADC del End Device. El equipo Coordinado hace una solicitud al End Device con un tiempo aleatorio que puede variar desde 15 Segundos hasta 24 horas (5760 muestras con la frecuencia de muestro del 1 dato por segundo). El equipo End Device deberá realizar un muestreo cada 15 segundos del valor analógico del sensor y deberá almacenar en memoria datos SRAM hasta el instante en que el equipo Coordinador solicite los datos almacenados. Luego de que el End Device envié los datos al Coordinador, estos datos ya no serán necesarios.
Propuesta 1: BÚSQUEDA DE DATOS
Propuesta 2-3: ORDENAMIENTO DE DATOS
Propuesta 4: Microprocessor Architecture.
⭐ For more information visit our blog:
https://vasanza.blogspot.com/
Problema #1: (5%) ¿Cuál de las siguientes afirmaciones referente al Sistemas Operativo Windows XP para sistemas embebidos, es correcta?
Problema #2: (5%) ¿Cuál de las siguientes afirmaciones referente al Sistemas Linux Embebido, es correcta?
Problema #3: (5%) ¿Cuál de las siguientes afirmaciones referente al Sistemas Operativo DOS, es correcta?
Problema #4: (5%) ¿Cuál de las siguientes afirmaciones referente a Java para sistemas embebidos, es correcta?
Problema #5: (5%) ¿Cuáles de las siguientes afirmaciones referentes a comando GNU/Linux son ciertas?
Problema #6: (5%) ¿Cuáles de las siguientes afirmaciones referentes a comando GNU/Linux son ciertas?
Problema #7: (5%) ¿Cuáles de las siguientes afirmaciones referentes a comando GNU/Linux son ciertas?
Problema #8: (5%) ¿Cuáles de las siguientes afirmaciones referentes a comando GNU/Linux son ciertas?
Problema #9: (30%) Belwafi et Al., escribió el paper titulado “A novel embedded implementation based on adaptive filter bank for brain-computer interface systems” en donde desarrolla un Brain Computer Interface (BCI) basado en filtrado dinámico de señales EEG adquiridas desde un sistema OPENBCI basado en FPGA, como se muestra en la siguiente gráfica.
Problema #10: (30%) Proponer la realización del sistema de la pregunta 9 con un sistema embebido basado en procesador ARM (Raspberry Pi) y escribir el algoritmo que utilizaría.
Problema #1: (5%) ¿Cuáles de los siguientes enunciados son descripciones de los desafíos que deben superar los Sistemas Ciber - físicos (CPS)?
Problema #2: (10%) ¿Cuáles de las siguientes afirmaciones de los registros de configuración del AVR ATmega328P son ciertos?
Problema #3: (10%) ¿Cuáles de las siguientes afirmaciones referentes a la arquitectura del AVR ATmega328P son ciertas?
Problema #4: (50%) El sistema propuesto en la Fig. 1 permite adquirir datos de forma inalámbrica desde un sensor cualquiera conectado al End Device hacia un equipo Coordinador. El equipo Coordinador puede realizar en cualquier momento la solicitud de lectura del valor analógico del sensor conectado a una de las entradas ADC del End Device. El equipo Coordinado hace una solicitud al End Device con un tiempo aleatorio que puede variar desde 15 Segundos hasta 24 horas (5760 muestras con la frecuencia de muestro del 1 dato por segundo). El equipo End Device deberá realizar un muestreo cada 15 segundos del valor analógico del sensor y deberá almacenar en memoria datos SRAM hasta el instante en que el equipo Coordinador solicite los datos almacenados. Luego de que el End Device envié los datos al Coordinador, estos datos ya no serán necesarios.
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN D RESUELTA 1er PARCIAL (2019 2do ...Victor Asanza
✅ 1. De acuerdo con la siguiente figura, seleccionar la opción que describe el tipo de organización de los bloques lógicos correspondiente:
✅ 2. De acuerdo con la siguiente figura, colocar los nombres a los bloques que conforman la arquitectura del bus AVALON:
✅ 3. De acuerdo con la siguiente figura, ¿qué resultado debería imprimirse?
✅ 4. Escribir el código en lenguaje C que permita calcular el valor AVERAGE de un vector de 10 números, crear el vector como una variable local con los valores ascendentes del 1 al 10.
✅ 5. Dada la siguiente figura, colocar los nombres a los bloques que conforman la arquitectura del procesador NIOSii, utilizar las siguientes opciones:
✅ 6. Indique cuál de las siguientes respuestas explica el significado de SIMD y MIMD:
✅ 7. ¿Cuál es el orden correcto de las tareas básicas que ejecuta el procesador durante Interruption Services Routine (ISR)?
✅ 8. Seleccione las afirmaciones correctas con respecto a los registros de control ienablestatus y bstatus en el procesador NIOSii:
✅ 9. Dada la siguiente figura, colocar los nombres correctos en la tabla comparativa de tipos de procesadores NIOSii, utilizar las siguientes opciones:
✅ 10. Una con líneas según corresponda la combinación de procesadores:
✅ 11. Graficar la arquitectura que conforma una FPGA, incluir:
✅ 12. Dada las siguientes instrucciones correspondientes a las tareas realizadas por el microprocesador, graficar su arquitectura simplificada donde se muestre claramente el número de la instrucción que está siendo ejecutada.
✅ 13. Unir con líneas los elementos o tareas básicas de cada temática:
✅ 14. Indique cual es el resultado en el siguiente ejemplo de encapsulamiento:
✅ 15. (6%) M Li et Al., escribió el paper titulado “The Design of IP Core for LCD Controller Based on SOPC” en donde desarrolla un controlador para pantalla LCD utilizando un solo procesador NIOSii como se describe a continuación:
✅ Para todos los ejercicios presentar Link de Simulación en Tinkercad compartido desde la cuenta del estudiante, que incluye circuito utilizado y código.
✅ Programar una máquina secuencial que debe detectar una clave correcta de 4 dígitos (1-2-3-4), cada vez que se detecta la clave se debe generar un pulso en la salida Puerta. La validación de la clave debe realizarse luego de ingresados 4 dígitos, si la clave es incorrecta se empezará a contar los Errores. Si el número de intentos fallidos de ingreso de la clave es mayor a 3, se deberá activar la salida Alarma la cual solo se deberá apagar al ingresar la clave correcta.
✅ Del anterior sistema ciberfísico, implementar el actuador utilizando conceptos de maquina secuencial.
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN D RESUELTA 1er PARCIAL (2019 2do ...Victor Asanza
✅ 1. De acuerdo con la siguiente figura, seleccionar la opción que describe el tipo de organización de los bloques lógicos correspondiente:
✅ 2. De acuerdo con la siguiente figura, colocar los nombres a los bloques que conforman la arquitectura del bus AVALON:
✅ 3. De acuerdo con la siguiente figura, ¿qué resultado debería imprimirse?
✅ 4. Escribir el código en lenguaje C que permita calcular el valor AVERAGE de un vector de 10 números, crear el vector como una variable local con los valores ascendentes del 1 al 10.
✅ 5. Dada la siguiente figura, colocar los nombres a los bloques que conforman la arquitectura del procesador NIOSii, utilizar las siguientes opciones:
✅ 6. Indique cuál de las siguientes respuestas explica el significado de SIMD y MIMD:
✅ 7. ¿Cuál es el orden correcto de las tareas básicas que ejecuta el procesador durante Interruption Services Routine (ISR)?
✅ 8. Seleccione las afirmaciones correctas con respecto a los registros de control ienablestatus y bstatus en el procesador NIOSii:
✅ 9. Dada la siguiente figura, colocar los nombres correctos en la tabla comparativa de tipos de procesadores NIOSii, utilizar las siguientes opciones:
✅ 10. Una con líneas según corresponda la combinación de procesadores:
✅ 11. Graficar la arquitectura que conforma una FPGA, incluir:
✅ 12. Dada las siguientes instrucciones correspondientes a las tareas realizadas por el microprocesador, graficar su arquitectura simplificada donde se muestre claramente el número de la instrucción que está siendo ejecutada.
✅ 13. Unir con líneas los elementos o tareas básicas de cada temática:
✅ 14. Indique cual es el resultado en el siguiente ejemplo de encapsulamiento:
✅ 15. (6%) M Li et Al., escribió el paper titulado “The Design of IP Core for LCD Controller Based on SOPC” en donde desarrolla un controlador para pantalla LCD utilizando un solo procesador NIOSii como se describe a continuación:
✅ Para todos los ejercicios presentar Link de Simulación en Tinkercad compartido desde la cuenta del estudiante, que incluye circuito utilizado y código.
✅ Programar una máquina secuencial que debe detectar una clave correcta de 4 dígitos (1-2-3-4), cada vez que se detecta la clave se debe generar un pulso en la salida Puerta. La validación de la clave debe realizarse luego de ingresados 4 dígitos, si la clave es incorrecta se empezará a contar los Errores. Si el número de intentos fallidos de ingreso de la clave es mayor a 3, se deberá activar la salida Alarma la cual solo se deberá apagar al ingresar la clave correcta.
✅ Del anterior sistema ciberfísico, implementar el actuador utilizando conceptos de maquina secuencial.
1º Caso Practico Lubricacion Rodamiento Motor 10CVCarlosAroeira1
Caso pratico análise analise de vibrações em rolamento de HVAC para resolver problema de lubrificação apresentado durante a 1ª reuniao do Vibration Institute em Lisboa em 24 de maio de 2024
Criterios de la primera y segunda derivadaYoverOlivares
Criterios de la primera derivada.
Criterios de la segunda derivada.
Función creciente y decreciente.
Puntos máximos y mínimos.
Puntos de inflexión.
3 Ejemplos para graficar funciones utilizando los criterios de la primera y segunda derivada.
Se denomina motor de corriente alterna a aquellos motores eléctricos que funcionan con alimentación eléctrica en corriente alterna. Un motor es una máquina motriz, esto es, un aparato que convierte una forma determinada de energía en energía mecánica de rotación o par.
Aletas de Transferencia de Calor o Superficies Extendidas.pdfJuanAlbertoLugoMadri
Se hablara de las aletas de transferencia de calor y superficies extendidas ya que son muy importantes debido a que son estructuras diseñadas para aumentar el calor entre un fluido, un sólido y en qué sitio son utilizados estos materiales en la vida cotidiana
Análisis Combinatorio ,EJERCICIOS Y PROBLEMAS RESUELTOS
Xilinx aprender abrirlo
1. Introducción a Verilog y XILINX
Enunciados de Prácticas de Laboratorio
Estructura de Computadores
(v. 5.0)
1. Introducción y objetivos
Uno de los objetivos generales de la asignatura Estructura de Computadores es llegar a conocer la
metodología de diseño de sistemas digitales a nivel de transferencia entre registros. Para ello en las
clases de teoría y prácticas, que se desarrollan en clases de aula, se introduce dicha metodología y se
aplica a un amplio número de casos de diseño de sistemas digitales. Para completar la formación en este
tema es importante no quedarnos exclusivamente en la parte más teórica sino que es necesario
complementarla con un conocimiento de implementación real de dichos sistemas digitales.
Los objetivos de esta práctica son:
▪ Familiarizarse con el lenguaje Verilog-HDL
▪ Conocer el entorno de diseño sobre FPGA, en concreto el entorno de diseño de XILINX1
.
▪ Conocer las herramientas de verificación del diseño desarrollado.
▪ Desarrollar el proceso de diseño y simulación. Para ello se han elegido dos circuitos muy simples,
uno combinacional y otro secuencial. Concretamente un decodificador 4 a 16 y un contador.
2. Estudio previo
Para realizar la sesión de laboratorio es necesario estudiar previamente el diseño de una serie de
módulos Verilog que a continuación se detallan:
1 Xilinx Inc.: Compañía de desarrollo de FPGAs (www.xilinx.com)
2. Estructura de Computadores 2
Nombre del
fichero
Contenido Descripción
decodificador.v
Módulo con el código del
decodificador 4 a 16
Debe estudiarlo antes de asistir al laboratorio.
decodificador_tb.v
Testbench para el
decodificador 4 a 16
Debe estudiarlo antes de asistir al laboratorio.
contador.v
Módulo con el contador
modulo 16
Debe estudiarlo antes de asistir al laboratorio.
contador_tb.v
Testbench para el contador
módulo 16
Debe estudiarlo antes de asistir al laboratorio y
modificarlo durante la sesión de laboratorio.
lab1.v
Descripción estructural con
la unión de los 2 módulos
Debe estudiarlo antes de asistir al laboratorio y
completarlo durante la sesión de laboratorio.
lab1_tb.v
Testbench del sistema
completo
Debe estudiarlo antes de asistir al laboratorio.
Tabla 1. Ficheros necesarios durante la sesión de laboratorio.
A continuación se detalla el comportamiento de los dos circuitos principales, el contador y el
decodificador.
2.1. Especificaciones del DEC 4 a 16
Se trata de un circuito combinacional con una entrada A, de cuatro bits, que representa en binario
natural la salida que hay que activar, en nivel alto, de las 16 salidas existentes. Solo se activa una salida,
el resto están a valor bajo. La tabla de verdad describe de forma inequívoca el comportamiento de este
circuito (ver tabla 2).
3. Estructura de Computadores 3
A3 A2 A1 A0 W15W14W13W12W11W10W9W8W7W6W5W4W3W2W1W0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Tabla 2: Tabla de verdad del codificador 4 a 16.
Para diseñar el código Verilog se ha usado una descripción procedimental, que es la que se muestra
en el fragmento de código 1 (fichero decodificador.v). Estudie dicha descripción hasta que tenga claro su
funcionamiento.
module dec4a16(
input [3:0] a,
output reg [15:0] w
);
always @ (a)
begin
w = 0;
w[a] = 1;
end
endmodule
Código 1. Fichero decodificador.v
2.2. Diseño del contador de 4 bits
Dicho contador está disparado por el flanco de subida del reloj, tiene una señal RESET síncrona de
puesta a cero. Además, incluye una señal carry (CY) que se activa cuando el contador llega al último
estado de cuenta.
El contador debe cumplir la tabla comportamiento de la figura 1b y, el código Verilog propuesto para
describirlo es el fragmento de código 2 (fichero contador.v). Debe estudiarlo hasta entender su
funcionamiento.
4. Estructura de Computadores 4
CLK RESET UP CONT ←←←←
1 X CONT ← 0
0 1 CONT ← CONT+1
0 0 CONT ← CONT
CY = Si se cumple que...
0 [CONT] ≠ 1111
1 [CONT] = 1111
(a) (b)
Figura 1. Descripción del contador módulo 16: (a) Descripción estructural, (b) Descripción funcional.
module contador_mod_16(
input clk, up, reset,
output reg [3:0] q,
output cy
);
assign cy = &q;
always @(posedge clk)
if (reset==1 )
q <= 0;
else if (up==1)
q <= q + 1;
endmodule
Código 2. Fichero contador.v
3. Estudio experimental
En esta sesión de laboratorio se va a realizar la simulación del sistema digital diseñado con el
paquete de herramientas de Xilinx ISE. Se utilizarán unos ficheros con módulos verilog tanto de
circuitos como de testbench previamente preparados. Los pasos a seguir son los siguientes:
1. Siga los pasos del “Tutorial de uso de Xilinx ISE” (incluido en la siguiente sección de este
documento), para crear un nuevo proyecto de nombre PracticaEdC1 (por ejemplo),
incluyendo todos los ficheros Verilog de la tabla 1.
2. Realice la simulación del decodificador 4 a 16 (fichero decodificador.v) siguiendo los pasos
descritos en el “Tutorial de uso de Xilinx ISE”, con ayuda del testbench facilitado (fichero
decodificador_tb.v). Compruebe si el decodificador funciona correctamente.
3. Realice ahora la simulación del contador de 4 bits (contador.v), con ayuda del testbench
facilitado (fichero contador_tb.v). Compruebe si el contador funciona correctamente.
4. Fíjese que al simular el contador no aparecen todos los estados ni la activación de la señal
de Carry. Haga los cambios oportunos en el testbench del contador para poder visualizar al
CLK q2
CY
q1 q0
CONT MOD 16RESET
UP
q3
5. Estructura de Computadores 5
menos un ciclo completo de cuenta y vuelva a realizar la simulación para comprobarlo.
5. Añada una descripción estructural en Verilog que interconecte ambos bloques: contador y
decodificador, de forma que ambos aparezcan incluidos por este nuevo fichero. Utilice como
plantilla el fragmento de código 3 (fichero lab1.v).
6. Realice por último la simulación de este nuevo módulo (fichero lab1.v), con ayuda del
testbench facilitado (fichero lab1_tb.v). Compruebe si el sistema completo funciona
correctamente.
// El modulo lab1 esta formado por la interconexion estructural
// de los modulos contador_mod_16 y dec4a16.
// Simplificando un poco, la idea es conectar la salida
// del contador con la entrada del decodificador.
module lab1(
input clk, up, reset,
output [15:0] z,
output cy);
wire [3:0] de_cont_a_dec; // necesitara el cable para unir los componentes
// Rellene los huecos para conectar correctamente las entradas del contador
// a las entradas del modulo lab1 y las salidas del contador a las entradas
// del decodificador o a las salidas del lab1, según corresponda.
contador_mod_16 instancia_contador(
.clk( ),
.up( ),
.reset( ),
.q( ),
.cy( )
);
// Rellene los huecos para conectar correctamente la entrada del decodificador
// a la salida del contador y la salida del decodificador a la salida del lab1.
dec4a16 instancia_decodificador(
.a( ),
.w( )
);
endmodule
Código 3. Fichero lab1.v
4. Tutorial de uso de Xilinx ISE
Esta sección describe el entorno ISE del fabricante XILINX. Este entorno, entre otras características,
incluye un simulador para el lenguaje Verilog que será utilizado en esta sesión de laboratorio.
4.1. Creación de un proyecto en Xilinx ISE
Tras iniciarse el sistema operativo, el primer paso es arrancar el entorno ISE y crear un nuevo
proyecto. En el menú File hay que utilizar la opción New Project, obteniéndose la ventana mostrada en
la figura 2 donde hay que escribir un nombre para el proyecto, por ejemplo PracticaEdC1. La
herramienta creará una carpeta con ese mismo nombre y guardará en su interior todo lo que se va gene-
rando a medida que vamos trabajando en ese proyecto.
6. Estructura de Computadores 6
Tras escribir el nombre se activa el botón Next y aparece el cuadro de diálogo mostrado en la figura
3, donde hay que establecer todas las opciones indicadas en la figura. Concretamente hay que
asegurarse de establecer las siguientes opciones a su valor correcto:
▪ Family: Spartan 3E
▪ Device: XC3S100E
▪ Package: CP132
▪ Preferred Language: Verilog
El resto de opciones deberían estar por defecto a los mismos valores que los mostrados en la figura 3.
Tras establecer las opciones correctas, utilizando el botón Next aparece una última ventana con
información y un botón Finish que se pulsa para crear el proyecto. La figura 4 muestra el proyecto
recién creado, sólo se muestra el nombre del proyecto y el tipo de FPGA “xc3s100e-4cp132”.
Figura 2. Ventana de creación del proyecto. Figura 3. Ventana de propiedades del proyecto.
7. Estructura de Computadores 7
Figura 4. Vista general de un proyecto en el entorno Xilinx.
Nótese que encima del nombre del proyecto aparecen dos iconos Implementation y Simulation, (ver
figura 4) cada uno con distintas vistas del mismo proyecto. Es muy importante que estemos siempre en
la vista de simulación si lo que queremos hacer son simulaciones de los módulos del proyecto. También
se recomienda utilizar la entrada de menú Layout → Load Default Layout en caso de no ver
correctamente las ventanas o los controles del ISE Project Navigator (o del entorno de Simulación Isim
que usará más adelante).
4.2. Añadir ficheros al proyecto
El primer paso tras la creación del proyecto es añadir los ficheros Verilog (diseños y testbenchs) al
proyecto. Para añadir ficheros al proyecto se puede puede utilizar la opción de menú Project o, pulsar el
botón derecho del ratón en la zona en blanco de la vista del proyecto, eligiendo entre Add Source o bien
Add Copy of Source teniendo en cuenta que estas dos opciones son algo diferentes:
▪ Add Copy of Source crea un nuevo fichero dentro del proyecto que inicialmente será una copia del
fichero fuente seleccionado. Así las modificaciones serán propias a este proyecto y el fichero
fuente original no se modificará. La copia residirá dentro de la carpeta del proyecto.
▪ Add Source no crea un nuevo fichero dentro del proyecto, utiliza el propio fichero fuente
seleccionado sin crear ninguna copia. Así las modificaciones afectarán al fichero fuente en su
ubicación original, es decir, el fichero residirá en la misma carpeta dónde esté almacenado
previamente.
Otra posible opción sería New Source creándose un nuevo fichero fuente vacío donde habría que
escribir el código.
8. Estructura de Computadores 8
La mejor opción es Add Source seleccionando uno o más ficheros a añadir al proyecto. Hay que
confirmar los ficheros que son para implementación y cuales son exclusivamente para simulación (cómo
los ficheros de testbench suministrados). En la figura 5 se muestran los ficheros a añadir y la asociación
realizada en cada uno de ellos para que la simulación opere correctamente (elija All y Simulation según
se indica).
Figura 5. Ventana de inclusión de ficheros al proyecto.
Una vez añadidos los ficheros, éstos son mostrados en la vista del proyecto de forma jerárquica y,
componiendo el árbol de módulos del proyecto en función de que un módulo incluya en su interior
instancias de otro módulo. Esto se puede visualizar en la figura 5. El módulo que incluye a los demás
será el primer módulo del árbol de proyecto.
Para editar o ver cualquiera de los ficheros del proyecto, sólo hay que seleccionarlo con el ratón en el
árbol de proyecto y pulsar el botón izquierdo del ratón dos veces.
4.3. Simulación y verificación de un diseño
La simulación nos permite verificar el correcto funcionamiento de un módulo que hayamos diseñado,
para los casos que se plantean en el fichero de testbench. Éstos podrán ser más o menos completos
según el caso y si encontramos algún problema, nos permite indagar la causa del mismo antes de pasar
a modificar el código. Efectuando correcciones y simulaciones se consigue solucionar todos los
problemas que pueda tener el diseño.
Tras añadir un fichero de testbench, éste no se muestra en la vista de implementación, únicamente
aparece en la vista simulación. Esto es debido a que dichos ficheros contienen información para realizar
una simulación/verificación del diseño lógico, pero no se usan para realizar una implementación del
módulo (la última etapa del proceso de diseño). También puede comprobar como en la vista de
simulación aparecen las unidades en un orden jerárquico distinto al de implementación. Concretamente,
los módulos de testbench aparecen en primer lugar, puesto que estos son los que contienen instancias
de los módulos cuyo funcionamiento queremos probar. Esto se muestra en la figura 6.
9. Estructura de Computadores 9
Figura 6. Vista jerárquica de un proyecto.
Figura 7. Selección de simulación para el dec4a16.
Así, para simular el funcionamiento de un módulo de testbench debemos resaltar el nombre del
módulo de testbench y debajo en la caja titulada Processes desplegar la entrada ISim Simulator para
ejecutar la orden Simulate Behavioral Model pulsando el ratón dos veces, como muestra la figura 7.
10. Estructura de Computadores 10
Si no hay errores en el diseño, se abrirá una nueva ventana con el simulador ISim y ejecutará una
simulación durante un corto periodo de tiempo (habitualmente 1s), deteniéndose la simulación en ese
punto, salvo que el testbench detenga la simulación con antelación (con la orden $finish).
Si no hay errores en el código se abrirá el simulador ISim donde, para ver las formas de onda, hay
que utilizar la pestaña Default.wcfg. Es aconsejable utilizar en este momento el icono (Zoom to Full
View) para tener una vista completa de toda la simulación.
En esta vista, mostrada en la figura 8, se dispone de una ventana con las formas de onda a la derecha
en fondo negro y varias señales representadas con sus valores simulados, que deben ser las entradas y
salidas de nuestra unidad (al menos aquellas que aparecen en el testbench). Si pulsamos con el ratón
sobre el gráfico de formas de ondas, se sitúa un cursor amarillo indicando datos exactos en ese instante
de tiempo (nótese como cambian los valores de las señales al situarse en distintos instantes). Para las
señales de varios bits podemos cambiar la codificación pulsando el botón derecho del ratón sobre el
nombre de la señal y, accediendo en el menú flotante a la opción Radix (binario, hexadecimal, decimal,
etc.).
Figura 8. Simulación con ISim del módulo de testbench llamado decodificador_tb
Otros controles importantes de ISim se encuentran en dos bloques situados a la izquierda con los que
se puede navegar por todas las unidades que componen el diseño. Por ejemplo, utilizando el panel
Instances and Processes se pueden buscar señales y componentes internos de cualquier módulo y
“arrastrarlos” a la ventana de las formas de onda para añadirlas a ella y poder ver sus valores a lo largo
11. Estructura de Computadores 11
de la simulación. Si bien, para ello habría que reiniciar la simulación después de haberlas añadido a la
ventana de las formas de onda.
Por último, en la barra de iconos superior hay varios iconos que permiten hacer ampliaciones y
reducciones de escala en la imagen. Además de estos iconos, varios iconos verdes que hay a
continuación sirven para navegar por la forma de onda y, los iconos azules, controlan la simulación
utilizándose para continuar o detener el proceso.
Los iconos verdes se deben usar para buscar o centrarse en una parte concreta de las formas de
onda, por ejemplo, Previous Transition y Next Transition nos permiten ir al anterior/siguiente
flanco de una señal seleccionada previamente en la ventana de formas de onda.
Los iconos azules controlan el flujo de ejecución de la simulación permitiendo: borrar la simulación
actual volviendo al instante cero ( Restart), continuar la simulación indefinidamente hasta encontrar
un $finish ( Run All), continuar un tiempo de simulación por un tiempo determinado (habitualmente
1s) y luego detenerse ( Run), ejecutar la simulación línea a línea de Verilog ( Step) y, por último,
detener una simulación en ejecución ( Break).