网站大量收购独家精品文档,联系QQ:2885784924

实验三-verilog-HDL中任务和函数数字系统设计.doc

实验三-verilog-HDL中任务和函数数字系统设计.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验三: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;

文档评论(0)

nnh91 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档