• <转>verilog hdl中常数声明


    1、语法
    声明:
    parameter xx = yy;
    `define XX YY

    使用:
    xx
    `XX

    2、作用域
    parameter 作用于声明的那个文件;`define 从编译器读到这条指令开始到编译结束都有效,或者遇到`undef命令使之失效。

    如果想让parameter或`define作用于整个项目,可以将如下声明写于单独文件,并用`include让每个文件都包含声明文件:
    `ifndef xx
     `define xx yy // or parameter xx = yy;
    `endif

    `define也可以写在编译器最先编译的文件顶部。通常编译器都可以定义编译顺序,或者从最底层模块开始编译。因此写在最底层就可以了。

    3、作用
    parameter可以用作例化时的参数传递。具体方法参见《Verilog例化时的参数传递》一文

     

     

    数字声明

    Verilog中有两种数字生命:指明位数的数字不指明位数的数字

    指明位数的数字表示形式:<size>’<base format><number>

    Size用来指明数字位宽度,只能用十进制整数表示

    Base format包括十进制(’d或’D),二进制(’b或’B),八进制(‘o或’O),十六进制(‘h或’H)

    例如

    4’b1111       //4位2进制数

    12’h3ac      

    要注意的是这不是表示12位16进制数,表示12位二进制显示是16进制数

     

    例子

    parameter LinePeriod =12'd1040;

    parameter H_SyncPulse=8'd120;

    parameter H_BackPorch=10'd1040;

    parameter H_ActivePix=706;

     

    综合(Synthesize)后

           LinePeriod = "010000010000"

    H_SyncPulse = "01111000"

    H_BackPorch = "0000010000"

    H_ActivePix = "00000000000000000000001011000010"

     

       可以看出12’d 不是表示有12位十进制,而是表示有12位二进制。如果没有限定位数,ISE综合时默认为32位,所以编Verilog的时候不要超过32位。

       如果限定多余32位的话,综合时会报错。

     

    parameter H_ActivePix=33'b706;

     

    会报错,报错信息如下:

     

    ERROR:HDLCompilers:34 - "VGA_800X600.v" line 19 Illegal digit(s) in binary constant '706'

     

    还有注意的一个问题是LinePeriod和H_BackPorch都是1040(十进制),1040二进制为11位(2的十次方为1024),但“H_BackPorch”没有因为位数不够报错,但是把高位截掉了,变成“0000010000”,所以在Verilog编程的时候要注意赋值问题。

     

    不限定位数,默认为32位,这很浪费寄存器资源。

    限定位数小于常数的位数时,赋值就不正确了。

        所以赋值的位数要有富裕但不至于太浪费寄存器资源

  • 相关阅读:
    2016"百度之星"
    codeforces 55 div2 C.Title 模拟
    codeforces 98 div2 C.History 水题
    codeforces 97 div2 C.Replacement 水题
    codeforces 200 div2 C. Rational Resistance 思路题
    bzoj 2226 LCMSum 欧拉函数
    hdu 1163 九余数定理
    51nod 1225 余数的和 数学
    bzoj 2818 gcd 线性欧拉函数
    Codeforces Round #332 (Div. 2)D. Spongebob and Squares 数学
  • 原文地址:https://www.cnblogs.com/icdz1990/p/4196715.html
Copyright © 2020-2023  润新知