明德扬论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信扫一扫,快捷登录!

查看: 133374|回复: 0

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

[复制链接]

3

主题

48

帖子

239

积分

中级会员

Rank: 3Rank: 3

积分
239
QQ
发表于 2019-11-12 22:00:27 | 显示全部楼层 |阅读模式

马上注册,看完整文章,学更多FPGA知识。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
在状态机练习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
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|MDYBBS ( 粤ICP备16061416号 )

GMT+8, 2024-11-23 05:59 , Processed in 0.045014 second(s), 21 queries .

Powered by Discuz! X3.4

本论坛由广州健飞通信有限公司所有

© 2001-2019 Comsenz Inc.

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