Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


simulador, Apuntes de Ingeniería Infórmatica

Asignatura: DSD, Profesor: Rafael Gazca, Carrera: Ingeniería Informática - Ingeniería de Computadores, Universidad: US

Tipo: Apuntes

2013/2014

Subido el 10/10/2014

rafaelin_123
rafaelin_123 🇪🇸

3 documentos

1 / 51

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Ingeniería de Computadores
- Diseño de Sistemas Digitales - Departamento de Electrónica y Electromagnetismo
VERILOG
METODOLOGÍAS Y HERRAMIENTAS DE DISEÑO
VERILOG
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33

Vista previa parcial del texto

¡Descarga simulador y más Apuntes en PDF de Ingeniería Infórmatica solo en Docsity!

Ingeniería de Computadores

METODOLOGÍAS Y HERRAMIENTAS DE DISEÑO

VERILOG

Ingeniería de Computadores

Organización Bloque I

Bloque I. Metodologías y Herramientas de diseño

  • Teoría
    • Unidad 1: Introducción.
    • Unidad 2: Verilog
      • Lección 2.1: Revisión del lenguaje
      • Lección 2.2: Verilog para síntesis y simulación
  • Laboratorio
    • Todas las prácticas

Ingeniería de Computadores

Índice Unidad 2. Lección 2.

• Introducción/Ejemplos

• Revisión del lenguaje

– Ejemplos

– Contenidos del module

– Modelado estructural

– Tipos de datos

– Operadores

– Temporizaciones

– Asignamientos

– Construcciones de control de flujo

– Funciones/tareas

• Más ejemplos

Ingeniería de Computadores

Introducción. Clasificación de herramientas

  • Herramientas de Entrada de Diseño
    • Lenguajes de descripción de Hardware (HDLs)
      • VHDL, Verilog, System_C, Handle_C, System Verilog
  • Herramientas de Automatización
    • transformación entre representaciones con distinto nivel de

detalle

  • síntesis arquitectural o de alto nivel
  • síntesis RTL (o lógica)
  • síntesis de circuitos
  • diseño físico
  • Herramientas de Validación
  • adquisición de un grado de certeza razonable de que el circuito

funcionará correctamente bajo la hipótesis de que no existen

fallos en la realización física

  • simulación
  • verificación

Ingeniería de Computadores

