最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

学习Verilog HDL语言过程中关于三种常用赋值语句的困惑!

来源:动视网 责编:小OO 时间:2024-12-30 10:36:45
文档

学习Verilog HDL语言过程中关于三种常用赋值语句的困惑!

“=”是阻塞赋值语句,也称为串行语句,意味着所有该类赋值在所在模块内按顺序执行。例如,在一个if(ena)条件语句中,a=b;a=c;c=d;这样的语句将按顺序执行。假设在执行前a=0,b=1,c=1,d=0,则可以这样理解执行顺序和结果:首先执行a=b,得到a=0;然后执行a=c,得到a=1;最后执行c=d,得到c=0。当该条件语句执行完时,最终得到a=1,c=0。
推荐度:
导读“=”是阻塞赋值语句,也称为串行语句,意味着所有该类赋值在所在模块内按顺序执行。例如,在一个if(ena)条件语句中,a=b;a=c;c=d;这样的语句将按顺序执行。假设在执行前a=0,b=1,c=1,d=0,则可以这样理解执行顺序和结果:首先执行a=b,得到a=0;然后执行a=c,得到a=1;最后执行c=d,得到c=0。当该条件语句执行完时,最终得到a=1,c=0。


在学习Verilog HDL语言的过程中,三种常用赋值语句常常引起学习者的困惑。其中,“=”左边是wire类型,可在定义时用“assign”连续赋值语句,例如:wire[7:0] a; input[7:0] c,d; assign a=c+d; 这样,在后面的程序中可以直接使用a来表示c+d的值,这对模块间的互联非常有用。

“=”是阻塞赋值语句,也称为串行语句,意味着所有该类赋值在所在模块内按顺序执行。例如,在一个if(ena)条件语句中,a=b; a=c; c=d; 这样的语句将按顺序执行。假设在执行前a=0,b=1,c=1,d=0,则可以这样理解执行顺序和结果:首先执行a=b,得到a=0;然后执行a=c,得到a=1;最后执行c=d,得到c=0。当该条件语句执行完时,最终得到a=1,c=0。

而“<=”是非阻塞赋值语句,相当于并行语句,当该语句所在模块结束时,所有带“<=”的语句同时执行。例如:if(ena) begin a<=c; a=b; c=d; end 若执行前,a=0,b=1,c=1,d=0,那么在条件语句执行完时,所有带“<=”的语句同时执行,得到a=c=1,c=d=0。这与阻塞赋值语句执行顺序不同,非阻塞赋值语句会在该模块执行结束时同时更新。

理解这些赋值语句的区别和用法,对编写高效、正确的Verilog代码至关重要。正确使用这些语句,可以避免许多潜在的错误,提高代码的可读性和可维护性。

文档

学习Verilog HDL语言过程中关于三种常用赋值语句的困惑!

“=”是阻塞赋值语句,也称为串行语句,意味着所有该类赋值在所在模块内按顺序执行。例如,在一个if(ena)条件语句中,a=b;a=c;c=d;这样的语句将按顺序执行。假设在执行前a=0,b=1,c=1,d=0,则可以这样理解执行顺序和结果:首先执行a=b,得到a=0;然后执行a=c,得到a=1;最后执行c=d,得到c=0。当该条件语句执行完时,最终得到a=1,c=0。
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top