原创 verilog中的define和parameter

2010-11-14 16:17 4684 3 3 分类: MCU/ 嵌入式

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位,这很浪费寄存器资源。


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


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

文章评论0条评论)

登录后参与讨论
相关推荐阅读
zhwsdust 2010-11-16 15:09
倍频电路的verlilog设计
基本思想:通过逻辑延时,使同频时钟相位改变,而后将两个时钟相或即可得到二倍频电路,不过占空比不可调,由两个时钟相位差决定 module test(fout, fin);input  fin;  //4...
zhwsdust 2010-11-16 12:00
任意整数和小数分频的Verilog实现
...
zhwsdust 2010-11-14 16:33
[转]Verilog中宏定义位宽带来的问题
Verilog中宏定义位宽带来的问题         宏定义在C语言程序中的使用司空见惯,他的好处就在于可以大大提高代码的可读性和可移植性。而在verilog中,也支持这个语法,在很多开源代码中也都能...
zhwsdust 2010-11-12 16:53
[转载].SDRAM时钟相移估算.[Memory]
转特权(吴厚航)哥的博文。http://blog.ednchina.com/ilove314/955999/message.aspx SDRAM时钟相移估算    《Quartus II Handbo...
zhwsdust 2010-11-12 16:52
[转]Cyclone器件全局时钟尽在掌控
 【转自】EDN博客精华文章  作者:ilove314http://article.ednchina.com/Other/20090323085107.htm  首先感谢wind330兄的《掌控全局时...
我要评论
0
3
1
2
3
4
5
6
7
8
9
0
关闭 热点推荐上一条 /4 下一条