Monografias.com > Computación > Programación
Descargar Imprimir Comentar Ver trabajos relacionados

Diseño digital usando Verilog




Enviado por Pablo Turmero



    Monografias.com

    1
    Diseño Digital utilizando HDLs
    Los lenguajes de descripción de hardware (HDLs) permiten modelar sistemas digitales completos.

    Mediante herramientas de software estos modelos pueden luego “sintetizarse” para implementarlos como circuitos reales.

    La utilización de HDLs y su posterior síntesis puede tener como objetivo la creación de un circuito integrado de propósito específico (ASICs) o la implementación del circuito en algún dispositivo de lógica programable.

    Monografias.com

    2
    Diseño Digital utilizando HDLs
    Al utilizar un HDL es importante tener en cuenta que se está modelando hardware, y no escribiendo software.

    El software se caracteriza por ser secuencial, un procesador ejecutará una instrucción después de otra.
    En el hardware hay varias tareas que se ejecutan en forma concurrente.
    Los HDL poseen la habilidad de representar el paso del tiempo y secuenciar los eventos acordemente.
    Los HDL proveen tipos de datos orientados a hardware. Ej.: variables para representar Hi-Z

    Monografias.com

    3
    Diseño Digital utilizando HDLs
    Existen varios HDLs pero dos son los que predominan: Verilog y VHDL.

    Casi todo los fabricantes de PLDs proveen soporte para Verilog y VHDL

    Se está investigando en nuevos HDLs que incorporen mayores facilidades y prestaciones a las nuevas tecnologías y necesidades de los desarrolladores. Ej.: SystemC, SystemVerilog

    Monografias.com

    4
    VHDL
    Quiere decir VHSIC Hardware Description Lenguaje, a su vez, VHSIC proviene de “Very High Speed Integrated Circuit”.

    Surge en 1980 a partir del apoyo del departamento de defensa de Estados Unidos y la IEEE.

    Estandarizado en 1987 (IEEE 1076) conocido como VHDL-87. Extendido y modificado en 1993 (VHDL-93) y en el 2002 (VHDL-2002)

    Monografias.com

    5
    Verilog
    Desarrollado por una empresa privada (Gateway Design Automation) en 1984.

    Esta empresa es después adquirida por Cadence Design System.

    En 1990 Verilog se abre al dominio público.

    En 1995 es estandarizado por la IEEE.

    Monografias.com

    6
    Verilog vs. VHDL
    Mientras que Verilog proviene y tiene una sintaxis parecida de C, VHDL es parecido a Ada y Pascal.

    Para un mismo diseño, VHDL utiliza más sintaxis que Verilog.

    Verilog es más rápido de aprender.

    No tienen problemas de incompatibilidades (es posible realizar proyectos mixtos).

    Monografias.com

    7
    Consideraciones de Diseño
    Recordar siempre que se está modelando hardware.

    Aplicar la metodología de diseño de ingeniería, recordar siempre en dividir el problema.

    Tener en mente si se va a usar un PLD (y cual) o diseñar un ASIC.

    Definir el sistema en los diferentes niveles de abstracción y en los tres dominios diferentes.

    Monografias.com

    8
    Flujo de diseño de un circuito integrado

    Monografias.com

    9
    Niveles de abstracción y dominios
    El sistema digital puede definirse en distintos niveles de abstracción y en tres dominios diferentes: comportamiento, estructural y físico.

    El diseño debe ser integral, se debe tener presente lo anterior en todo momento.

    Para interpretar estos conceptos se usa el diagrama “Y” de Gajski y Kahn.

    Monografias.com

    10
    Niveles de abstracción y dominios
    Comportamiento
    Estructural
    Físico
    Procesador, memorias
    Registros, ALU
    Compuertas
    Transistores
    Floorplan
    Celdas estándares
    Sticks
    Polígonos
    Algoritmos
    RTL
    Ec. Lógicas
    Ec. Diferenciales
    Diagrama de Gajski-Kahn

    Monografias.com

    Sintaxis

    Monografias.com

    12
    Comandos
    Palabras reservadas para la invocación de funciones propias del lenguaje.

    Monografias.com

    13
    Variables
    Estructuras utilizadas para el almacenamiento y manejo de datos en Verilog.

    Existen 3 tipos fundamentales de variables:

    reg : registro y almacena un valor
    wire : “cable” que permite conexión
    tri : variable del tercer estado.

    Declaración:
    Tipo [msb:lsb] nombre ;
    Ejemplo:
    wire [31:0] BID;

    Monografias.com

    14
    Módulos
    Bloque constructivo básico en Verilog.
    Sintaxis:

    module Nombre (Entrada, Salida);

    input Entrada;
    Output Salida;

    Original Copia(Puertos);

    always @ (ListaDeSensibilidad) begin
    //Código
    end

    endmodule
    Declaración de módulo
    Declaración
    de puertos
    Procesos
    Instancias

    Monografias.com

    15
    Declaración del módulo
    Bloque de construcción básico, en Verilog un sistema digital está compuesto por la interconexión de un conjunto de módulos.

    Sintaxis

    module ();
    //Código
    endmodule

    Monografias.com

    16
    Declaraciones de Puertos
    Los puertos son los argumentos del módulo que le permiten comunicarse con el exterior, pueden ser de tres tipos:

    input

    output

    inout

    Monografias.com

    17
    input
    Son las entradas al módulo, son variables de tipo wire (mismo comportamiento de un cable).

    Sintaxis:

    input [MSB:LSB] Entrada;

    Ejemplos:

    input [4:0] Entrada1; //entrada de 5 bits

    input Entrada2; //entrada de 1 bit
    wire Entrada2;

    Monografias.com

    18
    output
    Son las salidas del módulo, pueden ser variables de tipo wire, cuado es combinacional o tipo reg (guarda el valor) cuando es secuencial.

    Sintaxis:

    output [MSB:LSB] Salida;

    Ejemplos:

    output [3:0] Salida1; //salida de 4 bits

    output Salida2; //salida de 1 bit
    reg Salida2;

    Monografias.com

    19
    inout
    Son puertos bidireccionales, de tipo wire.

    Sintaxis:

    inout [MSB:LSB] Dididireccional;

    Ejemplos:

    inout [4:0] Bider1; // Dididireccional de 5 bits

    inout [7:0] Bider; // Dididireccional de 8 bit
    wire [7:0] Bider;

    Monografias.com

    20
    Instancias
    Proceso por el cual se crean objetos a partir de un módulo base. Permiten diseñar modularmente, evitando así tener código “chorreado”.

    Se tiene un módulo como el que sigue:

    module Original (CLK, Reset, Variable);
    //Código
    endmodule

    El formato para crear una instancia de este módulo sería:

    Original Copia (localCLK, RESETlocal, VarLocal);

    El orden es muy importante en este tipo de instancia, cada puerto debe corresponder.

    Monografias.com

    21
    Instancias
    Existe otra forma de instanciar. Tenemos el módulo original:

    module Original (CLK, Reset, Variable);
    //Código
    endmodule

    El formato para crear la instancia sería:

    Original Copia (.CLK(localCLK), .Reset(RESETlocal), .Variable(VarLocal));

    El orden, en este caso, de los puertos no importa, pudiendo instancearse de la siguiente forma:

    Original Copia (.Reset(RESETlocal), .Variable(VarLocal), .CLK(localCLK));

    Monografias.com

    22
    Procesos
    Son estructuras que ejecutan código definido en ellas.

    Se ejecutan paralelamente, es decir que los procesos se puede ejecutar simultáneamente.

    Los más utilizados son:

    Initial

    always

    Monografias.com

    23
    initial
    Solo se ejecutan una vez, este proceso solo se utiliza para simulación.

    Formato:

    initial begin
    //Código
    end
    Ejemplo:

    initial begin
    A = 0;
    C = D && E;
    end

    Monografias.com

    24
    always
    Se ejecutan siempre que ocurra algún cambio en la lista de sensibilidad.

    La lista de sensibilidad son variables, las cuales, al momento que cambian de valor, activan el always.

    El always es utilizado para definir tanto procesos combinacionales como secuenciales.

    Monografias.com

    25
    always
    Formato:

    always @ ( ) begin
    //Código
    end

    Ejemplos

    always @ (A or B or C) begin
    if(B) begin
    E = C;
    D = 1
    end else
    E = 0;
    D = 0;
    end
    end

    Monografias.com

    26
    always
    Ejemplos

    always @ (posedge CLK) begin
    if(Reset) Var = 0;
    else Var = E;
    end

    always @ * begin // Al solo poner ‘*’ es sensible
    if(B) begin // a todas las entradas del módulo
    E = C;
    D = 1
    end else
    E = 0;
    D = 0;
    end
    end

    Monografias.com

    27
    Uso de puertos de un módulo
    module incrementer(go,out,clk,rst);
    input go,clk,rst;
    output[11:0] out;
    reg[11:0] out;

    always @ (posedge clk or negedge rst) begin
    if(!rst)
    out = 12’b0;
    else if(go)
    out = out + 1;
    end
    endmodule

    Si un puerto de salida y una variable
    reg tienen mismo nombre, Verilog in-
    fiere un cable entre ellos, “cable implicito”
    Un puerto de entrada se puede usar
    directamente en el codigo pues Verilog
    infiere un cable (wire) tambien

    Monografias.com

    28
    assign (continuous assignment)
    Otra estructura muy usada es el assign, usada para declarar estructuras combinacionales.

    Ejemplo:
    assign A = B | C;
    La variable A debe ser de tipo wire
    No se utiliza dentro de un always o initial, pues el assign implica ejecucion concurrente, no secuencial

    always (posedge CLK) begin
    assign A = B | C;
    end

    Monografias.com

    29
    assign
    El assign tambien se puede usar para construir un “if”:

    assign A = (Condición)? B: C;

    Si la condición es verdadera: A = B, sino A = C.

    Ejemplos:

    assign A = (Bandera == 1)? B: C;
    assign A = (Bandera)? B: C;
    assign Salida = (Sel == 0)? Entrada1: Entrada2;
    assign Salida = (!Sel)? Entrada1: Entrada2;

    Monografias.com

    30
    Operadores
    Comandos utilizados para realizar operaciones sobre variables.

    Tipos:
    Aritméticos
    Relacionales
    Lógicos
    Lógica bit a bit
    Lógica de reducción
    Otras

    Monografias.com

    31
    Binarios aritméticos
    Realizan operaciones aritméticas entre dos operandos.

    Tipos:
    + suma
    – diferencia
    * multiplicación
    / división
    % resto

    Monografias.com

    32
    Relacionales
    Realizan una operación de comparación sobre dos operandos y devuelven un valor booleano.

    Tipos:
    > mayor que
    >= mayor o igual que
    < menor que
    desplazamiento derecha, con adición de ceros
    ?: condicional

    Monografias.com

    37
    Estructuras de control
    Estructuras de programación utilizadas para el manejo de datos.

    If
    case
    for
    while
    repeat
    wait

    Monografias.com

    38
    if
    Función:
    Ejecuta codigo de manera condicional.

    Formato:
    if(condicion)codigo1;
    else codigo2;

    Monografias.com

    39
    case
    Función:
    Ejecuta la n-esima porción de codigo asociada con el valor de la variable que se esta evaluando.

    Formato:
    case(expresión)
    Opcion1:codigo1;
    Opcion2:codigo2;
    Opcion3:codigo3;
    default:codigo_predeterminado;
    endcase

    Monografias.com

    ESTA PRESENTACIÓN CONTIENE MAS DIAPOSITIVAS DISPONIBLES EN LA VERSIÓN DE DESCARGA

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter