|
|
LIBROS DE APOYO
|

|
|
Introducción:
En este
curso se estudiará como a través del flujo
de diseño utilizando el software VIVADO
de la empresa XILINX y el Quartus de INTEL, se pueden crear circuItos lógicos; Secuenciales
y Combinacionales con el Lenguaje
Descriptivo de Hardware: VERILOG. Un flujo de
diseño típico consiste en: Modelar el circuito ( crear el source file), sintetizar el código para obtener el RTL, Simular el circuito (crear el testbench), crear
archivos de restricciones de usuario (crea el constraints file) para su implementacion en la tarjeta, generar el archivo flujo de bits
(bitstream) y,
finalmente, verificar la funcionalidad en el hardware descargando el
bitstream. Se utilizará la Tarjeta de Desarrollo con que se
cuenta en el Laboratorio de Sistemas Embebidos de la carrera de Electrónica; la Nexys4 DDR basada
en la familia de FPGA´s Artix-7, y en especifico, el FPGA
XC7A100T-CSG324.
El Lenguaje Verilog
HDL, es el mayormente utilizado como herramienta EDA
(Automatización del diseño electrónico)
en el diseño, modelado, simulación e
implementación de sistemas digitales con FPGAs
(Field Programmable Gate Array: Arreglo de Compuertas
Programables en el Campo). Se
abordarán conceptos teóricos y
prácticos
fundamentales para desarrollar módulos de electronica
digital, utilizando las 3 técnicas de modelado que permite
este Lenguaje descriptivo de hardware (HDL); A nivel de compuerta (gate_level), Por
flujo de datos (dataflow)
y comportamental o algoritmico (behavioral).
Justificación:
Verilog HDL es un Lenguaje Descriptivo de Hardware que es utilizado en
el diseño de Circuitos Integrados. Los profesores
involucrados en el diseño electrónico, deben
manejarlo en sus 3 técnicas de modelado para asi poder explicar a los
estudiantes las fases de diseño en la Electrónica
Digital.
Objetivos:
Tras completar este curso, se podrá:
- Aprender
el funcionamiento de las herramientas EDA playground ( en la nube) y
Vivado HLS (Standalone).
- Crear proyectos con modelado en Verilog HDL : gate_level, dataflow y
behavioral.
- Aprender
a utilizar la tarjeta de desarrollo; Nexys4 DDR de Xilinx y Cyclone IV de Intel.
- Simular
el diseño con el simulador Xsim de XiIinx.
- Sintetizar
e implementar el diseño.
- Usar
el archivo de restricciones de usuario (.xdc) proporcionado para
restringir la ubicación de los pines.
- Generar
el archigo de programacion de flujo de bits (bitstream)
- Descargar
el diseño y verificar su funcionalidad en la tarjeta de
desarrollo.
Material del curso:
Software
Plantillas:
Manuales y documentos
de apoyo
Laboratorios
Videos de apoyo:
A step-by-step guide to ASIC
design flow in VLSI.
Documentacion
de Xilinx.
|
| FUNDAMENTOS
DE FPGA´s |
Una
matriz de puertas programables en el campo (FPGA), es un circuito
integrado diseñado para modelar circuitos digitales simples
o
complejos por un estudiante de electrónica o un ingeniero de
diseño electrónico. Con el FPGA se pueden modelar
circuitos bastante complejos complejos que son parte de un
sistema digital o tambien llamado computadora..
Los FPGAs
pueden
configurarse miles de veces con una cantidad prácticamente
ilimitada de circuitos, lo que los convierte en una herramienta ideal
para aprender sobre circuitos y sistemas digitales. De hecho, los FPGAs
han ganado una amplia aceptación en la industria
electrónica, por la razón de que son
configurarr muy
rápidamente modelando varios bloques o etapas de una
computadora. Lo anterior permite a los ingenieros verificar ampliamente
un productoelectrónico antes de su
comercialización.
Acualmente los FPGAs son un pilar fundamental, aunque a menudo
desconocido, de la industria electrónica. Son un tipo de
circuito integrado digital cuya característica principal es
su
posibilidad de reconfiguracion. Esto significa que pueden configurarse
para realizar, dentro del chip, un circuito digital completamente nuevo
o actualizarse el ya existente.
Introducción a las FPGA
Circuito Integrados desarrollados a mediados de la
década
de 1980, los FPGAs se concibieron originalmente para brindar a los
diseñadores la capacidad de crear lógica digital
customizable (personalizada). A principios de la
década de
1990, se utilizaban principalmente en telecomunicaciones y redes. A
finales de esa década, ya se utilizaban en aplicaciones de
consumo, automotrices e industriales, abriendo la puerta a diversas
carreras de Ingeniería de Diseño
Electrónico.
Funcionamiento
de un FPGA.
Un FPGA consta de bloques de hardware internos llamados: CLBs (Bloques
Logicos Configurables) e IOBs (Bloques de Entrada y Salida),
conectados con un conjunto de interconexiones
programables customizando
las necesidades circuitales
para una aplicación específica. Estas
interconexiones son
programables, lo que permite que la FPGAs se adapten a cambios de
diseño (actualizaciones de funcionamiento) o se reconfigure
con una nueva aplicación durante la vida
útil del
chip. Los FPGAs pueden ser programados durante el proceso de
fabricación, pero pueden reprogramarse posteriormente para
reflejar un nuevo circuito que se necesite.. Los CLB constituyen la
celda básica de la FPGA y se integran con 2 tipos de slices;
X
(con logica combinacional) y Y con logica secuencial.
A diferencia de los microprocesadores, los FPGAs pueden realizar
operaciones concurrentes (en paralelo), por lo que las diferentes
operaciones de procesamiento no compiten por los mismos recursos. Cada
tarea independiente se asigna a una sección dedicada del
chip y
puede funcionar de forma autónoma sin la influencia de otros
bloques lógicos. En consecuencia, el rendimiento de una
parte de
la aplicación no se ve afectado al añadir
más
operaciones.
La configuración interna de los FPGAs se establece
mediante software o, como se suele denominar, "firmware".
Las FPGAs pueden reprogramarse in situ
a medida que cambian los requisitos de la aplicación o la
funcionalidad. Están diseñados para programarse
mediante
lenguajes de descripción de hardware como Verilog HDL o
VHDL.
Gracias a su reprogramabilidad, las FPGAs se diferencian de los
circuitos integrados ASIC
(Circuitos Integrados de Aplicacion Especifica), que
están diseñados para realizar tareas especificas.
La decisión sobre si se debe utilizar un FPGA en un
diseño electrónico, debe tomarse en las primeras
etapas
del proceso de diseño. Se debe considerar si será
necesario reprogramar el chip más adelante para optimizar la
tarea del circuito. En ocasiones, los fabricantes optan por un
diseño basado en FPGA al principio del ciclo de desarrollo,
cuando aún pueden detectarse errores, y luego cambian a un
ASIC
cuando el diseño es estable.
Figura :
Elementos de un FPGA y tarjeta de desarrollo Nexys 4DDR
|
|
n
| EDA Playground es un simulador
en línea basado en la nube que permite a ingenieros y
estudiantes
escribir, simular y depurar diseños Verilog sin necesidad de
instalar
ningún software. Ofrece una interfaz intuitiva y es
compatible con
diversos simuladores Verilog, como Icarus Verilog (IVL), ModelSim y
Verilator entre otros. Esta guía explica el proceso de
diseño y
verificación de código Verilog mediante EDA
Playground con Icarus
Verilog 12.0 y la visualización de formas de onda en EPWave |
Pasos para
iniciar con EDA Playground.
- Iniciar
sesión y crear un proyecto
- Abrir
el navegador web e ir a la pagina de EDA
Playground.
- Haz
clic en "Login"
en la esquina superior derecha (usar Google, GitHub o crear una cuenta
con la opcion "Register to full account").
- Una
vez iniciada la sesión, haz clic en "New" para crear un
nuevo proyecto de Verilog.
- Configuración
del simulador.
- En
el menu "Language
& Libraries" > "Test + Design" (panel
izquierdo) seleccionar el lenguje "SystemVerilog/Verilog".
- En
el menu "Tools &
Simulators", seleccionar "Icarus Verilog 12.0".
- Marque
la casilla "Open EPWave
after run" para habilitar la visualización de
las formas de onda.
Escritura de código
Verilog y Testbench.
- En
la ventana del lado derecho "design.sv"
ingresar el siguiente código en Verilog.
|
//Es un
código que modela las 7 compuertas lógicas a "nivel de compuerta" (gate_level).
///////////////////////////////////////////////////////////////////////////////////////////
//
TECNOLOGICO NACIONAL DE MEXICO
//
Instituto Tecnologico de Oaxaca
//
CURSO INTERSEMESTRAL ENERO 2026
// Create date; enero de 2026
// Module name: 7 compuertas de 4 entradas
// NAME: Miguel Angel Perez solano
/////////////////////////////////////////////////////////////////////////////////////////////
module gates (X,out);
input [3:0] X;
output [6:0] out;
and AndGate (out[6],X[3], X[2], X[1], X[0]);
or OrGate (out[5],X[3], X[2], X[1],
X[0]);
nand NandGate (out[4],X[3], X[2], X[1], X[0]);
nor NorGate (out[3],X[3], X[2], X[1], X[0]);
xor XorGate (out[2],X[3], X[2], X[1], X[0]);
xnor XnorGate (out[1],X[3], X[2], X[1], X[0]);
not NotGate (out[0],X[3]);
endmodule |
|
- Escritura
del código Testbench.
- En
la ventana del lado izquierdo "testbench.sv", escribir el siguiente
código Tesbench para comprobar la funcion del
código que
modela las siguientes compuertas.
- Para guardar ambos
códigos, se hace seleccionando; Private (solo uno
puede verlos), Published
(aparecerá como resultado de una busqueda) y Public
(cualquiera que tenga el link). Posteriormente hacerlo con la
opcion "Save".
|
`timescale 10ns / 1ns
module tb_gates;
reg [3:0] X;
wire [6:0] out;
gates dut ( X,out );
integer i;
initial
begin
//Dump
waves
$dumpfile("dump.vcd");
$dumpvars(1,tb_gates);
for(i=0;
i<16; i = i+1)begin
X = i[3:0];
#1;
end
$finish;
end
endmodule |
Compilando
y corriendo la simulación.
|