一、module内部有效的定义

用parameter来定义一个标志符代表一个常量,称作符号常量,他可以提高程序的可读性和可维护性。parameter是参数型数据的关键字,在每一个赋值语句的右边都必须是一个常数表达式。即该表达式只能包含数字或先前已经定义的参数。

parameter     msb=7;                 //定义参数msb=7

parameter     r=5.7;                   //定义r为一个实型参数5.7

parameter     byte_size=8,byte_msb=byte_size-1;        //利用常数表达式赋值

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

 module exam_prj
#(parameter WIDTH=)
//端口内的参数只能在这使用
(
input [WIDTH-:] dataa,//[WIDTH-1:0]
input [WIDTH-:] datab, output reg [WIDTH:] result
);
 parameter Conuter_Top = 4'd9;//用于代码部分的参数
//代码部分省略

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

二、参数传递

传递的方法:
1、module_name #( parameter1, parameter2) inst_name( port_map);

 module adder_16(sum,a,b);
parameter time_delay=,time_count=;
......
endmodule
module top;
wire[:] a1,b1;
wire[:] a2,b2,sum1;
wire[:] sum2;
adder_16 #(,) AD1(sum1,a1,b1);//time_delay=4,time_count=8
endmodule

2、module_name #( .parameter_name(para_value), .parameter_name(para_value)) inst_name (port map);

 //module exam_prj_tb;

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

3、在多层次的模块中,改变参数需要使用defparam命令。     defparam   Test.T.B1.P=2;         //Test、T、B1分别是高层模块中的底层模块实例。

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

三、子模块调用子模块

 module Sub_Sub_Modu;
parameter W1=;
... endmodule module Sub_modu;
parameter W=;
...
Sub_Sub_Modu #(W) ( );
...
endmodue module Main_Modu ;
...
Sub_Modu #() ; //这样W和W1都是16位
..
endmodue

verilog中参数传递与参数定义中#的作用(二)的更多相关文章

  1. Python中sorted(iterable, *, key=None, reverse=False)函数参数定义中的独立星号(*)的含义

    老猿在 <Python中函数的参数带星号是什么意思?>中介绍了Python函数中参数带星号的含义,而在实际使用和Python的标准文档中,会看到某写函数(如sorted(iterable, ...

  2. VB类模块中属性的参数——VBA中Range对象的Value属性和Value2属性的一点区别

    在VB中,属性是可以有参数的,而VBA中属性使用参数非常常见.比如最常用的:Worksheet.Range("A1:A10")  VB的语法,使用参数的不一定是方法,也有可能是属性 ...

  3. spring MVC中传递的参数对象中包含list的情况

    测试需要的jar包:spring 3.2.jar +  jackson-all-1.8.5.jar. 写代码时碰到个需要将对象里的子明细一起传递到controller里去,当时就想直接将参数一起传递过 ...

  4. C函数和宏中的可变参数

    一:调用惯例 函数的调用方和被调用方对函数如何调用应该有统一的理解,否则函数就无法正确调用.比如foo(int n, int m),调用方如果认为压栈顺序是m,n,而foo认为压栈顺序是n, m,那么 ...

  5. golang struct 定义中json``解析说明

    在代码学习过程中,发现struct定义中可以包含`json:"name"`的声明,所以在网上找了一些资料研究了一下 package main import ( "enco ...

  6. TP v5中环境变量在项目中的应用

    环境变量,顾名思义就是在不同的系统环境,同一个变量的值可以有所不同. 如开发环境.测试环境与正式环境下,数据库配置.静态资源文件Url前缀.缓存.各种key等配置都不相同,对于提交到仓库中的代码,理论 ...

  7. java中可变长参数的定义及使用方法

    JAVA中可以为方法定义可变长参数( Varargs)来匹配不确定数量的多个参数,其定义用“...”表示.其实,这类似于为方法传了一个数组,且在使用方法上也和数组相同,如下: public void ...

  8. mixin 在传参中可以出现 参数 在类内部可以定义 作用域

    mixin 在传参中可以出现 参数  在类内部可以定义

  9. C#中方法的参数的四种类型

    C#中方法的参数有四种类型:       1. 值参数类型  (不加任何修饰符,是默认的类型)       2. 引用型参数  (以ref 修饰符声明)       3. 输出型参数  (以out 修 ...

随机推荐

  1. 小程序——使用Easy Mock

    使用Easy Mock 一.什么是Easy Mock    Easy Mock 是一个可视化的能快速生成模拟数据的持久化服务.在实际开发中常见的Mock方式一般是将模拟数据直接写在代码里,利用Java ...

  2. 索引反向使用案例,加index_desc hint

    drop index idx_t;create index idx_t on t(owner desc,object_type asc); select /*+index(a,idx_t)*/ * f ...

  3. [EffectiveC++]item33:避免遮掩继承而来的名称。

    先看看: ZT C++ 重载.覆盖和隐藏的区别 http://www.cnblogs.com/jeanschen/p/3405987.html 隐藏是指派生类的函数屏蔽了与其同名的基类函数,规则如下: ...

  4. linux下redis4.0.2安装与部署

    一.redis的介绍 Redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcache类似,但很大程度补偿了Memcache的不足,它支持存储的value类型相对更 ...

  5. vue记录

    vue项目中使用默认图片代替异常图片 第一种方法 <img onerror="javascript:this.src='../../static/custom.png';" ...

  6. servlet api.jar是干什么的?

    支持servlet的jar包.应该叫servlet-api.jar你如果编写过servlet就知道要用到HttpServletRequest和HttpServletResponse等对象,这些对象都是 ...

  7. UVALive 4025 Color Squares(BFS)

    题目链接:UVALive 4025 Color Squares 按题意要求放带有颜色的块,求达到w分的最少步数. //yy:哇,看别人存下整个棋盘的状态来做,我什么都不想说了,不知道下午自己写了些什么 ...

  8. 设置 jsp 表格相邻两行的颜色不一样

    转载网址:https://zhidao.baidu.com/question/134905332.html?fr=iks&word=for+%28var+i%3D0%3Bi%3CTable.r ...

  9. Junit单元测试多线程的问题

    今天下午很快完成了一个接口的监控功能,然后屁颠屁颠地用Junit开始单元测试.然后我就开始陷入崩溃的边缘... 监控结束后需要将监控结果以邮件的形式发送给运营的小伙伴维护,前面测试还是很顺利,到了开多 ...

  10. ResourceWarning: unclosed <socket.socket fd=864, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('10.100.x.x', 37321), raddr=('10.1.x.x', 8500)>解决办法

    将代码封装,并使用unittest调用时,返回如下警告: C:\python3.6\lib\collections\__init__.py:431: ResourceWarning: unclosed ...