Verilog语法提炼

2018.7.26

一.always里面赋值语句左边必须声明成reg。

注意:1.声明成reg,不一定得到寄存器:(阻塞赋值)

Verilog语法提炼_第1张图片
声明成reg无寄存器综合

2.未声明成reg,也可能得锁存器。

Verilog语法提炼_第2张图片
隐含锁存器

备注:该图为电平触发,故因新增锁存器。

二、assign表达式左边必须声明为wire。

三、阻塞赋值用“=”,非阻塞赋值用“<=”.

四、1)边沿触发生成寄存器的时序逻辑电路

        2)电平触发条件完整,生成组合逻辑电路

       3)电平触发条件不完整,生成锁存器的时序逻辑。

五、Conding要点:

       1)如果是边沿触发的逻辑,比如always@(posedge clk),里面一律用'<='赋值

       2)如果是电平触发的逻辑,一律使用“=”赋值

       3)电平触发:逻辑简单用assign语句,逻辑复杂用always语句

       4)分支条件写完整,防止出现锁存器。

六、循环语句:

Verilog语法提炼_第3张图片
循环语句

七、task and function:

Verilog语法提炼_第4张图片
task
Verilog语法提炼_第5张图片
function

八、语法小汇总:

1)always语句块和assign语句块:并行执行。

2)always #50 clk=~clk:50ns的时钟。

3)进制表示方法:8’d61:8是bit数。

4)变量的分类:网络型(net type:常见wire,如果缺省,默认wire)和寄存器型(register type:常见reg,算法开发:integer,real,time)。

5)reg [7:0]:二维向量成为存储器变量。

6)某一操作数有不确定值,结果也是不定值。(除===)

7)连接符:{sum,kla}。

8)赋值语句:连续赋值语句(assign),过程赋值语句(always:电平触发:组合逻辑,边沿触发:时序逻辑)。

9)条件语句:if-else,case语句。

10)循环语句:forever,repeat,while,for.

11)结构说明语句:initial,always,task,function。

12)编译预处理语句:`define,`include,`timei

13)过程块:initial和always.always过程块不能嵌套使用.

14)Initial:模拟硬件上电的过程,不可综合,做验证。1不能嵌套使用。2模拟0时刻开始执行,只执行一次。3同一模块内多个initial块并行执行。

15)过程赋值语句:阻塞赋值(类C)和非阻塞赋值(并行赋值)。

16)Always电平触发不建议用非阻塞逻辑表达式,边沿触发尽量用非阻塞赋值。

你可能感兴趣的:(Verilog语法提炼)