- 1、本文档共237页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
函数 function [7: 0] getbyte; input [63: 0] word; input [2: 0] bytenum; integer bit; reg [7: 0] temp; begin for(bit=0; bit=7; bit=bit+1) temp[bit] = word[(bytenum-1)*8+bit]; getbyte = temp; end endfunction 高级程序语句、函数和任务 函数 函数内不可以出现initial或always过程块 函数中必须有一个输入端口,不能出现输出端口(output)或输入/输出端口(inout) 函数内不能出现任何类型的时间控制描述,也不允许使用disable终止语句 高级程序语句、函数和任务 函数的调用 out = getbyte(input1, input2); assign net1 = getbyte(input1, 3); 函数的调用不能单独作为一条语句出现,只能作为一个操作数出现 函数调用既能出现在过程块中,也能出现在assign连续赋值语句中 高级程序语句、函数和任务 函数和任务的区别 函数至少必须有一个输入端口,而任务可以有0、1或多个输入端口 函数不能有输出端口,而任务可以有0、1或多个输出端口 函数调用通过函数名传递一个返回值,而任务调用通过输出端口传递返回值 函数中不能调用其他任务,而任务中可以调用其他任务或函数 函数调用不能单独作为一条语句,而任务调用为一条单独语句 函数调用可以出现在过程块或连续赋值语句中,而任务调用只能出现在过程块中 函数中不能出现时间控制语句,而任务可以 函数不能用disable语句中断,而任务可以 高级程序语句、函数和任务 模块级建模 调用由用户设计生成的低级模块来对硬件电路结构进行描述 硬件描述语言 模块的定义 module 模块名 (端口列表) 申明语句 模块组项 任务和函数定义 specify块 endmodule 模块级建模 端口列表 各个端口表达式按一定次序组成的一个列表 模块级建模 申明语句 parameter: 参数申明语句 input: 输入端口申明语句 output: 输出端口申明语句 inout: 双向端口申明语句 连线型变量申明语句 寄存器型变量申明语句 时间型变量申明语句 整型变量申明语句 实型变量申明语句 模块级建模 模块组项 模块功能的描述,可以包含initial和always过程块,也可以包括模块或元件的实例 模块级建模 specify块 用于对模块输入、输出端口之间的路径延时时间量进行说明 模块级建模 函数和任务定义 用来对模块内使用到的函数和任务进行定义 模块级建模 模块的端口 隐式端口名形式 显式端口名形式 模块级建模 隐式端口名形式 (端口表达式1...端口表达式n) 各个端口表达式指明了各个模块端口与模块内变量的连接关系 module ex1(a, b, z) input a, b; output z; ... 模块级建模 显式端口名形式 (.端口名1(端口表达式1)... (.端口名2(端口表达式2)) 列表中的每一项包含一个端口名和一个端口表达式 module ex2(.in_a(a), .in_b(b), .in_z(z)) input a, b; output z; ... 模块级建模 模块的调用 一个复杂电路可以被描述成是由各级模块像搭积木那样一层层组成 一个硬件系统中必须有一个“顶级模块”,只有“顶级模块”不被其他模块调用,而其他各级模块都将被上一级模块调用 模块被调用后就在上一级模块内生成了一个“模块实例” 模块级建模 模块的调用 模块名 参数值列表 实例名 (端口连接表); module NAND (ina, inb, nand_out); input ina, inb; output nand_out; assign nand_out = ~(ina inb); endmodule module AND (in1, in2, and_out); input in1, in2; output and_out; wire w1; NAND NAND1(in1, in2, w1); NAND NAND2(w1, w1, and_out); endmodule 模块级建模 模块调用时对参数值的更改 使用带有参数值的模块实例语句 使用参数重定义语句(defparam) 模块级建模 使用带有参数值的模块实例语句 module mubtibits_mu
文档评论(0)