- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1ModelSim的使用与Testbench的编写
ModelSim的使用与Testbench的编写
Quartus操作和语法后,需要对手头的工作进行仿真验证, Quartus 9.x自带的Vector Waveform已经淘汰掉了,必须用 ModelSim进行仿真。现在就开始一步步入手ModelSim,并通过与Quartus无缝衔接实现仿真。本文使用了ModelSim10.0c + QuartusII 10.0,其他版本基本雷同,请自行研究。
源程序如下:
module add(
mclk,
rst_n,
a_in,
b_in,
c_out
);
input mclk, rst_n;
input[7:0] a_in, b_in;
output[8:0] c_out;
reg[8:0] c_out;
always@(posedge mclk, negedge rst_n)
begin
if(!rst_n)
c_out = 9h0;
else
c_out = a_in + b_in;
end
endmodule
请建立工程,将源程序编译通过.
1.设置第三方EDA工具
在Tools - Options中设置ModelSim的安装路径,注意要设置到win32文件夹(64位软件对应的就是win64)。
建立一个工程(依然以加法器为例)。在Assignments - Settings中设置仿真工具为ModelSim。这样Quartus就能无缝调用ModelSim了。
?当然也可以在建立工程的时候就设置仿真工具。
?
2.编写Testbench
说到Testbench,你可以叫它Testbench,或者Testbenches,但不是Test Bench。说起来,就连Quartus也没注意这个问题,至于原因嘛参见Common Mistakes In Technical Texts一文。文章中还列举了些别的错误用语,包括Flip-flop不能写成Flipflop,等等。文章链接:
/papers/Technical_Text_Mistakes.pdf
?
我们可以通过Quartus自动生成一个Testbench的模板,选择Processing - Start - Start Test Bench Template Writer,等待完成后,在导航栏中打开刚才生成的Testbench,默认是保存在simulation\modelsim文件夹下的.vt格式文件。
?
打开vt文件后可以看到Quartus已经为我们完成了一些基本工作,包括端口部分的代码和接口变量的声明,我们要做的就是在这个做好的模具里添加我们需要的测试代码。
一个最基本的Testbench包含三个部分,信号定义、模块接口和功能代码。
表示仿真的单位时间为1ns,精度为1ps。想要进行仿真首先要规定时间单位,而且最好在Testbench里面统一规定时间单位,而不要在工程代码里定义,因为不同的模块如果时间单位不同可能会为仿真带来一些问题,而timescale本身对综合也就是实际电路没有影响。
其实Testbench本身可以看做一个模块或者设备(本例中的模块名为add_vlg_tst),和你自己编写的模块进行通信。通过Testbench模块向待测模块输出信号作为激励,同时接收从待测模块输出的信号来查看结果。因此,在待测模块中的reg型信号在Testbench中就变成了wire,待测模块中的wire型信号在Testbench中则对应为reg型。那么inout怎么办呢,inout型信号也要设成wire,同时要用一个reg型信号作为输出寄存器,同时设置一个三态门,由一个使能信号控制,如:assign?inout_sig = out_en ? out_reg : 1’bz;
?
处理完接口和声明之后,需要自己设置一些激励信号,激励信号的内容就是肯能会输入到待测模块中的波形。下面我们就来写一个简单的测试程序。
首先需要一个复位信号:
initial
begin
?? rst_n = 0;
?? #100 rst_n = 1;
end
initial开头的这个过程在Testbench中只执行一次,#100表示延时了100个时间单位,我们之前已经通过timescale进行了设置,这里延时了100ns。这就有点类似于C语言了,代码通过延时被顺序执行,rst_n在0时刻为低电平(也就是逻辑0),100ns后变成高电平,从而形成了一个上电复位。
?
其次是时钟,使用always模块来完成:
initial
begin
?? mclk = 0;
end
?
always
begin
#10 mclk = ~mclk;
end
always模块中的代码会不断重复执行,利用这个特点,每10ns翻转一次m
您可能关注的文档
- 服装风格第13——20世纪60年代太空风格解读.ppt
- 189#——有机化学(药).doc
- 服装贸易案例概要解读.ppt
- 各类合金元素对不锈钢性能的影响概要.doc
- 18、《月光启蒙》.ppt
- 各类人群的营养概要.ppt
- 18.可爱的童帽.ppt
- 18.鸟(课件).ppt
- 各类商业计划书模板概要.doc
- 日漫大介绍带动漫里的歌哦解读.ppt
- 大学生职业规划大赛《新闻学专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《应用统计学专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《音乐学专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《中医学专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《信息管理与信息系统专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《汽车服务工程专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《水产养殖学专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《市场营销专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《音乐表演专业》生涯发展展示PPT.pptx
- 大学生职业规划大赛《音乐学专业》生涯发展展示PPT.pptx
最近下载
- 目的论视角下奢侈品香水广告的汉译策略研究——以迪奥为例.docx
- 2022年新版大象版六年级科学上册全册PPT课件.pptx
- 【新结构】湖北省七市州2024届高三下学期3月联合统一调研测试数学试题+答案解析.pdf VIP
- 物流和供应链(英文).ppt
- 北师大版数学八年级下册第四章 因式分解 大单元整体教学设计学历案教案附作业设计(基于新课标教学评一致性).docx
- 2023欧洲车身会议资料010_SUV full aluminium case_Hyundai and Alumobility.pdf
- 心衰的新药物治疗.pptx VIP
- 老旧小区外立面改造安全生产和文明施工措施.doc
- 口腔科护理质量查检表.docx VIP
- 《管理学习题》无答案.docx VIP
文档评论(0)