verilog中task怎么用(Verilog——任务task的调用)
参考自以下链接处:
http://t.csdn.cn/4ws4t下面直接看代码 ,代码中会有注意事项 。
此代码没法仿真出波形 ,只是简单的例子而已 。
task与funtion还是蛮重要的知识点 ,下面从我喜欢的视角简单总结一下二者的内容和区别:
(1)先从Verilog定义二者的写法开始 ,task的定义中直接加任务名称 ,中间不会有位宽的声明;而function毕竟就是函数 ,逻辑上使用函数一般就是赋值操作 ,赋值就要考虑位宽 ,所以function的定义中会加个位宽范围 ,如果不写就默认是1bit 。
(2)写到了下面一部分 ,对于二者都是《端口及数据类型声明语句》 ,但是function只能有input输入变量 ,task则没这个限制,可以有input 、output 、inout;
(3)下一部分则一定要用“begin end ”来写 ,这里就是实实在在的二者想实现的逻辑功能语句了 ,其中task想怎么写怎么写,可以有时延符号 ,也可以纯组合逻辑;但是function就只能是纯组合逻辑 ,不能加时延类型的符号 。所以funciton可以综合 。
(4)endtask 、endfunction不能忘写 。
从中文字眼来看 ,也知道任务是高级一点 、包容一点的东西 ,所以一般可以理解函数是任务的子集 ,任务可以调用函数 ,函数不能反过来调用任务的 。
但是怎么写 ,怎么用 ,还是得多练 ,多编译 ,多仿真 。
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!