锆石科技社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 242|回复: 1

关于状态机

[复制链接]

18

主题

61

帖子

1243

积分

金牌会员

Rank: 6Rank: 6

积分
1243
发表于 2016-12-1 09:15:08 | 显示全部楼层 |阅读模式
module kongzhi(
    clk_1k          ,
    rst_n           ,
    dout            ,
    count_30s_shi   ,
    count_30s_ge   
    );


    parameter               DATA = 5_000_000       ;
    parameter               DATA_W = 6              ;
    parameter               DATA_SHI =3             ;
    parameter               DATA_GE =4              ;

    input                   clk_1k                     ;
    input                   rst_n                   ;


        output   [DATA_W-1:0]      dout                    ;
    output   [DATA_SHI-1:0]    count_30s_shi           ;
    output   [DATA_GE-1:0]     count_30s_ge            ;

    reg   [DATA_W-1:0]      dout                    ;
    reg   [DATA_SHI-1:0]    count_30s_shi           ;
    reg   [DATA_GE-1:0]     count_30s_ge            ;

    reg   [9:0]             clk_1                   ;
    reg                     clk_1hz                 ;

    parameter               S0=0,S1=1,S2=2,S3=3     ;
    reg   [2:0]             c_s                     ;
    reg   [2:0]             n_s                     ;

    always@(posedge clk_1k or negedge rst_n)begin
        if(rst_n==1'b0)begin
            clk_1<=0;
        end
        else if(clk_1==DATA-1)begin
            clk_1<=0;
        end
        else begin
            clk_1<=clk_1+1'b1;
        end
    end


    always@(*)begin
        if(clk_1==DATA-1)begin
            clk_1hz=1;
        end
        else begin
            clk_1hz=0;
        end
    end


    always@(posedge clk_1k or negedge rst_n)begin
        if(rst_n==1'b0)begin
            count_30s_ge<=0;
        end
        else if(clk_1hz==1&&count_30s_ge==9) begin
            count_30s_ge<=0;
        end
        else if(clk_1hz==1)begin
            count_30s_ge<=count_30s_ge+4'b1;
        end
    end


    always@(posedge clk_1k or negedge rst_n)begin
        if(rst_n==1'b0)begin
            count_30s_shi<=0;
        end
        else if(clk_1hz==1&&count_30s_shi==3&&count_30s_ge==0) begin
            count_30s_shi<=0;
        end
        else if(clk_1hz==1&&count_30s_ge==9)begin
            count_30s_shi<=count_30s_shi+1'b1;
        end
    end


     always  @(posedge clk_1k or negedge rst_n)begin
         if(rst_n==1'b0)begin
             c_s<=S0;
         end
         else begin
             c_s<=n_s;
         end
     end


     always  @(*)begin
         case(c_s)
             S0:begin
                 if(count_30s_shi==2&&count_30s_ge==5&&clk_1hz==1)
                     n_s=S1;
                 else         
                     n_s=S0;
             end
             S1:begin
                 if(count_30s_shi==3&&count_30s_ge==0&&clk_1hz==1)
                     n_s=S2;
                 else
                     n_s=S1;
             end
             S2:begin
                 if(count_30s_shi==2&&count_30s_ge==5&&clk_1hz==1)
                     n_s=S3;
                 else
                     n_s=S2;
             end
             S3:begin
                 if(count_30s_shi==3&&count_30s_ge==0&&clk_1hz==1)
                     n_s=S0;
                 else
                     n_s=S3;
             end
            default:begin
                n_s=S0;
                end
                        endcase
        end
          always  @(*)begin
         case(c_s)
             S0:begin
                 dout=6'b110011;
                         end
             S1:begin
                 dout=6'b101011;
             end
             S2:begin
                 dout=6'b011110;
             end
             S3:begin
                 dout=6'b011101;
             end
            default:begin
                dout=6'b110011;
                end
           endcase
     end
    endmodule

为什么状态不会发生改变啊

回复

使用道具 举报

发表于 2016-12-1 10:47:02 | 显示全部楼层
可以用SignalTap一步步查看下程序运行到什么地方失控了,或者用Modelsim仿真一下看看也都是可以的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|锆石科技社区 ( 苏ICP备15059756号  

GMT+8, 2019-5-27 04:09 , Processed in 0.136739 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表