一个变量只能在一个always中赋值

2019-07-15 22:26发布

对按键计数,编译不通过!!
module dc_counter(rstn,up,down,dout);
input                 rstn;
input                 up;
input                        down;
output[8:0] dout;
reg[8:0]                dout_r;
reg[3:0]cnt;
always@(posedge up or negedge rstn)//计数范围50~450
        begin
        if(! rstn)
                dout_r<=9'd450;
        else
          begin
           if(dout_r>=9'd449)
                   dout_r<=450;
                else
                        dout_r<=dout_r+1;
                end
        end
always@(posedge down or negedge rstn)
begin
  if(! rstn)
     dout_r<=9'd450;
        else
     begin       
     if(dout_r<=9'd50)
                  dout_r<=9'd50;
                else
                  dout_r<=dout_r-1;
                end
end
assign dout=dout_r;
endmodule


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
reallmy
2019-07-16 02:42
是的,不能再两个always块里对一个变量赋值!!你可以再定义一个reg变量,输出等于这两个reg相加就行啦!!不过还是要用时钟信号比较正规,你这个写法本身就是不对的,我刚学fpga的时候也像你这么写,哈哈,posedge后面只能跟时钟!!!!!很重要! 最佳答案

一周热门 更多>