【Modelsim零基础入门】新建项目+运行第一个verilog仿真程序:一位加法器
生活随笔
收集整理的這篇文章主要介紹了
【Modelsim零基础入门】新建项目+运行第一个verilog仿真程序:一位加法器
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
本篇注釋比較詳細,由《Moselsim 第一個仿真程序 四位加法器》修改而來
原博客:https://blog.csdn.net/sinat_42483341/article/details/88970852
新建項目步驟:
1、File->New->Project
分別創(chuàng)建兩個verilog文件
填寫代碼(可以復制這篇下面的源程序),保存后編譯全部
下面這個控制臺輸出說明沒有bug,如果有bug,雙擊錯誤信息,會定位到錯誤所在行
simulate->start simulation,在work下選擇剛寫的兩個文件
右鍵單擊這兩個,分別“add wave”
點這個run
箭頭中標注了一些常用的功能,至此,仿真教程結束。
關于begin end 串行并行的易錯點
代碼一
源程序
//source program module myadd(sum,cout,a,b,cin); //output,output,input,inputinput a,b; //I change a from 4-bit to 1-bitinput cin;output cout;output sum; //I change sum from 4-bit to 1-bit assign {count,sum} = a+b+cin; //to always give value endmodule仿真程序
//Simulation program `timescale 1ns/1ns `include "MyFirstVerilog.v" module myadd_tb; //測試模塊的名字reg a,b; //測試輸入信號定義為 reg 型reg cin; //測試輸入信號進位設置為 reg 型wire sum; //測試輸出信號定義為 wire 型wire cout; //測試輸出信號進位定義為 wire 型integer i,j;myadd adder(sum,cout,a,b,cin); //調用測試對象(實例化)always #5 cin=~cin;//每5ns對cin進行一次取反//賦值initialbegin a=0;b=0;cin=0; #10 a<=1;b<=1;//這里使用非阻塞賦值,如果使用阻塞賦值a=1;b=1無法成功賦值end //定義結果顯示格式initialbegin $monitor($time,,,"%d + %d + %b={%b,%d}",a,b,cin,cout,sum);//控制臺輸出#20$finish; end endmodule查看波形
控制臺輸出
代碼二
源程序不變,仿真程序如下:
注意25~35行與原來代碼1的不同:代碼1是將a,b 的賦值放在一個initial - begin end中,而本代碼將a,b的賦值過程放在了兩個initial - begin end中。由于initial語句上電后便執(zhí)行一次,所以兩個initial仍然是并行的,本程序與原來程序運行效果相同。
//Simulation program `timescale 1ns/1ns `include "MyFirstVerilog.v" module myadd_tb; //測試模塊的名字reg a,b; //測試輸入信號定義為 reg 型reg cin; //測試輸入信號進位設置為 reg 型wire sum; //測試輸出信號定義為 wire 型wire cout; //測試輸出信號進位定義為 wire 型integer i,j;myadd adder(sum,cout,a,b,cin); //調用測試對象(實例化)always #5 cin=~cin;//每5ns對cin進行一次取反//賦值ainitialbegin a=0;b=0;cin=0; #10 a<=1; //從第10ns開始執(zhí)行,非阻塞賦值end //賦值binitialbegin #10 b<=1; //從第10ns開始執(zhí)行,非阻塞賦值end//定義結果顯示格式initialbegin $monitor($time,,,"%d + %d + %b={%b,%d}",a,b,cin,cout,sum);//控制臺輸出#20$finish; end endmodule從下圖看出,和代碼一的運行效果是完全一樣的
總結
以上是生活随笔為你收集整理的【Modelsim零基础入门】新建项目+运行第一个verilog仿真程序:一位加法器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#实验报告 类与对象的访问性:银行账户
- 下一篇: 【Modelsim零基础入门】veril