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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!)    创芯人才网--重磅上线啦!
12
返回列表 发新帖
楼主: vipjph

[讨论] 每日一题0806

[复制链接]
发表于 2012-8-7 10:59:46 | 显示全部楼层
问题2:

状态机核心3个元素:
1.状态跳转(组合逻辑)
2.现态到次态的转换(时序逻辑)
3.每个状态的输出(组合逻辑或时序逻辑)

三段式状态机,就是以上3个元素写3个always.
两段式状态机,把1-2合并为一个时序逻辑的always。第3部分,根据需要选择组合逻辑输出或者时序逻辑输出。
一段式状态机,自然就是以上3个部分的合并了。

资源问题:
我觉得现在的综合工具,既然已经能识别出状态机,那也应该能进行优化吧。认为这3种写法应该没有太大的资源差别。综合后在逻辑层面也许有差别,但在底层单元上,估计差别就很小了。

可读性和可维护性:
通常推荐2段式的写法。3段式太长,1段式不好阅读。当然如果状态机很简单,反而写个1段式的还简洁一些。

另外,1段式状态机有个好处,就是比较方便描述在状态变化时只执行一个周期的代码。2段式和3段式状态机都需要增加额外的语句来实现这个功能。
比如从S1->S2状态时,同时给出一个trigger信号,一个周期的高电平,之后停留在S2状态处理其它事情时,trigger信号一直为低。请问大家对于这个功能有什么好的写法来实现?
发表于 2012-8-7 14:15:55 | 显示全部楼层
第一题同意5楼的回答,关于第二题我觉得只不过是风格不同罢了,其实无所谓,如果设计复杂就用第二种,这样比较清晰,简单的用第一种也没什么问题。
发表于 2012-8-7 15:44:14 | 显示全部楼层
1、低功耗方法:
  (1) 降低工作电压;(2)降低电路的容性负载(将乘法变化为加法或移位操作),减少翻转次数,包括时钟门控、操作数隔离等方法;
  (3)物理的相关低功耗处理。
2、第一种写法综合出来的电路,out的输出与时钟有关系,好处在于out的输出必须是在时钟的跳变进行更新,不会由于state的抖动毛刺而出现在变化;
   第二种写法out的产生逻辑为组合逻辑,只与state的变化有关,容易随state信号的抖动毛刺而抖动
发表于 2012-8-7 18:02:38 | 显示全部楼层
1、低功耗设计可以从系统级、逻辑电路级、物理级着手。不同的级别对功耗的影响是不同的,越低层次的设计对低功耗的影响越小。从系统级来讲,在考虑软硬件划分系统整体架构设计上要考虑那种划分和设计功耗最小,选择功耗最小的算法,可以考虑并行运算和流水线等手段降低功耗;还可以设置多电压方案来降低功耗;设置省电模式。在电路级可以采用门控时钟和操作数隔离的、技术降低功耗。在逻辑综合时,可以考虑采用插缓冲、相位分配(phase assignment)等技术来降低功耗。 在进行布局布线时,也要考虑到功耗的影响。可以将翻转率高的节点用寄生电容较小的金属层来布线,以减少整体功耗。 此外,还可以考虑采用新的材料、新的封装技术来降低功耗,以消除功耗的影响。在实际应用中,通常在门级和晶体管级进行功耗分析。有些工具也支持RTL级的功耗分析,以帮助设计者尽早了解设计中功耗的情况。
2、两种代码设计的区别:从状态机的设计上良好的设计风格是组合逻辑和时序逻辑放在不同的always块中,便于理解和综合,就上面的两段代码来讲第二种写法out的产生逻辑为组合逻辑,只与state的变化有关,容易随state信号的抖动毛刺而抖动。
请大家批评指正,谢谢!
发表于 2012-8-7 18:06:17 | 显示全部楼层
1、低功耗设计可以从系统级、逻辑电路级、物理级着手。 在系统级,进行软、硬件划分时,要考虑哪种划分方案会得到更少的功耗;要选择功耗最小的算法;可以考虑采用并行运算、流水线等手段,降低功耗;可以采用多电压设计方案来降低功耗;可以设置省电模式,以便在系统不工作时降低功耗。 
在RTL设计级,可以考虑采用时钟门控、操作数隔离(operation isolation)等技术来降低功耗。 
在逻辑综合时,可以考虑采用插缓冲、相位分配(phase assignment)等技术来降低功耗。  
在进行布局布线时,也要考虑到功耗的影响。可以将翻转率高的节点用寄生电容较小的金属层来布线,以减少整体功耗
2、在写状态机要将时序逻辑和组合逻辑放在不同的always块中,就上面而言第二种写法out的产生逻辑为组合逻辑,只与state的变化有关,容易随state信号的抖动毛刺而抖动。
请大家批评指正,谢谢!
发表于 2012-8-7 20:00:14 | 显示全部楼层
从功耗方面考虑,第二种优于第一种,因为综合出的电路简单。
从时序方面考虑,第一种优于第二种,因为第一种的输出是被触发器打了一拍,所有四位输出都是同一时刻从触发器放出来的,四位输出是对齐的,不容易出现毛刺。
发表于 2012-8-7 22:05:52 | 显示全部楼层
降低了电源电压,要求控制精度就要高一些,否则很容易出问题
发表于 2012-8-7 22:42:32 | 显示全部楼层
对第一个问题不太了解。
对于第二个问题:第一种写状态转换和输出在一个模块里面,不易于修改和维护,但是使用时序逻辑输出,这样使输出端的信号稳定。第二种写法的优点是2段式状态机,易于阅读,修改,维护,缺点是输出使用的是组合逻辑,输出信号可能会出现毛刺。所以2种写法都不太好,应该多段式写FSM,对于输出应该使用寄存器
发表于 2012-8-8 18:00:59 | 显示全部楼层
我的答案和6楼一样~
发表于 2016-7-22 10:15:07 | 显示全部楼层
回复 1# vipjph

版主,能公布下标准答案吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-4-23 21:26 , Processed in 0.026448 second(s), 8 queries , Gzip On, Redis On.

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