ại hạ xin dành bài này cho các bạn muốn tìm hiểu về cách mô phỏng cơ bản...

17
ại hạ xin dành bài này cho các bạn muốn tìm hiểu về cách mô phỏng cơ bản bằng cách viết testbench với ModelSim, tại hạ xin nhấn mạnh là cơ bản vì không có ý định múa rìu qua mắt thợ. Đầu tiên bạn phải cài đặt ModelSim – hiện nay đã có các bản dành cho sinh viên miễn phí. Các bác có thể tìm và download ở đây. http://model.com/content/modelsim-pe-student-edition-hdl- simulation Các bản có thể khác nhau về giao diện và một số tính năng, thư viện, … nhưng căn bản cách làm không khác nhau. Sau khi cài đặt xong, chúng ta thực hiện như sau: 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)
  • date post

    29-Jul-2015
  • Category

    Documents

  • view

    222
  • download

    8

Transcript of ại hạ xin dành bài này cho các bạn muốn tìm hiểu về cách mô phỏng cơ bản...

Page 1: ại hạ xin dành bài này cho các bạn muốn tìm hiểu về cách mô phỏng cơ bản bằng cách viết testbench với ModelSim

ại hạ xin dành bài này cho các bạn muốn tìm hiểu về cách mô phỏng cơ bản bằng cách viết testbench với ModelSim, tại hạ xin nhấn mạnh là cơ bản vì không có ý định múa rìu qua mắt thợ.

Đầu tiên bạn phải cài đặt ModelSim – hiện nay đã có các bản dành cho sinh viên miễn phí.

Các bác có thể tìm và download ở đây. http://model.com/content/modelsim-pe-student-edition-hdl-simulation Các bản có thể khác nhau về giao diện và một số tính năng, thư viện, … nhưng căn bản cách làm không khác nhau. Sau khi cài đặt xong, chúng ta thực hiện như sau:

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)

Page 2: ại hạ xin dành bài này cho các bạn muốn tìm hiểu về cách mô phỏng cơ bản bằng cách viết testbench với ModelSim

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ác cứ để nguyên Ở đây tại hạ làm một encoder_16_4. Nhấn OK

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

Page 3: ại hạ xin dành bài này cho các bạn muốn tìm hiểu về cách mô phỏng cơ bản bằng cách viết testbench với ModelSim

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 hạ 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).

Page 4: ại hạ xin dành bài này cho các bạn muốn tìm hiểu về cách mô phỏng cơ bản bằng cách viết testbench với ModelSim

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.

Page 5: ại hạ xin dành bài này cho các bạn muốn tìm hiểu về cách mô phỏng cơ bản bằng cách viết testbench với ModelSim

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. Bài sau tại hạ sẽ hướng dẫn một món mô phỏng đơn giản, dễ làm – dễ xơi.

‹ Verilog simulatorFormal Verification ›

====== Kiến thức cho mọi người ======

Top

Page 6: ại hạ xin dành bài này cho các bạn muốn tìm hiểu về cách mô phỏng cơ bản bằng cách viết testbench với ModelSim

4614 reads 

 

 Bản in 

 Gửi Email cho bạn bè

Comment viewing options

 

 

 

Select your preferred way to display the comments and click "Save settings" to activate your changes.Sun, 25/04/2010 - 06:45

#1phi_thien_dao

OfflineLast seen: 3 weeks 1 day ago

Joined: 15/04/2010

Re:ModelSim - Căn bản và ngon - Mời các bác cùng xơi

Bài 2: Viết TestBench và mô phỏng

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:

Page 7: ại hạ xin dành bài này cho các bạn muốn tìm hiểu về cách mô phỏng cơ bản bằng cách viết testbench với ModelSim

