微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > verilog FPGA 中 状态转换程序中出现的问题

verilog FPGA 中 状态转换程序中出现的问题

时间:10-02 整理:3721RD 点击:
module contral(clk1hz,rst_n,hold,
    led,num,flash);
input clk1hz;
input rst_n;
input hold;  //incident happen
//input INTI;  //红绿灯初始状态
output [2:0] led; //红绿灯
output [4:0] num; //显示的倒计时
output flash; //闪烁的标识符
parameter INTI = 3'b100;
reg [2:0] state;  // 当前状态
reg [4:0] num_r; //显示的倒计时
reg flash_r;
always @ (posedge clk1hz or negedge rst_n)
if(!rst_n)
begin
  num_r <= 5'b0;
end
else if(hold)
begin
  state <= 3'b100;
  flash_r <= 1'b1;
end
else
begin
  num_r <= num_r + 1'b1;
end
always @ (posedge clk1hz or negedge rst_n)
if(!rst_n)
state <= INTI;
else
case(state)
  3'b100:if(num_r == 0)
    begin
     num_r <= 5'd5;
     state <= 3'b010;
    end
  3'b010:if(num_r == 0)
    begin
     num_r <= 5'd20;
     state <= 3'b001;
    end
  3'b001:if(num_r == 0)
    begin
     num_r <= 5'd25;
     state <= 3'b100;
    end
  endcase
assign flash = flash_r;
assign num = num_r;
assign led = state;

endmodule
错误提示:can't resolve multiple constant drivers for net "state.001"
...............
can't resolve multiple constant drivers for net "num_r[4]"
................
等等,错误指示都在红色标注的地方。
不知道问题所在,
请各位高手指教~



    不要在两个always语句中对同一个变量重复赋值



    明白了,thank you!

哈哈,学习了

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

网站地图

Top