微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 请问这样子赋值为什么会使后面的case语句出现错误?

请问这样子赋值为什么会使后面的case语句出现错误?

时间:10-02 整理:3721RD 点击:
我希望通过按键切换控制的数字位

  1.     reg digit_position;initial digit_position=3'd0;
  2.     always@(posedge clk)
  3.     begin
  4.        if((keydown[1])||(digit_position>4))
  5.          digit_position<=3'd0;
  6.          
  7.        else if((keydown[3])&&(digit_position<5))
  8.          digit_position<=digit_position+3'd1;
  9.          
  10.       else if((keydown[4])&&(digit_position>1))
  11.        digit_position<=digit_position-3'd1;
  12.   end

复制代码





这是message的warning


所以FPGA上只会工作led[0]和led[1],led[2]、led[3]、led[4]都没有工作



   因为你的digit_position只有1bit,只有0和1两个分支,其它都是unreachable.


+1!

语句:reg digit_position;表明你所定义的寄存器类型为1位宽,因此你的digit_position只会是1'b0或1'b1,当然不会跳到后续状态上去。应修改为reg [2:0] digit_position;

谢谢大家,我已经解决了,正是因为位宽不匹配问题!



   华科学长好啊,求私聊QQ393756200

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

网站地图

Top