【Verilog】parameter

parameter用来定义常量,不允许在运行时修改它的值,即不能在组合逻辑或者时序逻辑中对其进行赋值。

parameter声明

parameter可以写在模块头部,也可以写在模块内部:

module fifo
#(parameter MSB = 3, LSB = 0, DEPTH = 4)
(port_list);
item;
endmodule
module fifo
(port_list);
parameter MSB = 3, LSB = 0, DEPTH = 4;

但是如果端口列表中用到了parameter,则必须将parameter写在模块头部,否则会报错在声明前使用:

module _mm_complex_multi
#(parameter WIDTH = 512, CELL_WIDTH = 16)
(
    input [WIDTH-1:0] in_a,
    input [WIDTH-1:0] in_b,
    output [WIDTH-1:0] out
)
parameter重写

写在头部和写在内部,均可以在模块实例化时被重写。但是一旦有参数被写在模块头部,则出现在模块内部的参数被视为本地参数,不能被重写。

上层模块重写参数的方式:

F1.MSB = 4;
F1.LSB = 2;
fifo F1;
fifo #(4,2) F1(port_list);    // 只重写前两个参数
fifo #(.LSB(2),.MSB(4)) fifo(port_list);
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值