versión ligera plataforma de simulación Verilog: Icarus Verilog Introducción

Como ingeniero de software, es necesario tener algún conocimiento del lenguaje Verilog, Verilog proceso de aprendizaje, tendrá necesariamente que ser simulado. software de simulación Verilog es común a los extranjeros básicas de EDA tres plantas en el proyecto: ModelSim de Mentor, de la empresa cadencia NC-Sim / NC-Verilog y Synopsys VCS.
Para que respecta aprendizaje individual, éstos gran carga para el software no es muy adecuado. Aquí recomendamos una versión ligera de plataforma de simulación Verilog, es conveniente para los principiantes y los que necesitan una pequeña simulación: Ícaro Verilog + gtkwave. El primero puede ser considerado como un simulador, que es un vistazo a la forma de onda de software.
Ícaro Verilog código abierto, ventanas de apoyo y Linux. Descargar la dirección del sitio web oficial: http://bleyer.org/icarus/
Ícaro Verilog por debajo de un tutorial detallado:

entorno windows

  1. La instalación del software: Descarga de software http://bleyer.org/icarus/
    nueva versión del software tiene con gtkwave. Una vez instalado, la instalación por defecto.
    Después de la instalación, asegúrese de que iverilog se ha añadido a las variables del sistema, y si no, añadir manualmente sobre C: \ iverilog \ gtkwave \ bin y C: \ iverilog \ bin (por defecto aquí instalado en la unidad C)
    en Windows se puede instalar gratis archivo de instalación directamente copiado de otra persona también se puede utilizar. Pero también es necesario agregar la ruta a los archivos de instalación en la variable del sistema.
    Aquí Insertar imagen Descripción

  2. Escribir código Verilog y banco de pruebas. Finalmente, como un ejemplo de aplicación.
    Nota: Se necesita banco de pruebas siguientes dos frases, dos líneas se utilizan principalmente para GTKWave esta herramienta, se refieren al significado específico
    https://zhidao.baidu.com/question/13428173.html
    Aquí Insertar imagen Descripción

  3. Compilado de simulación
    a) bajo Windows, Windows + R, cmd entrada de comandos abierta; .v CD en la carpeta en el documento (este paso puede ser omitido, pero la necesidad de especificar una ruta de archivo en el paso b)
    b) la realización de iverilog -o DSN icarus_example.v obtener el DSN de archivo. (en este caso es el banco de pruebas verilog y el código fuente escrito en el mismo archivo x)
    c) DSN ejecución vvp
    Aquí Insertar imagen Descripción

  4. formas de onda de simulación abierta VCD GTKWave
    A) realizar test.vcd gtkwave (nombre VCD es nombrado en el banco de pruebas está, aquí test.vcd) para abrir la forma de onda de simulación
    Aquí Insertar imagen Descripción
    Aquí Insertar imagen Descripción

entorno de Ubuntu

  1. Descargar e instalar el software, es necesario la creación de redes. En privilegios de root,
    ejecutar apt-get install Verilog
    ejecutar apt-get install gtkwave
  2. Escribir código Verilog y banco de pruebas.
  3. Compilado de simulación (con entorno de ventanas)
    A) realizar iverilog -o DSN icarus_example.v obtener el archivo DSN.
    B) DSN ejecución vvp
  4. formas de onda de simulación abierta VCD GTKWave
    A) realizar test.vcd gtkwave (nombre VCD es nombrado en el banco de pruebas está, aquí test.vcd) para abrir la forma de onda de simulación

Ejemplo adjunto icarus_example.v fuente

module encoder(binary_out,encoder_in,enable);

output [3:0] binary_out;
input enable;
input [15:0] encoder_in;
reg [3:0] binary_out;

always @ (enable or encoder_in)
    begin
        binary_out = 0;
        if(enable) begin
            if(encoder_in == 16'h0002) begin
                binary_out = 1;
            end if(encoder_in == 16'h0004) begin
                binary_out = 2;
            end if(encoder_in == 16'h0008) begin
                binary_out = 3;
            end if(encoder_in == 16'h0010) begin
                binary_out = 4;
            end if(encoder_in == 16'h0020) begin
                binary_out = 5;
            end if(encoder_in == 16'h0040) begin
                binary_out = 6;
            end if(encoder_in == 16'h0080) begin
                binary_out = 7;
            end if(encoder_in == 16'h0100) begin
                binary_out = 8;
            end if(encoder_in == 16'h0200) begin
                binary_out = 9;
            end if(encoder_in == 16'h0400) begin
                binary_out = 10;
            end if(encoder_in == 16'h0800) begin
                binary_out = 11;
            end if(encoder_in == 16'h1000) begin
                binary_out = 12;
            end if(encoder_in == 16'h2000) begin
                binary_out = 13;
            end if(encoder_in == 16'h4000) begin            
                binary_out = 14;
            end if(encoder_in == 16'h8000) begin
                binary_out = 15;
            end
        end
    end
endmodule




module encoder_te();
    
    reg enable;
    reg [15:0] encoder_in; 
    wire [3:0] binary_out;
    
    initial begin
        $dumpfile("test.vcd");  // vcd name   
        $dumpvars(0,encoder_te); // testbench module name
        
        $monitor("%g\t %b %b %b",
                $time,enable,encoder_in,binary_out);
                
        enable = 0;
        #5 enable = 1;
        #5 encoder_in = 16'h0004;
        #6 encoder_in = 16'h0040;
        #7 encoder_in = 16'h0400;
        #8 encoder_in = 16'h1000;
        #10 $finish;        
    end
    
    encoder en(binary_out,encoder_in,enable);
    
endmodule


Referencia Wiki http://iverilog.wikia.com/wiki/Main_Page

Referencia al uso
http://www.cnblogs.com/zhuangzhuang1988/archive/2012/03/30/2425052.html

Publicado ocho artículos originales · ganado elogios 0 · Vistas 193

Supongo que te gusta

Origin blog.csdn.net/zgcjaxj/article/details/104853081
Recomendado
Clasificación