FPGA学习系列:5.阻塞赋值与非阻塞赋值
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FPGA学习系列:5.阻塞赋值与非阻塞赋值
设计背景:
阻塞(=)和非阻塞(
设计原理:
阻塞:在本语句中“右式计算”和“左式更新”完全完成之后,才开始执行下一条语句;非阻塞:当前语句的执行不会阻塞下一语句的执行。
我们来看一下下面的阻塞的代码
0 module study_4 (clk, rst_n, d, q);
1 //输入输出端口
2 input clk;
3 input rst_n;
4 input [1:0] d;
5 output reg [1:0] q;
6
7 reg [1:0] q1; //定义一个寄存器
8
9 always @ (posedge clk)
10 begin
11 if(!rst_n) //复位时用阻塞给寄存器输出赋初值
12 begin
13 q1 = 0;
14 q = 0;
15 end
16 else //阻塞语句进行赋值
17 begin
18 q1 = d;
19 q = q1;
20 end