You are on page 1of 20

HƯỚNG DẪN MODELSIM

- ModelSim là chương trình mô phỏng và debug cho các thiết kế ASIC và FPGA cực kỳ mạnh mẽ và
hiệu quả, khi thiết kế FPGA chúng ta có thể dùng Modelsim để mô phỏng, kiểm tra, test chương
trình…

- ModelSim là môi trường debug cho các ngôn ngữ như Verilog HDL, VHDL, System C. ModelSim
hiện nay có các phiên bản là PE,LE,SE,XE. ModelSim PE và LE dùng cho các thiết kế nhỏ và trung
bình, trong khi bản SE dùng cho các thiết kế FPGA lớn hơn. Các phiên bản PE và SE có trả phí,
phiên bản XE và phiên bản Student Edition là miễn phí.
Các bạn có thể đăng ký và download tại :
http://www.model.com

Hướng dẫn sử dụng.


- Đây là giao diện chương trình sau khi khởi động.

- Để bắt đầu chúng ta có thể mở các Project đã tạo trước đó hoặc là tạo Project mới

+ Mở Project trước đó: vào File → Open

+ Tạo Project trước đó: vào File → New → Project


- Chương trình sẽ mở ra cửa sổ Add items to the Project ta chọn Add Existing File nếu chúng ta đã
có sẵn file chương trình cần đưa vào project hoặc sẽ chọn Create New File 1 để tạo 1 file chương
trình mới 2.

- Ở đây chọn Open New File, một cửa sổ hiện ra ta điều file name và thay đổi ngôn ngữ là Verilog.
Một cửa sổ mới hiện ra, của ta sẽ soạn thảo chương trình Verilog hoặc testbench ở phần bên phải
như hình dưới

- Sau khi đã soạn thảo xong chương trình hoặc thêm các file chương trình đã có sẵn vào thiết kế ta
tiến hành dịch chương trình bằng cách mào menu Compile → Compile All hoặc click vào nút lệnh
Compile All trên thanh công cụ.
- Ta thấy phía dưới cùng của giao diện có khung Transcript, đây là nơi thông báo kết quả ta chạy
chương trình, thông báo lỗi ,ta có thể click đôi chuột vào ngay dòng báo lỗi để xem thông tin chi tiết
về lỗi gặp phải.

- Trên đây là cách mô phỏng thủ công. Trong bài này, để thuận tiện cho việc mô phỏng chúng ta sử
dụng các lệnh trong khung Transcipt để phục vụ cho quá trình mô phỏng nhanh và thuận tiện hơn.

- Đầu tiên chúng ta tạo ra 1 folder lưu trong máy tính chứa 2 folder con như hình dưới:

- Trong rtl folder chúng ta sẽ lưu RTL coding, trong sim folder chúng ta sẽ lưu Testbench mô phỏng
và TCL file có tên là run.tcl, lệnh mà ta sẽ chạy trong Transcript.
- Sau khi tạo xong vào File ->Change Directory chọn đến thư mục sim đã tạo ở trên.
- Ở cửa sổ Transcipt ta nhấn do run.tcl, ngay sau đó cửa sổ ware sẻ hiện ra kết quả của dạng sóng
tín hiệu.
Bước 1: Khởi động ModelSim có giao diện sau

Bước 2: Vào File/New/Project…

Project Location: chọn thư mục lưu project (Chú ý rằng việc tạo một
thư mục mới cũng phải dùng ModelSim. Nếu bạn tạo thư mục mới thông
thường từ WINDOWN thì sau này sẽ không chạy mô phỏng được - xem hình
sau)
Project Name: Gõ tên project (phải trùng với tên file top mà bạn tính
mô phỏng) Default Library Name: các bạn để nguyên, Ở đây tôi làm
một encoder_16_4. Nhấn OK

Bước 3: Sau khi Nhấn OK - có khung sau:


Create new file: Tạo file mới. Add Existing file: Thêm file có sẵn
(ví dụ: bạn đã viết file verilog sẵn và để đâu đó, bạn chỉ cần copy file
đó vào thư mục mà bạn tạo project, bấn vào đây để thêm file đó vào) Ở
đây tôi tạo file mới

File name: Tên file Add file as type: Chọn loại file cần tạo Folder:
Cứ để Top Level Nhấn OK. Trong cửa sổ WorkSpace xuất hiện file cần tạo
với trạng thái “?” (nghĩa là chưa được tổng hợp, kiểm tra).
Nếu cần tạo thêm file khác thì làm lại bước 3. Xong ta Close để sang bước 4.

Bước 4: Viết RTL code - Nhấp đôi chuột vào tên file trong cửa sổ Workspace sẽ hiện ra cửa sổ edit
để viết RTL code.

Bước 5:
Compile thiết kế - Nhấp chuột phải vào tên file vừa viết code xong. Chọn
Compile Selected: Chỉ kiểm tra file chọn. Compile All: Kiểm tra tất cả
các file trong cửa sổ workspace.

Bước 6: Sửa lỗi (nếu có). Nếu có lỗi, ModelSim sẽ hiện dòng chữ đỏ thông báo. Nhấp đôi chuột vào
nó để tìm vị trí lỗi và sửa.

