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

对按键计数,编译不通过!!
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

粽子糖果 发表于09-30 11:05 浏览65535次
分享到:

已有1条评论

  • 一见钟情
    一见钟情 09-30 13:17

    是的,不能再两个always块里对一个变量赋值!!你可以再定义一个reg变量,输出等于这两个reg相加就行啦!!不过还是要用时钟信号比较正规,你这个写法本身就是不对的,我刚学fpga的时候也像你这么写,哈哈,posedge后面只能跟时钟!!!!!很重要!

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

粽子糖果
粽子糖果(总统)
金币:41631个|学分:51991个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号