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

掌握Verilog参数:构建可复用可扩展模块

参数基本概念

参数使模块可按不同规格复用。如4位加法器参数化位宽,实例化时传入新值变为8/16位加法器。类似函数调用传参。参数本质为常量,运行时不可修改,不可与网络/变量/其他参数重名。分模块参数和指定参数两大类。

模块参数

可在实例化或defparam中覆盖。Verilog-1995风格模块头声明参数;ANSI风格在模块名后#(parameter ...)声明。常用大写命名显眼。

覆盖方式:
1. 实例化传参:design_ip #(BUS_WIDTH=64, DATA_WIDTH=128) d0 (...);(RTL设计常用)
2. defparam:defparam d0.FIFO_DEPTH = 128;(仿真快速修改常用)

实例:参数化计数器

模块counter含参数N(位宽,默认2)、DOWN(增/减,默认0递增)。
2位加计数器:实例化#(.N(2)),DOWN默认0。
4位减计数器:实例化#(.N(4), .DOWN(1))。附综合原理图展示不同配置硬件结构。

指定参数

用specparam声明,主要提供时序延迟值。可在specify块内或模块主体声明。SDF可覆盖值。

两类参数对比表

指定参数模块参数
specparam声明parameter声明
可在specify块或主体声明仅主体声明
可赋specparam和parameter不可赋specparam
SDF覆盖实例化参数或defparam覆盖

Verilog

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