在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 7017|回复: 10

[讨论] 有限状态机和一堆counter有什么区别?

[复制链接]
发表于 2012-9-23 11:14:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
我用verilog实现了一个两层循环的算法,用伪代码就大概是:
for(i=1;i<11;i++)
    for(j=1;j<11;j++)
         a[i]=a[i]+b[j];

仿真结果是对的,也能综合,但是同组的人都说我没有“有限状态机”,很不专业,也没法写报告;
但是我自认为设计的还是有条理的:
(a 和 b 都是register 或者就是buffer,连RAM的访问都不用)
rst信号时,所有寄存器复位;
外来enable信号时,第1个a 寄存器开始存储b 寄存器的累加值,我用一个counter_b从0开始计b 的相加次数;
当counter_b==10的时候,counter_b归零开始重新算,下一轮的累加结果赋给下一个a 寄存器,counter_a加一;
当counter_a==10的时候,counter_a归零,ready信号从0到1向系统提示任务完成;
说白了就是由rst, enable, counter_a, counter_b来控制的。请问如何用FSM(有限状态机)来抽象出来描述?
关键就是要把控制信号全都放到一个模块里面,起名为FSM,写文章的时候比较好看。
发表于 2012-9-23 19:51:07 | 显示全部楼层
在综合之前,能从代码直接看出电路的样子吗?你都给不出电路图,文章能好看吗?
当然你的这个东西两个always块就解决了,真的没必要用FSM(有限状态机,看来你也不知道FSM是什么)
发表于 2012-9-24 10:32:12 | 显示全部楼层
电路综合不提倡使用for语句,何况你这还是嵌套使用,至于原因,你可以自己查查
发表于 2012-9-24 13:04:00 | 显示全部楼层
如3楼所说,现在综合工具对for的支持都不好,
发表于 2012-9-24 13:09:34 | 显示全部楼层
楼上,lz已经说了那个是伪代码……
如果仅实现你说的循环累加,倒是真的没必要用状态机。没有周期要求的话,加法器&寄存器就够了,寄存器用来存放加法结果并返回至加法器输入端。
很多情况下状态机的描述会更清晰,但并不是说一定要用状态机,找到合适的方法即可。
发表于 2012-9-24 13:22:27 | 显示全部楼层
你们组都是高人啊,只是一个加法,用什么状态机啊;

用流水线
发表于 2012-9-25 14:55:41 | 显示全部楼层
状态机只是节省了状态转换的条件 比如一个always使能拧一个always
所以只要是时序电路 可以用状态机也可以不用状态机,也并不是状态机一定好用 看使用环境的
发表于 2012-9-25 23:10:58 | 显示全部楼层
状态机有一段式、两端式、三段式。
发表于 2012-9-26 07:56:25 | 显示全部楼层
搞不懂。
如果用到状态控制,当然是状态机比较好。但也不用乱用。

FOR语句用在综合,主要是因为它是组会逻辑,时序比较难收敛(除非你的设计只跑几兆)。
发表于 2018-11-28 13:52:31 | 显示全部楼层
学习中。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-10 21:41 , Processed in 0.033633 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表