Revisión de Verilog. Introducción

  • La compañía Gateway Design Automation desarrolló Verilog como un lenguaje de simulación.
  • En 1989 Cadence compró Gateway y en 1990 puso Verilog en dominio público.
  • Posteriormente se desarrollo Verilog como un estándar del IEEE (IEEE 1364 (1995 y 2001)
  • Verilog es un lenguaje tipo C
  • Verilog permite describir diseños a distintos niveles de abstracción
    • nivel algoritmo (similar a un código C con construcciones if, case y loops)
    • nivel transferencia de registros (usa registros conectados por ecuaciones booleanas)
    • nivel de puertas (interconexión de puertas)
    • nivel de conmutadores (los conmutadores son los transistores MOS que implementan las puertas lógicas, no lo vamos a cubrir aquí)
  • Verilog define también construcciones para controlar la entrada y la salida de la simulación
  • Las herramientas de síntesis no soportan todas las construcciones de Verilog

Ingeniería de Computadores

Revisión de Verilog. Introducción. Ejemplos

Ejemplo 1. Modelo comportamiento de circuito combinacional

(tomado del material de Estructura de Computadores de 1º)

Describimos el circuito capturando su funcionalidad, usando para ello operadores de verilog,

Ingeniería de Computadores

Revisión de Verilog. Introducción. Ejemplos

Ejemplo 3. Modelo comportamiento de circuito secuencial

(tomado del material de Estructura de Computadores de 1º)

Describimos el circuito capturando su funcionalidad, usando construcciones propias de un lenguaje de programación

Ingeniería de Computadores

Revisión de Verilog. Introducción. Ejemplos

  • Ejemplo 4. testbench : un código verilog que instancia un diseño y describe qué aplicamos en sus entradas (estímulos) al simularlo ‘timescale 1ns/1ns module comp _test integer i, j; reg [1:0] a, b; initial #1000 $finish ; Initial begin for (i=0; i<=3; i=i+1) begin for (j=0; j<=3; j=j+1) begin a=i; b=j; # 10; end end end comp v_1(out1, out2, out3, a, b); endmodule

Un HDL tiene implícita una semántica de tiempos asociada a sus objetos (señales) porque modela su evolución- Define unidad de tiempo y precisión

Describimos la evolución temporal de las señales a y b. Cada 10ns a y b cambian. Recorren todas las combinaciones posibles.

Estas señales a y b se usan como entradas del circuito que se simula (comp). Su descripción estaría en otro module

Control de la simulación. Simulamos hasta1000 ns

Ingeniería de Computadores

Revisión de Verilog. Estructura. Contenidos del module

module el_diseño ();  Declaraciones de puertos  Declaración de parámetros  Declaración de tipos de datos  Asignamientos continuos ( assign )  Instanciado de primitivas  Instanciado de módulos  Declaración de tareas y funciones  Comportamientos (procedimientos, procesos) initial, always Asignamientos procedurales (blocking (=), non-blocking (<=), continuos) Bucles (for, repeat, while, forever) Control de flujo (if, condicional, case, wait, disable) Funciones y tareas del sistema Funciones y tareas del usuario endmodule

Ingeniería de Computadores

Revisión de Verilog. Modelado estructural

 Los módulos se instancian dentro de otros módulos  La excepción es el módulo del nivel más alto que es su propia instancia  No se pueden instanciar modules en procedimientos  Sintaxis

Ejemplo. Instanciado de componentes

module_name instance_name_1 (lista_conexiones_terminales), instance_name_2 (lista_conexiones_terminales);

wire [3:0] in1, in2; wire [3:0] o1, o2; // C1 es una instancia del module and // los términales de C1 referenciados por posición and4 C1(in1, in2, o1); // C2 es otra instancia del modulo and // los terminales de C2 referenciados por nombre and4 C2(.c(o2), .a(in1), .b(in2));

// Definición de and module and4(a, b, c); input [3:0] a, b; output [3:0] c; assign c=a&b; endmodule

Ingeniería de Computadores

Revisión de Verilog. Sintaxis básica

Verilog es sensible a minúsculas y mayúsculas. Las palabras claves (reservadas) son minúsculas  Identificadores definidos por el usuario: pueden utilizar letras (mayúsculas y minúsculas), dígitos (no al principio), $ (no al principio), guion bajo  Las directivas de compilación comienzan por ‘  Las funciones y tasks del sistema comienzan por $  Comentarios : // lo que sigue hasta el final de línea es un comentario / esto es un comentario /  Valores lógicos Verilog tiene predefinido un conjunto de 4 valores lógicos : {1, 0, x, z}. Se usa x para valores desconocidos o no inicializados mientras que z define un estado de alta impedancia  Parametros permiten que una constante se pueda utilizar simbólicamente module sumador(A, B, S); parameter Width = 32; input [Width -1: 0] A, B; output [Width:0] S; assign S = A + B; endmodule

Ingeniería de Computadores

Revisión de Verilog. Sintaxis básica

 Números

 Constantes enteras

<número>

valor decimal que especifica cuantos bits representan el valor almacenado, opcional  decimal (d o D), hex (h o H), octal (o ó O) y binary ( b o B), decimal por defecto  valor en la base indicada  Pueden ir precedidos de + (-) para indicar el signo  Pueden utilizarse underscores para mejorar la legibilidad

Número #bits Base equivalente dec. almacenado

2’b10 2 binaria 2 10 3’d5 3 decimal 5 101 3’b5 no valido ‘ha - hexadecimal 10 depende de la máquina -45 - decimal -45 dep. máquina

Ingeniería de Computadores

Revisión de Verilog. Sintaxis básica. Tipos de datos

 Nets (conectividad estructural)

 Análogo a un cable (nodo) en un circuito  Pueden ser asignados implícitamente por módulos al instanciarlos (“se conectan a las salidas”)  Puede ser asignado en un asignamiento continuo o un force...release  Por defecto escalar, pueden definirse vectores y arrays  Nets no explícitamente declarados son wire  Sintaxis: tipo_net [msb:lsb] [#delay] identificador;

  • tipo_net: wire, supply0, supply1, tri, wand

Ejemplos wire y1, z_5; // declara dos wires wire [7:0] data_bus; // declara un vector de 8 wires (bus) wire A= B + C; // se hace una asignación al declarar A wire #2 y; // asigna un retraso de 2 unidades

 Variables (almacenamiento)

Ingeniería de Computadores

Revisión de Verilog. Sintaxis básica. Tipos de datos

 Nets (conectividad estructural)

 Variables (almacenamiento, como en los lenguajes de programación)

 Se asignan en sentencias procedurales (dentro de un initial o un always), funciones o tasks  Conservan su valor hasta la siguiente asignación  reg

  • Almacena un valor lógico
  • No solo se usan para describir registros hardware
  • Se interpreta sin signo a menos que se especifique lo contrario
  • Ejemplos reg a: reg [5:0] a, b; reg [31:0] cce [0:1023]; // 1024 palabras de 32-bits reg signed [3:0] b_s reg [1:0] IREG = 2’b11; // se asigna un valor inicial a IREG al declararla

 Integer, real, time, realtime