- 1、本文档共188页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
【程序7-17】用函数的方式实现2位比较器。
moduleeq2_function
(
inputwire[1:0]a,b,
outputregaeqb
);
rege0,e1;
always@*
begin
#2e0=equ_fnc(a[0],b[0]);
#2e1=equ_fnc(a[1],b[1]);
aeqb=e0e1;
end//函数定义
functionequ_fnc(inputi0,i1);
begin
equ_fnc=(~i0~i1)|(i0i1);
end
endfunction
endmodule2.自定义任务
和函数相比,任务则显得更加灵活。它可以有输入、输出以及双向交互,并且可以包含时序控制。任务定义的语法规则如下:
task任务名
端口及数据类型声明语句
语句一
语句二
…
语句n
endtask任务的调用和变量传递的语法如下:
任务名(端口1,端口2,…,端口n);
任务的使用中需要遵循如下几条原则:
(1)任务可以定义自己的仿真时间单位;
(2)函数不能启动任务,而任务可以启动其他的任务和函数;
(3)函数至少要有一个输入变量,而任务可以没有或有多个任何类型的变量;
(4)函数返回一个值,而任务则不返回值。
下面举例采用任务的方式实现2位比较器,如程序7-18所示。【程序7-18】用任务的方式实现2位比较器。
moduleeq2_task
(
inputwire[1:0]a,b,
outputregaeqb
);
rege0,e1;
always@*
begin
equ_tsk(2,a[0],b[0],e0);
equ_tsk(2,a[1],b[1],e1);
aeqb=e0e1;
end//任务定义
taskequ_tsk
(
inputintegerdelay,
inputi0,i1,
outputeq1
);
begin
#delayeq1=(~i0~i1)|(i0i1);
end
endtask
endmodule7.5.7TestBench举例
1.测试向量产生模块
在程序5-4所示的TestBench中,测试向量部分非常复杂而繁琐。如果能够针对各种操作设置一系列操作,那么代码就会显得组织性更强且容易读。所以可以采用一个单独的任务来完成一种操作,如定义一个装载二进制数据的任务:
taskload_data(inputwire[N-1:0]data_in);
begin
@(negedgeclk);//等待时钟下降沿
load=1‘b1;
d=data_in;
@(negedgeclk);
load=1b0;
end
endtask在这个任务中,在两个下降沿之间load有效,保证data、data_in放在数据线d上。同样,可以用同样的方法定义其他的任务,包括:
(1)?clr_counter_async:产生一个reset脉冲异步清零计数器;
(2)?clr_counter_sync:通过激活ayn_clr信号一个时钟周期对计数器同步清零;
(3)?count:使能计数器计数一定的时钟周期;
(4)?initialize:为仿真设置初始值并产生一个reset脉冲。有了这些任务程序,测试向量程序就可以用一种精简的方式来写了:
initial
begin
initialize(); //初始化
count(12,1); //上升计数12个时钟周期
count(6,0); //下降计数5个时钟周期
load_data(3‘b011); //置数3’b011
count(2,1); //上升计数2个时钟周期
您可能关注的文档
- 《Python大数据基础与实战》课件_Python大数据基础与实战(第7章 面向对象编程).pptx
- 《Python大数据基础与实战》课件_Python大数据基础与实战(第8章 异常处理).pptx
- 《PLC应用技术》课件_10.项目十 多路口交通信号灯控制.pptx
- 《PLC应用技术》课件_2.项目二 博途软件的使用.pptx
- 《电子商务物流基础与实训》课件_第三章 网络采购.pptx
- 《高等数学 》课件_第7章.ppt
- 《PLC应用技术》课件_8.项目八 运料小车小车往返教程.pptx
- 《高等数学 》课件_第6章.ppt
- 《Xilinx FPGA设计与实践教程》课件_第14章.ppt
- 《电子信息类专业英语》课件_第11章.pptx
最近下载
- 2024年铜陵职业技术学院单招职业技能测试题库及一套参考答案.docx VIP
- 规范文件GB∕T 35347-2017 机动车安全技术检测站.pdf
- 景区运营管理方案计划书.pdf
- 一种高效导热UV-LED油墨的制备方法及其应用.pdf VIP
- 坎德拉PV使用手册.PDF
- [中央]2024年国家医疗保障局医药价格和招标采购指导中心招聘应届生笔试典型考题与考点研判含答案详解.docx
- 坎德拉PVsyst使用指南(第四版2020年).pdf
- Unit 7 Art Lesson 1 Masterpieces课件 (共46张PPT)北师大版(2019)高中英语必修第三册1.pptx VIP
- 碳中和技术概论PPT完整全套教学课件.pptx
- 陕西齿轮变速箱使用维修手册2019-07-15.pdf VIP
文档评论(0)