3530|1

6892

帖子

0

TA的资源

五彩晶圆(高级)

楼主
 

关于FSM(有限状态机)的 test bench 写法的一点总结 [复制链接]

在写FSM的test bench时,会想要检查FSM的state,我知道的方法有下面几个:
1. 把state定义在UUT module的output port里。这样做的缺点很明显,这个port是完全多余的(通常来说),浪费有限的硬件资源。
2. 用诸如$display()的语句,在console里面显示出来。这样做的话结果不是显示在waveform里面,不直观。
3. 在test bench里面定义reg型变量,用作state的indicator,然后在waveform窗口,把这个变量的radix改成ASCII(改成ASCII是因为通常我们都会把state变量的数值重新定义成文字,使state符合自然语言,更加直观。应为要保存ASCII型的值,所以这个reg型变量需要比较大的width,一个ASCII字符8bit)。这是这篇文章要推荐的办法。
具体做法是在test bench里,先定义reg型变量做state indicator。
// declare 2 reg type variable for state indicator
reg        [31:0]current_state, next_state;
这里用32bit的width是因为本例的state最长是4个字母。
接着,把state的数值定义成自然语言的单词。
// state definition
parameter    Zero = 0, P = 1, A = 2, B = 3, C = 4;
然后,用always语句抓UUT的state为敏感变量,用case语句给前面定义的state indicator赋值。这里取UUT的state时,使用了类似于C++里调用class的变量的方式,即"instance_name.variable_name”。
always @(ex1_4_2_tb.cur_state or ex1_4_2_tb.next_state)
    begin
        case (ex1_4_2_tb.cur_state)
            Zero    : current_state = "Zero";
            P        : current_state = "P";
            A        : current_state = "A";
            B        : current_state = "B";
            C        : current_state = "C";
        endcase
        case (ex1_4_2_tb.next_state)
            Zero    : next_state = "Zero";
            P        : next_state = "P";
            A        : next_state = "A";
            B        : next_state = "B";
            C        : next_state = "C";
        endcase
    end
最后,在modelsim的waveform窗口里,把前面定义的reg型state indicator的radix改成ASCII。这样,就可以在waveform窗口里面看到state了。
 
此帖出自FPGA/CPLD论坛
点赞 关注
 

回复
举报

6892

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 
顶顶!
此帖出自FPGA/CPLD论坛
个人签名一个为理想不懈前进的人,一个永不言败人!
http://shop57496282.taobao.com/
欢迎光临网上店铺!
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表