Anda di halaman 1dari 6

Tutorial ModelSim 6.0

Pada tutorial ini akan diperlihatkan cara compile dan simulasi modul-modul Verilog menggunakan

ModelSim6.0.

Tutorial 1

1. Copy script verilog pada tutorial ini dan simpan dengan nama prl2srl.v dan prl2srl_tb.v

2. Buka Modelsim6.0.

3. Pindah direktori kerja Modelsim ke direktori tempat Anda menyimpan file-file verilog tersebut. File > Change Directory

direktori kerja Modelsim ke direktori tempat Anda menyimpan file-file verilog tersebut. File > Change Directory
direktori kerja Modelsim ke direktori tempat Anda menyimpan file-file verilog tersebut. File > Change Directory

4.

Buat library baru bernama work. File > New > Library. Klik OK.

bernama work . File > New > Library . Klik OK . 5. Lalu Library Workspace
bernama work . File > New > Library . Klik OK . 5. Lalu Library Workspace

5. Lalu Library Workspace akan muncul library work. Compile file prl2srl.v dan prl2srl_tb.v verilog yang sudah dibuat. Compile file verilog yang sudah dibuat. Pilih work sebagai direktori compilenya. Modul yang sudah dicompile akan muncul pada library work. Compile > Compile.

Pilih work sebagai direktori compilenya. Modul yang sudah dicompile akan muncul pada library work. Compile >
Pilih work sebagai direktori compilenya. Modul yang sudah dicompile akan muncul pada library work. Compile >
Pilih work sebagai direktori compilenya. Modul yang sudah dicompile akan muncul pada library work. Compile >

6.

Simulasikan modul yang sudah dicompile. Pilih module prl2srl_tb pada library work. Simulate > Start Simulation.

pada library work. Simulate > Start Simulation. 7. Keluarkan window waveformnya. Pilih semua signal pada
pada library work. Simulate > Start Simulation. 7. Keluarkan window waveformnya. Pilih semua signal pada

7. Keluarkan window waveformnya. Pilih semua signal pada Object, klik kanan, kalu pilih Add to Wave > Selected Signal.

Keluarkan window waveformnya. Pilih semua signal pada Object, klik kanan, kalu pilih Add to Wave >

8. Run simulasinya dengan memencet icon Run -All. Waveform hasil simulasi akan keluar.

icon Run -All . Waveform hasil simulasi akan keluar. Tutorial 2 9. Tutup simualasinya. Simulate >

Tutorial 2

9. Tutup simualasinya. Simulate > End Simulation.

2 9. Tutup simualasinya. Simulate > End Simulation. 10. Buat do file . Copy script berikut

10. Buat do file. Copy script berikut dan simpan dengan nama prl2srl.do di folder yang sama dengan file-file verilognya.

quit -sim

vlib work

vlog prl2srl.v vlog prl2srl_tb.v

vsim work.prl2srl_tb

add wave -format Logic -Radix Binary -height 17 sim:/prl2srl_tb/clk add wave -format Logic -Radix Binary -height 17 sim:/prl2srl_tb/rst add wave -format Logic -Radix Binary -height 17 sim:/prl2srl_tb/en add wave -format Literal -Radix Binary -height 17 sim:/prl2srl_tb/datain add wave -format Literal -Radix Binary -height 17 sim:/prl2srl_tb/dataout add wave -format Literal -Radix Binary -height 17 sim:/prl2srl_tb/count

run -all

11. Jalankan script do file, pilih script prl2srl. Tools > Execute Macro.

do file, pilih script prl2srl. Tools > Execute Macro. 12. Selamat mencoba =D. (Yayan/Okt'07) Script Verilog.

12. Selamat mencoba =D. (Yayan/Okt'07)

Script Verilog.

prl2srl.v

module prl2srl ( clk, rst, en, prl, srl);

input

input [7:0] prl;

clk, rst, en;

output

srl;

reg

ctrl_state;

reg

[2:0] srl_cnt;

reg

[7:0] buff;

always @ (posedge clk) if (rst == 1'b1) ctrl_state <= 1'b0; else case (ctrl_state)

1'b0

: if (en == 1'b1) ctrl_state <= 1'b1;

1'b1

: if (en == 1'b0 || srl_cnt == 3'b111) ctrl_state <= 1'b0;

default : ctrl_state <= ctrl_state; endcase

always @ (posedge clk) if (rst == 1'b1) srl_cnt <= 3'b000; else if (ctrl_state == 1'b0) srl_cnt <= 3'b000; else srl_cnt <= srl_cnt+3'b001;

always @ (posedge clk) if (rst == 1'b1) buff <= 8'b00000000; else if (ctrl_state == 1'b0) buff <= prl; else if (ctrl_state == 1'b1) buff <= {buff[6:0], 1'b0};

assign srl = buff[7];

endmodule

prl2srl_tb.v

module prl2srl_tb;

reg

clk,

rst;

en; reg [7:0] datain;

wire

wire

dataout;

reg

[3:0] count;

prl2srl DUT(

.clk

(clk),

.rst

(rst),

.en

(en),

.prl

(datain),

.srl

(dataout));

initial begin datain = 8'd1; clk = 1'b1; #1000 $stop; end

always #5 clk = ~clk;

initial

begin

rst = 1'b1; #10 rst = 1'b0; end

always @ (posedge clk or posedge rst) if (rst) count <= 4'd8; else if (count == 4'd8) count <= 4'd0; else count <= count + 4'd1;

assign en = ~rst;

always @ (posedge clk or posedge rst) if (rst) datain <= 8'd0; else if (count == 4'd8) datain <= datain + 8'd1; else datain <= datain;

endmodule