微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 一个变量只能在一个always中赋值

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

时间:10-02 整理:3721RD 点击:
对按键计数,编译不通过!
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'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

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

不知道报错提示是什么,不过友情提示一下,posedge后面只能跟时钟信号,你可以用时钟信号来采down与up的沿,用沿来控制计数器!

Error (10028): Can't resolve multiple constant drivers for net "dout_r[8]" at dc_counter.v(29)
报错说:不能在两个always里边对同一个量进行操作。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top