ModelSim软件仿真步骤教程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使用ModelSim模擬驗證HDL code
1.在模擬前先準備好我們要模擬的電路檔案(Verilog HDL,TestBench,…)
2. 打開ModelSim,新建一個Project,鍵入Project name 按OK。此處我們的library name 為default library name “work”不必更改。
3.然後再加入我們所要模擬的電路檔案(若尚未準備,可開啟新檔案再將code 鍵入)選Add Existing File,將我們已編輯好的檔案加入。
將我們所需要的檔案加入,按Browse選擇我們所需檔案count.v,
count_test.vt),按下OK。
再將先前所開啟的增加檔案的視窗關閉,按close。
4.按下compile all。
Compile成功沒有顯示出錯誤訊息, 則開始模擬波形
5.按下Simulation, 選擇檔案所在的Library (work), 點選TestBench的Module
Name t_Gap_finder 按OK
6.承接上步驟將會跳出以下視窗,若要將所有訊號加入波型中觀察則選擇在
testbench的module name: count_tst按滑鼠右鍵選擇→ Add →
Add to Wave。
7.在波型畫面按下Run All開始模擬
跑完後會跳出下面視窗選擇否則可觀察模擬波形,若按下是則會將ModelSim關閉。
8.觀察波形圖是否與功能符合,若與設計不符則修改設計並重複執行Step 4到
Step 8
Testbench語法
`timescale 1 ps/ 1 ps 前面的1ps代表程式中最小的時間單位
後面的1ps代表運算的精準度
module count_tst(); testbench命名括號內不用加I/O
reg clk; 將Input設為reg
reg [7:0] in;
reg reset;
reg start;
reg load;
wire [3:0] num; Output設為wire
count i1 ( 將要測試的HDL名字寫進來,il 只是一個隨便的命名
.clk(clk), 將HDL的port和testbench的port做連接
.in(in),
.num(num),
.reset(reset),
.start(start),
.load(load)
);
initial clk=0; initial為只執行一次的訊號,clk訊號一開始為0 initial #150000 $finish; 經過150ns結束模擬
always always用在重複性的訊號clock就是一種begin 設定每5ns clk訊號反向
#5000 clk=!clk;
end
initial 設定in訊號為01101101
begin
in = 8'b01101101;
end
initial 設定reset訊號一開始為0,經過10ns為1,begin 再經過10ns又變為0
reset = 1'b0;
reset = #10000 1'b1;
reset = #10000 1'b0;
end
initial
begin
load= 1'b0;
load= #30000 1'b1;
load= #10000 1'b0;
end
initial
begin
start = 1'b0;
start = #60000 1'b1; end
endmodule