begin end中阻塞语句与非阻塞语句执行顺序的问题
来源:互联网 发布:java中字符串截断 编辑:程序博客网 时间:2024/06/05 16:16
- 1
module fsm_2(clk,A,Y);input clk,A;output reg Y;reg q1;always@(posedge clk)beginY<=q1&(~A);q1=~A;endendmodule
- 2
将always块中的语句改为
q1=~A;Y<=q1&(~A);
- 3
将always块中的语句改为
q1<=~A;Y<=q1&(~A);
1与3的电路是相同的。
因此,我认为在非阻塞赋值后加阻塞赋值语句是没有意义的,对于综合后,将对于非阻塞赋值语句的RHS表达式的变量重新赋值的阻塞赋值全变为非阻塞赋值,因为他认为RHS表达式的变量在这个时钟周期内不能被改变,如:1中,Y<=q1&(~A);q1=~A;非阻塞赋值语句的RHS表达式的变量q1在下一条阻塞语句中又被赋值,因此,默认为q1<=~A;
总结:
对执行顺序的理解:
begin end块中顺序执行,即一条一条的执行,只不过,遇到非阻塞时 ,只执行RHS表达式的值,不执行赋值,而后,再执行下一条语句,若下一条语句仍是非阻塞,则继续只执行RHS表达式的值,不执行赋值。如:
module fsm_2(clk,A,Y1,Y2);input clk,A;output reg Y1,Y2;reg q1,q2;always@(posedge clk)beginq1<=A;//1Y1<=q1&(~A);//2q2=~A;//3Y2<=q2&(~A);//4endendmodule
执行顺序是:A,q1&(~A),q2=~A,q2&(~A);
对于有些文章说
“ 在计算非阻塞赋值的RHS表达式和更新LHS期间,其他的verilog语句,包括其他的verilog 非阻塞赋值语句都能同时计算RHS表达式和更新LHS。”不能理解是
2非阻塞语句的rhs执行中,同时4非阻塞语句的rhs同时也在执行,而是2非阻塞语句的rhs执行后,再执行3阻塞语句,再执行4非阻塞语句的rhs。
- begin end中阻塞语句与非阻塞语句执行顺序的问题
- Verilog中阻塞与非阻塞语句
- Verilog中阻塞与非阻塞语句
- FIFO 先进先出模块中 理解 verilog 阻塞与非阻塞执行顺序
- Verilog中阻塞(=)与非阻塞语句(<=)…
- verilog HDL 的阻塞和非阻塞语句分析
- verilog HDL 的阻塞和非阻塞语句分析
- verilog HDL 的阻塞和非阻塞语句分析
- 【转载】浅谈阻塞和非阻塞语句的本质区别
- 阻塞和非阻塞语句区别
- While中语句执行顺序的问题
- 套接字中connect阻塞与非阻塞问题
- sqlserver中查询阻塞的语句
- QTcpSocket通信编程时阻塞与非阻塞的问题
- QTcpSocket通信编程时阻塞与非阻塞的问题
- QTcpSocket通信编程时阻塞与非阻塞的问题
- 介绍WinSock中“阻塞”与“非阻塞”的概念。
- CPLD/FPGA/Verilog_Verilog中阻塞与非阻塞的区别
- jQuery操作<input type="checkbox">
- vps windows server 2003 部署java web 应用 tomcat+jdk
- 网页字体选择
- 杨氏矩阵搜索算法
- 怎样才能把一个代码变成软件成品?一个初学者的困惑,我们写的代码都只能是解决一些数学问题而已。怎么把它变成一个软件。
- begin end中阻塞语句与非阻塞语句执行顺序的问题
- JavaScript特性一:变量作用域
- MonoBehaviour的行为
- mac 安装zsh
- Nginx 进程模型
- ESB企业服务总线
- 详解linux vi命令用法【转】
- spring core的method injection
- 外场巡视录01