Verilog的块语句

块语句的类型

一.顺序块

1)定义:关键字begin——end用于将多条语句组成顺序块。

2)特点:

a.顺序块中的语句是一条一条按顺序执行的,只有在前面的语句执行完,才会执行后面的语句。(除了带有嵌入延迟语句控制和非阻塞赋值语句)

注意:非阻塞语句是在整个块结束之后才会赋值的。

b.如果语句包括延时或者事件控制,那么延时总是相对于前面那条语句执行完成的仿真的时间。

二并行块

1)定义:关键字fork--end组成并行块

2)特点:

a.并行块的语句是并发的。

b.并行块的语句执行的顺序是由语句内延时或者事件控制决定的。

c.语句中的延时或者事件的控制都是相对于语句开始执行的时刻而言。

### Verilog 控制结构语法示例 #### 条件语句 `if-else` 条件判断是编程中的基础,在Verilog中可以使用`if-else`来进行分支选择。当表达式的值为真时执行一条或多条语句;如果该表达式不成立则跳过这些语句,或者转向由`else`引导的部分。 ```verilog always @(a, b, sel) begin if (sel == 1'b0) out = a; // 当 sel=0 时输出 a else out = b; // 否则输出 b end ``` 此段代码展示了如何利用输入信号`sel`来决定是从端口`a`还是`b`获取数据并赋给变量`out`[^1]。 #### 多路分支 `case` 对于多于两个选项的情况,采用`case`语句更为简洁明了。通过比较目标表达式与各个项之间的匹配情况从而确定应采取的动作路径。 ```verilog always @(*) begin : proc_state_decode case (state) IDLE: next_state = WAIT; WAIT: if (start==1) next_state = BUSY; else next_state = WAIT; BUSY: if (done==1) next_state = DONE; else next_state = BUSY; default: next_state = IDLE; endcase end ``` 上述例子说明了一个状态机的状态转移逻辑,其中包含了四个可能的状态转换情形[^2]。 #### 循环结构 `for`, `while` 循环允许重复执行某些特定操作直到满足某个终止条件为止。下面是一个简单的计数器实现: ```verilog integer i; initial begin for(i=0;i<8;i=i+1) begin #10 clk=~clk; // 每隔10个时间单位翻转一次时钟信号 end end ``` 这段程序创建了一个初始过程(`initial`),在这个过程中定义了一个整型变量i作为索引,并设置了一组延迟指令(#10),用于每隔固定周期改变一次时钟线电平[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值