用parameter来定义一个标志符代表一个常量,称作符号常量,他可以提高程序的可读性和可维护性。

parameter是参数型数据的关键字,在每一个赋值语句的右边都必须是一个常数表达式。即该表达式只能包含数字或先前已经定义的参数。

parameter     msb=7;                 //定义参数msb=7
parameter     r=5.7;                   //定义r为一个实型参数5.7
parameter     byte_size = 8, ;        //利用常数表达式赋值,数字
parameter     byte_msb = byte_size-1; //利用先前已经定义的参数赋值

参数型常量经常用于定义延迟时间和变量宽度。在模块和实例引用时,可以通过参数传递改变在被引用模块或实例中已经定义的参数。

一. module内部有效的常量定义

module exam_prj//此处的参数WIDTH表示只在端口设置时使用#(parameter WIDTH=8) //端口内的参数只能在这使用 (input [WIDTH-1:0] dataa,//[WIDTH-1:0]input [WIDTH-1:0] datab,output reg [WIDTH:0] result);parameter Conuter = 4'd111;//用于代码部分的参数
//代码部分省略

这里出现的两个参数parameter,第一个WIDTH表示只在端口设置时使用,后面的Conuter 是对于模块内部的使用。

二、参数传递

传递的方法:
1、module_name

#( parameter1, parameter2)

inst_name( port_map);

 module adder_16(sum,a,b);parameter time_delay=5,time_count=10;......endmodulemodule top;wire[2:0] a1,b1;wire[3:0] a2,b2,sum1;wire[4:0] sum2;adder_16  #(4,8)  AD1(sum1,a1,b1); //传入参数之后time_delay=4,time_count=8endmodule

2、module_name

#(      .parameter_name(para_value),  .parameter_name(para_value)     )

inst_name (port map);

//例化代码exam_prj//---------#(.WIDTH(8),  .Conuter_Top(4'd5))exam_prj_inst//------*注意例化时的名字在这个位置*(.dataa(dataa),.datab(datab),.result(sum));

3、在多层次的模块中,改变参数需要使用defparam命令。

defparam   Test.T=2;         //Test、T分别是高层模块中的底层模块实例。

参数需要写绝对路径来指定。

//模块Sub_Modu
module  Sub_Modu;parameter W1=4;...
endmodule//顶层模块
module Sub_modu;...defparam  Sub_T.W1 =8; //W1传入8Sub_Modu  Sub_T;...
endmodue

三. 子模块调用子模块

//子模块的子模块
module  Sub_Sub_Modu;parameter W1=4;...endmodule//子模块
module Sub_modu;parameter W=8;...Sub_Sub_Modu  #(W) ( ); //传入参数W...
endmodue//顶层模块
module Main_Modu ;...Sub_Modu #(16) ;  //传入参数W, 这样W和W1都是16位..
endmodue

Verilog语法之参数传递相关推荐

  1. 【系统设计】Verilog语法及示例(2)

    参考Verilog语法 | 教程 (ustc.edu.cn) 1.7 D触发器 D触发器是一个具有记忆功能.具有两个稳定状态的信息存储器件,是构成时序逻辑的最基本逻辑单元.其具有两个稳定状态,即&qu ...

  2. FPGA 40 专题 verilog语法编程规范

    FPGA 40 专题 verilog语法编程规范 在这里主要是给自己写一个备忘录,加强个人记忆. 详细可以参考地址1:https://www.runoob.com/w3cnote/verilog2-c ...

  3. [转]verilog语法学习心得

    verilog语法学习心得 1.数字电路基础知识: 布尔代数.门级电路的内部晶体管结构.组合逻辑电路分析与设计.触发器.时序逻辑电路分析与设计 2.数字系统的构成: 传感器  AD  数字处理器  D ...

  4. (136)System Verilog覆盖组参数传递实例

    (136)System Verilog覆盖组参数传递实例 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog覆盖组参数传递实例 5)结语 ...

  5. system verilog中的参数传递——ref,input,output

    本文介绍了 system verilog 中静态数组.动态数组.队列作为函数参数传递的规则,以及 input.output.ref关键字的规则. system verilog中的参数传递--ref,i ...

  6. Verilog 语法入门知识

    Verilog 语法入门知识 一.变量类型 ①数值 数值表示采用 <二进制位数>'<数值表示的进制><数值>的结构. 其中进制可以为b.o.d.h分别代表二.八.十 ...

  7. Verilog语法-005—宏定义

    Verilog语法-005-宏定义 1.Verilog宏定义-`ifdef `ifndef `ifdef FOR_FPGA //如果定义了FOR_FPGA宏,则会执行如下 语句/或者没有语句 `els ...

  8. verilog语法学习目录

    verilog语法实例学习(1) Verilog中注释 Verilog代码中的信号 标识符 信号的值 Verilog中的数字 Verilog中的参数 verilog语法实例学习(2) 线网类型 变量类 ...

  9. Verilog语法之运算符

    本文转自知乎罗成的文章Verilog语法之四:运算符 总的文章小白如何快速入门Verilog Verilog HDL语言的运算符范围很广,其运算符按其功能可分为以下几类: 算术运算符(+,-,×,/, ...

最新文章

  1. 2022-2028年中国废旧塑料回收产业研究及前瞻分析报告
  2. LeetCode-198. 打家劫舍
  3. 如何使用Redis做MySQL的缓存
  4. 关于tx-lcn分布式事务框架的几个问题
  5. .net 新添加的项目未加载_重大更新|报表分析工具FastReport .NET v2020.4发布!添加了新的条形码...
  6. fidder设置断点,修改请求参数等
  7. 排列组合的思考、组合数的推广和拓展
  8. 输出矩阵的左下半三角
  9. Python环境下工具安装小结
  10. Tomcat设置普通用户启动
  11. JavaScript高级实战教程,带你深入学习JS高级应用
  12. 第18章 人口普查
  13. 手机版wps怎么制作折线图_头像制作软件手机版下载-头像制作免费软件带字体下载app...
  14. 51nod_2369 奈芙莲的序列(动态规划)
  15. adb工具(通用的调试工具、debug工具)操作命令详解
  16. 办公局域网内的打印机如何做共享?
  17. 计算几何之旋转卡壳算法
  18. element-plus popover的z-index问题
  19. IE7、IE6和火狐兼容性问题
  20. 解决一个MySQL登录报ERROR 2002 (HY000)错的问题

热门文章

  1. 五星评分,让我告诉你半颗星星怎么做
  2. 【嵌入式烧录/刷写文件】-1.1-详解Motorola S-record(S19/SREC/mot/SX)格式文件
  3. 对于元宇宙建设者来说,用户体验与互操作性谁才是最重要的?
  4. 手把手教你制作Excel抽奖器
  5. 13th 发布在即,一文带你回顾Intel 12th Core
  6. 腾讯CDC谈扁平化设计
  7. 【未来已来】人人都说GPT,人人都怕GPT,人人都用GPT
  8. windows将中文用户名修改为英文
  9. Photoshop蒙版介绍之图层蒙版
  10. java技术大牛修炼记5-一名中级程序员的自述