官方论坛
官方淘宝
官方博客
微信公众号
点击联系吴工 点击联系周老师
您的当前位置:主页 > 技术文章 >

采用变量计数法的计数状态机实现与仿真-明德扬科教(mdy-edu.com)

发布时间:2019-12-10   作者:admin 浏览量:

采用变量计数法的计数状态机实现与仿真

       状态机练习2中,需要在状态S1和状态2中进行计数实现状态转移,显然这两个状态下的计数不会重叠使用,也就是以采用一个计数器来实现,但两种状态下的计数值却不一样,容易想到明德扬计数器方案中的变量设计方法,我采用了这样方法,并进行仿真验证,效果一致,也保证了代码的一致性!原计数器代码略。修改后代码为:

always@(*)begin
                if(!rst_n)begin
                        x = 0;
                end
                else if(state_c ==S1)begin
                        x = 5;
                end
                else if(state_c == S2)begin
                        x = 7;
                end
                else begin
                        x = 0;
                end
        end
        
        always @(posedge clk or negedge rst_n)begin                        
                if(!rst_n)begin
                        cnt <= 0;
                end
                else if(add_cnt)begin
                        if(end_cnt)
                                cnt <= 0;
                        else
                                cnt <= cnt + 1'b1;
                end
        end
    assign add_cnt = en && (state_c == S1 || state_c == S2);
        assign end_cnt = add_cnt && cnt== x-1;   


仿真效果如下图:


D:\AA_my_design\MDY_exercise\dianbo\state_machine\exercise2\img\wave.bmp


  •   
  •   
  •   
  •  
  • FPGA教育领域第一品牌
  • 咨询热线:020-39002701
  • 技术交流Q群:544453837