zoukankan      html  css  js  c++  java
  • parameter localparam define的区别


    `define

    语法格式

    `define    A            12     //注意不加;不能忘记" ` "

    作用区域  

    在整个工程中均有效,因为它是可以跨模块的定义


    parameter 和 localparam

    语法格式

    parameter      A    =    16'd2600 ;   //不定义位宽的时候默认是32位
    
    localparam     A     =    16'd2600;   //同上

    作用区域  

    parameter 、localparam 只在定义的本模块内有效。

    两者的区别是 parameter 可以进行参数例化,而 localparam 则不可以。

    参数传递我将举下面这个例子进行说明

    首先定义了一个模块 led_driver ,并且定义了一个参数 DATA ,代表了 led 灯的个数,此处代表有 7 个 led 灯

    module led_driver (
                        clk    ,
                        rst_n,
                        led   
                               );
    parameter   DATA = 7;  //定义一个参数
    input clk,rst_n;  //输入
    output [ DATA-1 : 0]  led;  //输出
    ............
    endmodule

    当要在顶层模块例化 led_driver 这个模块时,假设由于工程需要,要将 led 个数改为 4 个,

    第一个方法 led_driver 内的 parameter 参数直接改为 3 。

    另一种方法 在例化 led_driver 时,将参数 DATA 也进行例化,方法如下面这个代码

    led_driver                     //被调用的模块
    #(.DATA(4))                    // 参数例化
    u_led_driver(                  //例化模块    
                        .clk    (clk),
                        .rst_n(rst_n),
                        .led    (led) 
                               );

    在实际应用中,如果想让 parameter 或 `define 作用于整个工程中,可以单独声明一个文件,并且用 `include 让每个文件都包含声明文件。

    原文链接:http://www.cnblogs.com/aslmer/p/6022152.html

       

  • 相关阅读:
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
  • 原文地址:https://www.cnblogs.com/aslmer/p/6022152.html
Copyright © 2011-2022 走看看