Verilog语法遗漏点

Posted shaonianpi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Verilog语法遗漏点相关的知识,希望对你有一定的参考价值。

1 关于参数定义

Parameter:parameter只能定义在端口生命的前面,如

Input[whith:0] a;

Parameter whith=4;

这样的参数定义出现在声明的后面会报错

 

2 关于always

always块不仅可以描述时序逻辑,也可以描述组合逻辑

如wire a,b;  assign a=b

与reg a; wire b;  [email protected](b) a=b;     可见,always块内允许阻塞赋值

不过需要注意的是

always中,等号左边的变量必须是reg型,而不能是wire型,无论是组合逻辑还是时序逻辑均成立,但是最终变量a被综合成了连线,而不是寄存器!!!!

 

3 关于if  else

If…else…语句,只能依附于always等程序模块不能单独使用,如果想单独使用,用三目运算符代替

 

4 不定态X表示不可推断电平,高阻态Z相当于断路状态

 

5 REG型量不一定被综合成寄存器

Verilog中,块内被赋值的变量,都必须是寄存器reg类型!!如上述2中的介绍,但是reg型变量不一定被综合成寄存器,组合逻辑中被综合成互连,不完全组合逻辑中,描述成锁存器。所以寄存器变量不一定被综合成寄存器。

6 归约运算符

归约运算符是一种单目运算符;被操作数具有一定的位宽,操作的结果都是1位。

如wire[3:0]bus 4’hf;

  Wire result = &bus;

  上述赋值相当于assign result=bus[0]&bus[1]&bus[2]&bus[3];//归约与运算符

如果是|,相当于assign result bus[0]| bus[1]|bus[2]|bus[3];//归约或运算符

  如果是^,相当于………………………………………………………………..//归约异或运算符

 

实例参数重载方式,这个是为了输入端口宽度进行灵活配置的方式(遇到再看)

 

8 关于[email protected]()敏感列表

[email protected](posedge clk)

[email protected](signal)

关于电平敏感,表示电平发生变化就执行块内的内容。

 

以上是关于Verilog语法遗漏点的主要内容,如果未能解决你的问题,请参考以下文章

FPGA学习之Verilog语法

FPGA学习之Verilog语法

verilog之生成语句

verilog里面always 与reg分别代表啥意思,有啥功用?为啥只对输出用reg,对输入不用?

FPGA verilog 小问题求解

verilog语法--边沿检测