Verilog学习笔记(一)parameter和localparam区别

本文介绍了FPGA硬件描述语言中的modulecount和moduleseg_led两个模块,展示了参数传递的不同方式。parameter用于全局常量,而localparam则作为局部常量在module内部使用,避免了命名冲突。在设计中,这两个模块分别用于计数和数码管显示,通过参数定义实现了时钟分频和数码管驱动的计数控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面我先附上两个例子

module count(

    //mudule clock
    input                 clk , // 时钟信号
    input                 rst_n, // 复位信号

    //user interface
    output  reg [19:0]    data , // 6个数码管要显示的数值
    output  reg [ 5:0]    point, // 小数点的位置,高电平点亮对应数码管位上的小数点
    output  reg           en , // 数码管使能信号
    output  reg           sign // 符号位,高电平时显示负号,低电平不显示负号
);

parameter MAX_NUM = 23'd5000_000; // 计数器计数的最大值
module seg_led(

    input              clk , // 时钟信号
    input              rst_n , // 复位信号

    input  [19:0]      data , // 6位数码管要显示的数值
    input  [5:0]       point , // 小数点具体显示的位置,从高到低,高电平有效
    input              en , // 数码管使能信号
    input              sign , // 符号位(高电平显示“-” 号)

    output  reg [5:0]  seg_sel, // 数码管位选,最左侧数码管为最高位
    output  reg [7:0]  seg_led // 数码管段选
);

//parameter define
localparam  CLK_DIVIDE = 4'd10 ; // 时钟分频系数
localparam  MAX_NUM = 13'd5000 ; // 对数码管驱动时钟(5MHz)计数1ms所需的计数值

FPGA硬件描述型语言,运行时会并行进行。

这两个模块是同一个项目中的,其中MAX_NUM为两个不同变量,为了让系统不混淆定义,在seg_led模块中,定义了局部变量。

parameter:全局常量,用于顶层模块与底层模块之间的参数传递,并行例化的模块也可以使用。
localparam:局部常量,module内部使用,并行例化的模块不可调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值