微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > QuartusII 状态机视图显示不完全,问题在哪里?

QuartusII 状态机视图显示不完全,问题在哪里?

时间:10-02 整理:3721RD 点击:
用以下代码实现对输入信号中连续三个1的检测,当检测到连续的三个1后输出一个高电平。要求用状态机实现,代码如下。
问题:

代码在仿真是工作正常,但是在状态机视图中没有显示出完整的状态转换图,请问是代码有问题吗?比如存在一些隐含的错误?
另外,如果把状态机中S1,S2,S3中的任何一个状态不让其返回S0,那么可以得到一个相对完整的转换图,但是,一旦S1,S2,S3均有一条路径返回S0时,S1,S2,S3返回S0的路径就会同时消失掉,这是为什么呢?

  1. module mypro(
  2.     clk,
  3.     rst_n,
  4.     din,
  5.     dout
  6.     ); input clk;
  7. input rst_n;
  8. input din;
  9. output reg  dout; parameter S0=2'b00,S1=2'b01,S2=2'b10,S3=2'b11;

  10. reg [1:0] currentstate,nextstate;

  11. always @ (posedge clk or negedge rst_n)
  12. begin
  13.   if (!rst_n)
  14.   begin
  15.    currentstate<=S0;
  16.   end
  17.   else
  18.    currentstate<=nextstate;
  19. end always @ (currentstate or din)
  20. begin
  21.   case (currentstate)  
  22.   S0:
  23.    begin
  24.    dout=1'b0;
  25.     if(din)nextstate=S1;
  26.     else nextstate=S0;
  27.    end
  28.   S1:
  29.    begin
  30.     dout=1'b0;
  31.     if(din)nextstate=S2;
  32.     else nextstate=S0;
  33.    end
  34.   S2:
  35.    begin
  36.     dout=1'b0;
  37.     if(din)nextstate=S3;
  38.     else nextstate=S0;
  39.    end
  40.   S3:
  41.    begin
  42.     dout=1'b1;
  43.     if(din)nextstate=S3;
  44.     else nextstate=S0;
  45.    end  
  46.   endcase
  47. end
  48. endmodule

复制代码

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

网站地图

Top