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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2808|回复: 4

[讨论] 当ALWAYS超个两个边沿

[复制链接]
发表于 2011-5-16 22:07:44 | 显示全部楼层 |阅读模式

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

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

x
诸如always @(posedge ck or posedge rst or posedge another_edge)
if(rst)
q<=x'h0;
else if(another_edge)
q<=Y; //or anything else
else
q<=d;
我知道以上代码是可以综合的,但有人说最好不要在同一个ALWAYS模块里出现超个两个以上的沿。但我觉得一般DFF都有一个复位端,一个置位端,这样写不会造成什么问题。
发表于 2011-5-17 07:46:48 | 显示全部楼层
“但我觉得一般DFF都有一个复位端,一个置位端,”,关键问题在这里。实际上,不是所有厂家的工艺库里的DFF都有复位端和置位端的。如果有OK,如果没有呢?
设计中的一个原则是要保证,设计的代码方便移植和应用。我的意思到不是否认你这种写法一定有错,如果确定所采用的工艺的DFF是这样的,那倒是会更节约资源。

实际上,从你这段代码来看。置位端绝大多数DFF是没有的,你看数字电子方面的书,里面的标准DFF,连复位都没有。这都是工艺库研发厂商加上去的。置位基本上没有的。FPGA里面倒是经常会有。ASIC少见。
发表于 2011-5-17 11:05:05 | 显示全部楼层
回复 2# acgoal


    补充两句
1.你的代码可能导致仿真与综合结果的不一致
2.你写无穷个沿都可以,别人教你不要写多个沿和可不可综合没什么关系
发表于 2011-5-17 20:10:39 | 显示全部楼层
你的代码可以认为rst和another_edge是异步set/reset信号吧?
设想一下这样的情况:
rst先来了个上升沿,然后another_edge来了个上升沿,然后rst变成0了。
按你的代码,这时寄存器仍保持0值,等下一个clk来了就会变成Y值。
结果,你的another_edge信号对寄存器的控制事实上处于一种不伦不类的状态:
有时是同步的,有时是异步的。
发表于 2011-5-20 21:18:19 | 显示全部楼层
Thank you very much.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

X

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

GMT+8, 2025-6-30 03:45 , Processed in 0.017612 second(s), 9 queries , Gzip On, MemCached On.

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