Sửa và Compile lại cho đến khi có dòng thông báo successful màu xanh
Thế là chúng ta hoàn thành phần viết RTL code và compile thiết kế
trong ModelSim.

Sau khi tạo xong một project, viết RTL code và compile. Khâu tiếp
theo là chúng ta mô phỏng kiểm tra. Ví dụ được thực hiện ở đây là
encoder_16_4, ngõ ra sẽ chỉ vị trí của ngõ vào được tích cực và nếu có
hơn hai ngõ vào bằng 1 thì ngõ ra bằng 0.

Bảng giá trị của encoder_16_4:

Trước hết đây là RTL code của encoder_16_4:

module encoder_16_4(
enable, // tin hieu cho phep
binary_out, // 4 bit ngo ra
encoder_in // 16-bit ngo vao

);
//ngo vao
input enable;
input [15:0] encoder_in;

//ngo ra
output [3:0] binary_out;

//kieu ngo ra
reg [3:0] binary_out;

//chuong trinh chinh


always @ (enable or encoder_in)
begin
binary_out = 0;
if (enable) begin
case (encoder_in)
16'h0002 : binary_out = 4'd1;
16'h0004 : binary_out = 4'd2;
16'h0008 : binary_out = 4'd3;
16'h0010 : binary_out = 4'd4;
16'h0020 : binary_out = 4'd5;
16'h0040 : binary_out = 4'd6;
16'h0080 : binary_out = 4'd7;
16'h0100 : binary_out = 4'd8;
16'h0200 : binary_out = 4'd9;
16'h0400 : binary_out = 4'd10;
16'h0800 : binary_out = 4'd11;
16'h1000 : binary_out = 4'd12;
16'h2000 : binary_out = 4'd13;
16'h4000 : binary_out = 4'd14;
16'h8000 : binary_out = 4'd15;
endcase
end
end

endmodule

Để mô phỏng kiểm tra ta thực hiện như sau:

Bước 1: Tạo testbench

Nhấp chuột phải vào vùng trống của cửa sổ Workspace. Chọn Add to project/New file…
Cửa sổ Create Project File xuất hiện
Điền tên file (tb_encoder_16_4) và chọn loại file cần tạo (verilog).
Nhấn OK. Cửa sổ edit xuất hiện và chúng ta gõ file testbench vào

Đây là nội dung file testbench (viết cơ bản theo hướng dẫn ở topic “Help me – viết testbench”)
module tb_encoder_16_4;

//ngo vao gan gia tri test


reg enable;
reg [15:0] encoder_in;

//ngo ra quan sat


wire [3:0] binary_out;

//goi module test


encoder_16_4 encoder(
enable, // tin hieu cho phep
binary_out, // 4 bit ngo ra
encoder_in // 16-bit ngo vao
);

//phan gan gia tri test


initial
begin
enable = 1'b0;
encoder_in = 16'h0001;
#500
enable = 1'b1;
#200
encoder_in = 16'h0002;
#200
encoder_in = 16'h0004;
#200
encoder_in = 16'h0008;
#200
encoder_in = 16'h0010;
#200
encoder_in = 16'h0020;
#200
encoder_in = 16'h0040;
#200
encoder_in = 16'h0080;
#200
encoder_in = 16'h0100;
#200
encoder_in = 16'h0200;
#200
encoder_in = 16'h0400;
#200
encoder_in = 16'h0800;
#200
encoder_in = 16'h1000;
#200
encoder_in = 16'h2000;
#200
encoder_in = 16'h4000;
#200
encoder_in = 16'h8000;
#200
encoder_in = 16'h1010;
end

endmodule

Bước 2: Compile file testbench (như compile file RTL code)

Xuất hiện dòng báo successful là đã xong


Bước 3: Chạy mô phỏng

Trong cửa sổ Workspace chọn thẻ Library, chọn mục work ta sẽ thấy hai file đã được compile như
sau

Nhấp đôi chuột vào dòng có tên file testbench để bắt đầu chạy mô phỏng. Sau khi nhấp đôi chuột
ta có kết quả như sau
Trong hình trên, ô bên phải ta thấy hai dòng có chữ “Loading” báo đã
tải thành công hai file bao gồm file thiết kế encoder_16_4 và file
testbench tb_encoder_16_4.

Bước 4: Chỉnh khoảng thời gian cho một lần chạy mô phỏng

Từ bước này, chỉ cách chạy mô phỏng theo từng khoảng thời gian để
chúng ta có thể dễ dàng quan sát. Xem hình sau để biết chỗ chỉnh khoảng
thời gian cho 1 lần chạy mô phỏng (tại hạ chỉnh 1000us – mặc định là
100us)

Bước 5: Bật cửa sổ tín hiệu “Signals”

vào View/Signals
Cửa sổ sau xuất hiện
Trong cửa sổ “Signals” vô Add/Wave để hiển thị các tín hiệu trong thiết kế lên cửa sổ chạy dạng
sóng Wave

Bước 6: Chạy dạng sóng


Cửa sổ Wave

Bấm nút RUN (khoang tròn màu vàng) để chạy dạng sóng. Một lần bấm
dạng sóng sẽ chạy 1 khoảng thời gian bằng khoảng thời gian chúng ta đã
thiết lập

Bước 7: Xem kết quả

Ta thấy kết quả mô phỏng đúng ý đồ thiết kế

You might also like