Verilog 参数Parameter篇

先说Parameters的三大分类分别是,Module Parameter, Local Parameter 以及Specify Parameter。

1. Module Parameter:

   模块参数的声明语法是:

   1)parameter [ signed ] [ range ] identifier = constant_mintypmax_expression

   2)parameter {integer | real | realtime | time} identifier=constant_mintypmax_expression

   其可以放在模块头上也可以放在模块的内部,他可以通过defparameter的方式或者模块实例化的时候进行重写。

Example:

module fifo
 
#(parameter MSB=3, LSB=0, DEPTH=4)//可以被重写

 (port_list );

 item;

endmodule

module fifo

 (port_list );

 parameter MSB=3, LSB=0, DEPTH=4//可以被重写

endmodule

一旦有模块参数被写在模块头部,则出现在模块内部的模块参数被视为本地参数,不能被重写。

module fifo

 #(parameter MSB=3, LSB=0)//可以被重写

 (port_list );

parameter DEPTH=4; //不能被重写

ndmodule

在上层模块对参数重写的方式如下:

1)F1.MSB=4;F1.LSB=2;fifo F1;
2) fifo #(4,2) F1(port_list);
3) fifo #(.LSB(2), .MSB(4)) fifo(port_list);

2.Local Parameter

本地参数的声明语法和模块参数相似:

   1)localparamr [ signed ] [ range ] identifier = constant_mintypmax_expression

   2)localparam {integer|real|realtime|time} identifier=constant_mintypmax_expression

不过模块参数只能在模块内部被声明,且不能被重写。但本地参数可以引用模块参数,其值随模块参数而改变。

3.Specify Parameter

 Specify Parameter 用specparam关键字来声明,一般用在specify block中。通过 SDF annotation来重写。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

blanklog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值