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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 13123|回复: 23

写VHDL程序时想到的一个问题,请指教,if (clk'event and clk=0)

[复制链接]
发表于 2009-5-17 03:21:46 | 显示全部楼层 |阅读模式

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

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

x
最近在写VHDL程序,其中有一部分是用FPGA控制DAC

if (clk'event and clk=0)
.......
.......
end if

在下降沿来的时候,开始执行里面的语句。

我的问题是:if 里面的语句是在下降沿来了之后开始执行,如果if里面的语句很多,多到在下个上升沿来的时候还没执行完,会出现什么状况呢?

我不明白在下降沿来了之后(即:clk'event and clk=0),里面的语句是不是一定在半个时钟周期内执行完?

或是:clk'event and clk=0  只起到一个激发语句执行的作用?无论里面的语句执行多长时间都可以?

请大家指教。

谢谢
发表于 2009-5-17 08:29:58 | 显示全部楼层
楼主这是杞人忧天啊....不会出现楼主说的那样的情况的..在进程内,多条语句并行执行,
 楼主| 发表于 2009-5-17 11:06:53 | 显示全部楼层

那么可以无限多的语句吗?

里面有很多process进程等,process里是顺序执行的。我只想明白 下降沿 的作用,是不是程序必须在下个上升沿来之前执行完?或是无所谓,下降沿来了就开始执行,直到执行完为止,不管上升沿是不是来了?
发表于 2009-5-17 13:12:53 | 显示全部楼层
下降沿来了就执行,很快的,应该没有楼主想得那么漫长...可以看下仿真波形图就知道了...
 楼主| 发表于 2009-5-18 00:52:27 | 显示全部楼层

呵呵,我只想知道我说的那种情况发生后会怎么样?

因为我要做一个傅里叶变换在process里,有modulation 和 demodulation.
 楼主| 发表于 2009-5-22 08:06:10 | 显示全部楼层

谢谢

还有人解释吗,呵呵
发表于 2009-5-22 09:39:09 | 显示全部楼层
有时钟是顺序执行的,但不会什么无止境的执行,只可能有延迟的吧
发表于 2009-5-22 10:58:09 | 显示全部楼层


原帖由 Paul_Lee 于 2009-5-17 11:06 发表
里面有很多process进程等,process里是顺序执行的。我只想明白 下降沿 的作用,是不是程序必须在下个上升沿来之前执行完?或是无所谓,下降沿来了就开始执行,直到执行完为止,不管上升沿是不是来了?



如果你在写代码的时候想的是硬件,就不会有这个疑惑了,实际上就是时钟在驱动很多的触发器完成一个操作,所以就不会有完不成一说(如果真有就是你的设计放到fpga里面,要用更大的FPGA),也不回有上升沿来不来的问题的。如果说你的组合逻辑在一个时钟周期内完成不了,那么你需要进行优化你的组合逻辑,或者约束成多周期。
发表于 2009-5-22 14:53:15 | 显示全部楼层
建议你去看看verilog的相关语法解释标准。

其实多数仿真软件在一个时钟点上是分4个delta时间的,每个detal时间内会执行某些特定的操作或运算。执行完后,时间才往上加。
发表于 2009-5-22 15:55:09 | 显示全部楼层
如果你的设计中的某些部分的输入,来自于你的设计中的其它部分的输出,那么就有可能存在时间问题。。。。。。
此时要考虑使用逻辑拆分及流水线方式。。。。。。
除此之外,没有时间问题,因为所有的代码(只要没有上面所说的前后级的关联)都是并行实现的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-23 07:20 , Processed in 0.028238 second(s), 9 queries , Gzip On, Redis On.

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