computer_knowledge_notes/Languages/Verilog/语句.md

161 lines
1.8 KiB
Markdown

#### 赋值语句
##### 非阻塞赋值
```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) 语句;
```