#### 赋值语句

##### 非阻塞赋值

```verilog
<=	// 信号的值不是立刻改变，块结束后才完成赋值操作，常用的赋值方法
```

##### 阻塞赋值

```verilog
=	// 信号的值在赋值完成后立刻改变，赋值完成后块才结束，可能产生意外结果
```

#### 块语句

##### 顺序块

```verilog
/* 格式一 */
begin
    ...;
end

/* 格式二 */
begin:块名
    ...;
end
```

##### 并行块

```verilog
/* 格式一 */
fork
    ...;
join

/* 格式二 */
fork:块名
    ...;
join
```



#### 条件语句

##### if_else语句

```verilog
/* 格式一 */
if (表达式) 语句;

/* 格式二 */
if (表达式) 语句1;
else 语句2;

/* 格式三 */
if (表达式1) 语句1;
else if (表达式2) 语句2;
else if (表达式3) 语句3;
else 语句n;
```



##### case语句

```verilog
/* 格式一 */
case (表达式)
    分支表达式: 语句;
    default: 语句;
endcase
    
/* 格式二 */
casez (表达式)			// 不考虑高阻值的比较过程
    分支表达式: 语句;
    default: 语句;
endcase
    
/* 格式二 */
casex (表达式)			// 不考虑高阴值和不定值的比较过程
    分支表达式: 语句;
    default: 语句;
endcase
```



#### 循环语句

##### forever语句

```verilog
forever 语句;
```



##### repeat语句

```verilog
repeat (表达式) 语句;
```



##### while语句

```verilog
while (表达式) 语句;
```



##### for语句

```verilog
for (表达式1;表达式2;表达式3) 语句;
```



#### 结构说明语句

##### initial语句

```verilog
initial
    begin
        ...;
    end
```



##### always语句

```verilog
always <时序控制> <语句>
```



##### task语句

```verilog
for (表达式1;表达式2;表达式3) 语句;
```



##### function语句

```verilog
for (表达式1;表达式2;表达式3) 语句;
```

