标题: FPGA程序 当第一个时钟沿来后,第二个always的if语句会不会认为a等于1 [打印本页]

作者: 宮梓萱    时间: 2018-2-28 10:09
标题: FPGA程序 当第一个时钟沿来后,第二个always的if语句会不会认为a等于1
always@(posedge clk or negedge rst)
       if(!rst)  a<=5'd0;
                 else    a<=a+1'b1;
                 
always@(posedge clk or negedge rst)
       if(!rst)         b<=5'd0;         
       else if(a==1'b1)  b<=a;
       else ;
当第一个时钟沿来后,第二个always的if语句会不会认为a等于1



作者: KawhiL    时间: 2018-2-28 18:01
这里估计没人会FPGA,这里基本都是搞单片机的。
作者: rally    时间: 2018-2-28 19:13
因为是clk,所以 a<=5'd0;        第二个   if(!rst)         b<=5'd0;         
       else if(a==1'b1)  b<=a;
       else ;
应该执行b<=5'd0; 吧。
作者: 1499369743    时间: 2018-2-28 20:54
FPGA啊 爱莫能助了 帮顶起来
作者: blangle    时间: 2018-2-28 21:14
有用 标记一下
作者: 奋斗de小青年    时间: 2018-2-28 21:38
虽然我学的是VHDL,但是verilog我也能看懂一些,你这个明显就是基础知识非常不过关,我随手查了一下所有的always块是并行的,如果来个脉冲两个语句同时执行,你说下面那个会不会认为a=1,如果这个问题还不明白,拿起你手边任何一本verilog书把基础再看一下,搞清楚一个脉冲来临之后变量是如何变化的
作者: 宮梓萱    时间: 2018-3-1 13:13
奋斗de小青年 发表于 2018-2-28 21:38
虽然我学的是VHDL,但是verilog我也能看懂一些,你这个明显就是基础知识非常不过关,我随手查了一下所有的a ...

是的,我刚开始学习。嗯嗯,也就是这个时候判断a的值还是0
作者: 出来逛逛    时间: 2018-3-8 15:56
非阻塞赋值是先把右侧计算好后统一赋给左侧,第一个时钟沿a应该是0,这样容易产生BUG,编译一下看看吧
作者: loobing    时间: 2018-3-8 17:30
不会,可以仿真看一下,复位解除后 第一个时钟周期a=1,b=0.
作者: qq448193918    时间: 2018-3-9 21:36
不太懂FPGA,帮顶




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1