设计一个4选1的数据选择器,输入信号为A, B, C, D , 输出信号为F, 地址选择信号为SEL。
2014-02-14 19:35
169 查看
任务与函数结构
verilog HDL语言引入任务与函数两种模块化程序的描述方式,使之便于理解和调试另外简化了程序的结构,增强了代码的易读性。任务和函数一般用于行为建模,编写验证程序(Test Bench)
1.任务
任务(task)类似于一般的编程语言中的过程(process),它可以从程序的不同位置执行共同的代码,通常把需要共用的代码段定义为任务,然后通过调用任务来使用它。在任务中可以包含时序控制等,还可以调用其他的任务和函数。任务的使用包括任务定义
和任务调用。
在进行任务定义时,必须注意以下几点:
(1)任务定义结构不能出现在任何一个过程块的内部;
(2)和模块定义不一样,在第一行"task"语句中不能列出端口名列表;
(3)一个任务可以没有输入输出端口;
(4)一个任务可以没有返回值,也可以通过输出端口或双向端口返回一个或多个值;
(5)除任务参数外,任务还能够引用说明任务所在的模块中定义的任何变量。
任务调用:
一个任务由任务调用语句调用,任务调用语句给出传入任务的参数值和接收结果的变量值,其语法为
<任务名> (端口1,端口2,...,端口n) ;
在进行任务调用时,必须注意下面几点:
(1)任务调用语句是过程性语句,因此只能出现在always过程块和initial过程块;
(2)任务调用语句中参数列表必须与任务定义时的输入、输出和双向端口参数说明的顺序相匹配;
(3)进行任务调用时,参数要按值传递,而不能按地址传递(这一点与其他高级语言不同);
(4)由于任务调用语句是过程性语句,因此任务调用的输入与输出参数必须是寄存器类型;
(5)一个任务中可以直接访问上一级调用模块中的任何寄存器;
(6)可以使用disable语句来中断任务的执行,在任务被中断后,程序流程将返回到调用任务的地方继续往下执行。
2.函数
函数(function)同任务一样,也可以在模块的不同位置执行共同的代码。函数与任务的差别在于
(1)函数只能返回一个值,而任务却可以有多个或者没有返回值;
(2)一个任务块可以包含时间控制结构,而函数块则没有,也就是说函数块从零仿真时刻开始执行,结束后立即返回(相当于组合逻辑);
(3)一个任务块就可以有也可以没有输入和输出,而函数必须有一个输入,而没有任何输出:
(4)任务块的触发是通过一条语句来实现,而函数块只有当它在一个表达式中被引用时才会生效
(5)在一个函数内可以调用其他的函数,但是不可以调用其他任务,而在任务中则可以调用其他的函数和任务。
相关文章推荐
- FPGA设计中对输入信号的处理(转)
- Python入门(二)——IDE选择PyCharm,输入和输出,基础规范,数据类型和变量,常量,字符串和编码,格式化
- 问题:求两个字符串的最长公共子串。 要求:输入两个字符串,输出它们的最长公共子串,包括长度。 设计: 设计一个类 String,包括一个 len(字符串长度)和字符串指针 s。另有如下成员函数: ·
- 选择某种Map集合保存学号从1到15的学员的学号(键)和姓名(值),学号用字符串表示,输入的时候要以学号乱序的方式存入Map集合,然后按照学号从大到小的顺序将Map集合中的元素输出打印。需要自定义Ma
- P53.37(设计一个程序,从键盘输入一个正整数M,判断该正整数是否左右对称,若对称,则输出yes,否则输出no。)
- 黑马程序员之WinForm编程基础学习笔记:输入Email地址,输出用户名和域名。
- Modelsim 6.x中Signal看不到输出输入信号的解决办法(转载)
- Hi3516A 音频输入输出的选择, 内部CODEC 还是用外部的I2S CODEC
- 设计算法来统计一个输入字符串中所包含的整数个数,并输出这些数
- 分别用顺序交换法和选择顺序法和 按由小到大输出 如何用C写一段程序:任意输入10个数
- 开关量输入检测与输出的电路设计(转)
- X11硬线接口信号 与Profisafe安全输入输出信号之间的区别与比较
- 设计一个简单的日期选择输入部件
- 2、 excel 导出。这种输入方式,适合后台输出,不需要打开EXCEL文件,不需要选择输出路径,只是后台自己默默的记录EXCEL文件。
- 问题:设计一个大学教师和学生管理程序, 教师包括 编号、姓名、职称和教研室 数据的输入输出; 大学生包括编号、姓名、性别、班号、英语、高等数学和数据结构三门课程成绩的输入输出和计算平均分; 研究生包
- 作业: 选择某种Map集合保存学号从1到15的学员的学号(键)和姓名(值),学号用字符串表示,输入的时候要以学号乱序的方式存入Map集合,然后按照学号从大到小的顺序将Map集合中的元素输出打印。需要自
- Python入门(二)——IDE选择PyCharm,输入和输出,基础规范,数据类型和变量,常量,字符串和编码,格式化
- 选择某种Map集合保存学号从1到15的学员的学号(键)和姓名(值),学号用字符串表示,输入的时候要以学号乱序的方式存入Map集合,然后按照学号从大到小的顺序将Map集合中的元素输出打印。需要自定义Ma
- 输入4字节整数,输出IPv4地址
- 算法:输入任意一个4位数整数,将该数反序输出(例如:输入1354,输出4531)