首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
FPGA/CPLD可编程逻辑
» ModelSim仿真入门
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
ModelSim仿真入门
发短消息
加为好友
pengpengpang
(pengpengpang)
当前离线
UID
1023229
帖子
6106
精华
0
积分
3055
阅读权限
90
来自
中国
在线时间
156 小时
注册时间
2013-12-20
最后登录
2016-7-3
论坛元老
UID
1023229
来自
中国
1
#
打印
字体大小:
t
T
pengpengpang
发表于 2014-8-18 20:06
|
只看该作者
ModelSim仿真入门
Create
,
对话框
,
工程
注:本文记录内容在ModelSim6.2b、ModelSim6.5、ModelSim10.1a中均做过。
本文以一个四分频的Verilog程序为例,记录一下自己学习的ModelSim的入门过程。除了帮自己加深记忆,希望对别人有一点帮助。
一,建立工程
点击”File”->”New”->”Project”,出现”Create Project”对话框,如图:
填入工程名,修改工程保存路径,其他的一般都保持不变。点击”OK”后,会出现如下对话框:
可以看出来,有多种方式可以添加源文件,也可以添加目录等。这里我选择”Create New File”,出现如下对话框:
输入文件名字,并选择文件类型位Verilog,然后点击”OK”。之后会在”Project”选项卡中出现你刚才建立的文件,我这里建立的是”clk_div”。可以看到状态栏有一个问号,这表示该文件还没有编译;双击该文件,出现编辑窗口,输入你的程序。这里我的四分频程序如下:
module clk_div
(
input wire clk,
input wire reset,
output wire div_clk
);
reg counter;
reg temp_divclk;
always@(posedge clk, negedge reset)
if(!reset)
begin
counter <= 1'b0;
temp_divclk <= 1'b0;
end
else if(counter >= 1'b1)
begin
counter <= 1'b0;
temp_divclk <= !temp_divclk;
end
else
counter <= counter + 1;
assign divclk = temp_divclk;
endmodule
输入完成后,保存。然后右键单击源文件,选择”Compile”->”Compile All”,如下图:
如果编译成功,会在下面输入命令的地方出现一行绿色的提示:”Compile of clk_div.v was successful”。如果有错误,则返回重新修改源文件,再编译,直到没有错误。
编译完后,点击”Library”标签栏,展开”work”库后,就可以看到编译后的设计文件了。
二,仿真
注:仿真有两种方式,一种是手动添加激励文件,另外一种是使用testbench文件。这里使用前者。
点击”Simulate”->”Start Simulate”,出现如下对话框,选择”work”下的”clk_div”。此处一定要注意,默认最下边的”Enable optimization”是选中的,一定要勾掉。因为我发现如果不勾掉的话,后面有的信号无法添加。
点击OK后,出现仿真界面。如下图:
为了观察波形,我们输入命令”view&nbps;signals wave”(当然也可以去view菜单里面添加),出现下图:
然后在”Objects”窗口中,选中要添加到”Wave”窗口中的信号(可以使用shift键和ctrl键多选),然后单击右键依次选择”Add”->”to Wave”->”Selected Signals”,便可以将想要观察波形的信号添加进去。如下图:
接下来,手动添加激励(添加一个50MHz的时钟):
为reset信号输入驱动:
force reset 0 0, 1 10
该命令表示0ns时刻reset的值为0,10ns以后reset的值为1
位clk信号输入驱动:
force clk 0 0, 1 10 -r 20
该命令表示0ns时刻clk的值为0,10ns开始clk值为1,-r 20表示在20ns处开始重复前面的状态。也即我们输入了一个(1/20ns)=50MHz的时钟。
然后开始仿真。输入命令”run 200us”,得到如下所示波形:
注:上面凡是用命令实现的都可以找到对应的GUI方式,但我发现其实命令特别好用,会有命令提示和自动补全。这可能是因为我是Linux用户,对命令行比较有好感。
收藏
分享
评分
记录学习中的点点滴滴,让每一天过的更加有意义!
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议