module encoder_16_4(enable,       //  tin hieu cho phepbinary_out, //  4 bit ngo raencoder_in //  16-bit ngo vao

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

//ngo raoutput [3:0] binary_out;

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

//chuong trinh chinhalways @ (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   endend

endmodule

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

Bước 1: Tạo testbenchNhấp chuột phải vào vùng trống của cửa sổ Workspace. Chọn Add to project/New file…

Page 8: ại hạ xin dành bài này cho các bạn muốn tìm hiểu về cách mô phỏng cơ bản bằng cách viết testbench với ModelSim

Cửa sổ Create Project File xuất hiện

Page 9: ại hạ xin dành bài này cho các bạn muốn tìm hiểu về cách mô phỏng cơ bản bằng cách viết testbench với ModelSim

Đ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 testreg  enable;reg [15:0] encoder_in;

//ngo ra quan satwire [3:0] binary_out;

//goi module testencoder_16_4 encoder(enable,       //  tin hieu cho phepbinary_out, //  4 bit ngo raencoder_in //  16-bit ngo vao);

//phan gan gia tri testinitialbeginenable = 1'b0;encoder_in = 16'h0001;#500enable = 1'b1;#200encoder_in = 16'h0002;

Page 10: ại hạ xin dành bài này cho các bạn muốn tìm hiểu về cách mô phỏng cơ bản bằng cách viết testbench với ModelSim

#200encoder_in = 16'h0004;#200encoder_in = 16'h0008;#200encoder_in = 16'h0010;#200encoder_in = 16'h0020;#200encoder_in = 16'h0040;#200encoder_in = 16'h0080;#200encoder_in = 16'h0100;#200encoder_in = 16'h0200;#200encoder_in = 16'h0400;#200encoder_in = 16'h0800;#200encoder_in = 16'h1000;#200encoder_in = 16'h2000;#200encoder_in = 16'h4000;#200encoder_in = 16'h8000;#200encoder_in = 16'h1010;end

endmodule

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

Page 11: ại hạ xin dành bài này cho các bạn muốn tìm hiểu về cách mô phỏng cơ bản bằng cách viết testbench với ModelSim

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

Page 12: ại hạ xin dành bài này cho các bạn muốn tìm hiểu về cách mô phỏng cơ bản bằng cách viết testbench với ModelSim

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ỏngTừ bước này, tại hạ 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

Page 13: ại hạ xin dành bài này cho các bạn muốn tìm hiểu về cách mô phỏng cơ bản bằng cách viết testbench với ModelSim

Cửa sổ sau xuất hiện

Page 14: ại hạ xin dành bài này cho các bạn muốn tìm hiểu về cách mô phỏng cơ bản bằng cách viết testbench với ModelSim

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

Page 15: ại hạ xin dành bài này cho các bạn muốn tìm hiểu về cách mô phỏng cơ bản bằng cách viết testbench với ModelSim

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ế

:silly: :silly: :silly: Chúc một ngày đẹp

====== Kiến thức cho mọi người ======

Top

 

Wed, 02/03/2011 - 14:41

#2

Page 16: ại hạ xin dành bài này cho các bạn muốn tìm hiểu về cách mô phỏng cơ bản bằng cách viết testbench với ModelSim

kathykg

OfflineLast seen: 52 weeks 8 hours ago

Joined: 02/03/2011

Về: Re:ModelSim - Căn bản và ngon - Mời các bác cùng xơi

 

 Bác phi_thien_dao ơi !  Em bắt đầu dung VDHL để viết chương trình mô phỏng mạch cộng mà chưa viết và làm như thế nào?..Em thấy của Bác hay...Bác hướng dẫn hoặc có fike gì cho em xin được ko?..Cám ơn

Bác phi_thien_dao.

Top

 

Sun, 06/03/2011 - 06:55

#3rockuallOffline

Last seen: 3 weeks 4 days agoJoined: 11/01/2011

Về: Re:ModelSim - Căn bản và ngon - Mời các bác cùng xơi

VHDL & Verilog về căn bản điều giống nhau as hardware design language. VHDL is older language with strictly rules nên viết sẻ dài dòng hơn nhiểu. Bạn nên học về Verilog hơn bởi vì EDA tools such as compiler, logic synthesis, and place and route tools support Verilog nhiều hơn. Với System Verilog which is combined Verilog and borrowed from Verification language such as Specman-E có thể đươc ứng dụng rộng rãi hơn in the future.

Top

 

Sat, 26/11/2011 - 16:03

#4langtuOffline

Last seen: 21 weeks 2 days agoJoined: 01/12/2009

Về: ModelSim - Căn bản và ngon - Mời các bác cùng xơi

Bác phithiendao chem nghe "đã" quá. Rất hữu ích cho các bạn mới học về ASIC hay FPGA!

Mong bác chem nhiều hơn để anh em thêm nhờ.

Top

 

Sun, 18/03/2012 - 21:30

#5hbtien (not verified)

Về: ModelSim - Căn bản và ngon - Mời các bác cùng xơi

 Cảm ơn bạn đã viết bài này, nó rất hữu ích cho mình vì mình mới tập tành vào nghề àh, mong sẽ nhận đc nhiều cao chiêu hơn của bạn^^

Page 17: ại hạ xin dành bài này cho các bạn muốn tìm hiểu về cách mô phỏng cơ bản bằng cách viết testbench với ModelSim

Have funny day!!