- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验三 verilog HDL中使命与函数的数字系统设计
实验三:verilog HDL中任务与函数的数字系统设计
班级: 通信二班 姓名: 孔晓悦 学号:
作业完成后,以班级为单位,班长或课代表收集齐电子版实验报告,统一提交.
文件命名规则如“通1_王五_学号”
一、实验目的
了解verilog HDL任务与函数的定义及格式
掌握函数与任务的定义与调用
掌握函数与任务在使用时的区别
掌握任务与函数的具体应用
二、预习要求
1.复习veirlogHDL行为语句。
2. 预习任务与函数的相关定义和格式要求。
3.简单电路系统设计的流程和方法。
三、实验基本概念
1、任务定义
任务定义格式:
task 任务名; //注意无端口列表
端口及数据类型声明语句;
其它语句;
endtask
任务名(端口1,端口2,……);
需要注意的是:任务调用时和定义时的端口变量应是一一对应的。
注意事项:
任务的定义与调用须在一个module模块内。
定义任务时,没有端口名列表,但需要紧接着进行输入输出端口和数据类型的说明。
当任务被调用时,任务被激活。任务的调用与模块调用一样通过任务名调用实现,调用时,需列出端口名列表,端口名的排序和类型必须与任务定义中的相一致。
一个任务可以调用别的任务和函数,可以调用的任务和函数个数不限。
2、函数定义
函数的目的是返回一个值,以用于表达式计算
函数的定义格式:
function 返回值位宽或类型说明 函数名;
端口声明;
局部变量定义;
其它语句;
endfunction
是一个可选项,如果缺省,则返回值为1位寄存器类型的数据。
注意事项:
函数的定义与调用须在一个module模块内。
函数只允许有输入变量且必须至少有一个输入变量,输出变量由函数名本身担任,在定义函数时,需对函数名说明其类型和位宽。
定义函数时,没有端口名列表,但调用函数时,需列出端口名列表,端口名的排序和类型必须与定义时的相一致。这一点与任务相同
函数可以出现在持续赋值assign的右端表达式中。
函数不能调用任务,而任务可以调用别的任务和函数,且调用任务和函数个数不受限制。
例题1 alutask
4、例题2 code_83
例题3 funct
四、实验内容
(一)典型习题的验证与仿真
设计要求:
1、指令译码器电路alutask进行调试和仿真。
2、将函数的两个例题83译码器和斐波拉切数计算的例题进行调试和仿真。
3、通过三个例题,掌握任务和函数的定义格式,使用的方法。
代码:
module alutask(opcode,a,b,c);
input [1:0] opcode;
input [7:0] a,b;
output reg [8:0] c;
always @(a or b or opcode)
begin
case(opcode)
2b00:my_and(a,b,c);
2b01:c=a|b;
2b10:c=a-b;
2b11:c=a+b;
default :c=9bx;
endcase
end
task my_and;
input [7:0] my_a,my_b;
output [7:0] my_c;
integer i;
for(i=0;i=7;i=i+1)
my_c[i]=my_a[i]my_b[i];
endtask
endmodule
仿真结果:
(二)函数与任务练习1---指令译码电路设计
设计要求:
1、在“三、实验基本概念”中例题1,进行改进。在目前4个分支的基础上增加两个分支,完成a*b的功能,利用移位相加的形式计算,两个分支分别用任务和函数设计。
2. QuartusII进行功能仿真,验证设计的正确性。
4、过程和结果(后面继续添加)
将在程序编辑、编译过程中的错误进行记录(截图或者文本),并错误指出来
(1)编译过程出现的问题总结
错误提示(系统提示) 解决方法 错误1 错误2 …….. 代码与仿真结果(结果截图)
代码:
module code_83(din,dout);
input[7:0] din;
output [7:0] dout;
function [2:0] code;
input [7:0] din;
casex (din)
8b1xxx_xxxx : code = 3h7;
8b01xx_xxxx : code = 3h6;
8b001x_xxxx : code = 3h5;
8b0001_xxxx : code = 3h4;
8b0000_1xxx : code = 3h3;
您可能关注的文档
最近下载
- 2025至2030稀土永磁材料行业发展趋势分析与未来投资战略咨询研究报告.docx
- 高考物理一轮复习重难点逐个突破专题81电磁感应中的单、双棒问题(原卷版+解析).docx VIP
- 部编五年级上册语文单元分析.pdf VIP
- 模拟退火算法课件.pptx VIP
- 2025至2030中国钕稀土磁铁行业发展趋势分析与未来投资战略咨询研究报告.docx VIP
- 2025年安徽高考思想政治真题试卷完全解读(含试卷分析与备考策略).docx VIP
- 2025至2030中国MRI磁铁行业发展趋势分析与未来投资战略咨询研究报告.docx VIP
- 水平三新课标体育与健康教案.pdf VIP
- 《立足课标与课本 科学备战》2025安徽省中考化学复习 策略.pptx
- 土石坝安全监测技术规范.pdf VIP
文档评论(0)