Verilog语法之参数传递
用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语法之参数传递相关推荐
- 【系统设计】Verilog语法及示例(2)
参考Verilog语法 | 教程 (ustc.edu.cn) 1.7 D触发器 D触发器是一个具有记忆功能.具有两个稳定状态的信息存储器件,是构成时序逻辑的最基本逻辑单元.其具有两个稳定状态,即&qu ...
- FPGA 40 专题 verilog语法编程规范
FPGA 40 专题 verilog语法编程规范 在这里主要是给自己写一个备忘录,加强个人记忆. 详细可以参考地址1:https://www.runoob.com/w3cnote/verilog2-c ...
- [转]verilog语法学习心得
verilog语法学习心得 1.数字电路基础知识: 布尔代数.门级电路的内部晶体管结构.组合逻辑电路分析与设计.触发器.时序逻辑电路分析与设计 2.数字系统的构成: 传感器 AD 数字处理器 D ...
- (136)System Verilog覆盖组参数传递实例
(136)System Verilog覆盖组参数传递实例 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog覆盖组参数传递实例 5)结语 ...
- system verilog中的参数传递——ref,input,output
本文介绍了 system verilog 中静态数组.动态数组.队列作为函数参数传递的规则,以及 input.output.ref关键字的规则. system verilog中的参数传递--ref,i ...
- Verilog 语法入门知识
Verilog 语法入门知识 一.变量类型 ①数值 数值表示采用 <二进制位数>'<数值表示的进制><数值>的结构. 其中进制可以为b.o.d.h分别代表二.八.十 ...
- Verilog语法-005—宏定义
Verilog语法-005-宏定义 1.Verilog宏定义-`ifdef `ifndef `ifdef FOR_FPGA //如果定义了FOR_FPGA宏,则会执行如下 语句/或者没有语句 `els ...
- verilog语法学习目录
verilog语法实例学习(1) Verilog中注释 Verilog代码中的信号 标识符 信号的值 Verilog中的数字 Verilog中的参数 verilog语法实例学习(2) 线网类型 变量类 ...
- Verilog语法之运算符
本文转自知乎罗成的文章Verilog语法之四:运算符 总的文章小白如何快速入门Verilog Verilog HDL语言的运算符范围很广,其运算符按其功能可分为以下几类: 算术运算符(+,-,×,/, ...
最新文章
- 2022-2028年中国废旧塑料回收产业研究及前瞻分析报告
- LeetCode-198. 打家劫舍
- 如何使用Redis做MySQL的缓存
- 关于tx-lcn分布式事务框架的几个问题
- .net 新添加的项目未加载_重大更新|报表分析工具FastReport .NET v2020.4发布!添加了新的条形码...
- fidder设置断点,修改请求参数等
- 排列组合的思考、组合数的推广和拓展
- 输出矩阵的左下半三角
- Python环境下工具安装小结
- Tomcat设置普通用户启动
- JavaScript高级实战教程,带你深入学习JS高级应用
- 第18章 人口普查
- 手机版wps怎么制作折线图_头像制作软件手机版下载-头像制作免费软件带字体下载app...
- 51nod_2369 奈芙莲的序列(动态规划)
- adb工具(通用的调试工具、debug工具)操作命令详解
- 办公局域网内的打印机如何做共享?
- 计算几何之旋转卡壳算法
- element-plus popover的z-index问题
- IE7、IE6和火狐兼容性问题
- 解决一个MySQL登录报ERROR 2002 (HY000)错的问题