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
-
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.
-
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
-
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
-
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
entorno de Ubuntu
- 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 - Escribir código Verilog y banco de pruebas.
- 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 - 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