亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> Verilog

理解Verilog任务:函数vs任务、语法与用法全解析

任务与函数核心区别

函数处理输入返回单值;任务更通用,可通过output/inout参数返回多值,可包含消耗仿真时间的元素(@、posedge等)。

任务声明语法

两种风格:传统分行声明输入/输出/inout,或ANSI风格括号内声明。端口列表可为空。automatic使任务可重入,每次调用动态分配内存不共享。

静态任务 vs 自动任务

静态任务:成员变量跨并发调用共享。示例中4个并发initial块调用静态display任务,内部整型i共享递增,输出1,2,3,4。
自动任务:每次调用分配独立内存,同例中输出全为1。

全局任务

模块外声明为全局任务,任意模块可调用。模块内声明则需通过实例名引用(u0.display())。

禁用任务

disable关键字可终止命名块。示例中display任务含T_DISPLAY和S_DISPLAY两块,50时间单位后禁用T_DISPLAY,S_DISPLAY继续执行完成。

函数调用任务的编译错误

函数中含时间控制语句(#10)编译报错:illegal time/event control statement within a function。

Verilog

  1. Verilog 入门:数字电路设计完整教程
  2. 掌握 Verilog 拼接操作:实用指南
  3. 深入理解 Verilog 赋值语句:类型、语法与最佳实践
  4. Verilog阻塞与非阻塞赋值:关键区别详解
  5. 掌握Verilog函数:高效RTL设计的复用利器
  6. 理解Verilog任务:函数vs任务、语法与用法全解析
  7. 掌握 Verilog 层次引用作用域:避免模块与块中的名称冲突
  8. Verilog 时钟发生器设计与实现指南
  9. 掌握 Verilog 显示任务:高效调试与日志记录
  10. 掌握 Verilog 数学函数:高效硬件设计的利器
  11. 掌握 Verilog $timeformat:精度控制与显示格式化
  12. 理解与打印 Verilog 任意作用域下的 Timescale