搜索
bottom↓
回复: 33

always语句牛角尖

[复制链接]

出0入0汤圆

发表于 2013-10-14 11:05:48 | 显示全部楼层 |阅读模式
   always@(posedge clk)
         begin
                 块语句            //注意 假设这个块语句要执行10ms才能执行完
         end


如果在这个10ms之间又发了 clk的上升沿,那么 是继续执行块语句       还是重头再来?

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2013-10-14 11:16:40 | 显示全部楼层
瞬间完成,不可能10ms。
这不是单片机指令,不存在指令周期时间,只是内部逻辑门延时。

出0入0汤圆

发表于 2013-10-14 13:27:42 | 显示全部楼层
逻辑上好像没有这个情况的哦,并行处理一下就完了假如下面还有另外一个判断那就要等到下个时脉了。如:状态机

出0入8汤圆

发表于 2013-10-14 13:38:11 | 显示全部楼层
本帖最后由 kebaojun305 于 2013-10-14 13:40 编辑

2楼说的对    在一个楼主  如果出现你这种现象  那么你的电路设计绝对是错误的。 电路不可能正常工作。

出0入0汤圆

发表于 2013-10-14 17:10:53 | 显示全部楼层
楼主还没理解硬件描述语言,当成软件编程语言了

出0入0汤圆

发表于 2013-10-14 17:23:09 | 显示全部楼层
。。。。。。。。你让你的老师情何以堪。

出0入0汤圆

发表于 2013-10-14 18:27:01 | 显示全部楼层
楼主以前是做软件开发的吧。一定要在写verilog代码时想着它的硬件实现。这是硬件电路,不是软件开发。

出0入0汤圆

发表于 2013-10-14 18:35:23 | 显示全部楼层
BL 一笑而过

出0入0汤圆

发表于 2013-10-14 18:41:32 来自手机 | 显示全部楼层
组合逻辑从这头到那头应该用不了10ms

出20入186汤圆

发表于 2013-10-14 19:03:08 | 显示全部楼层
这是硬件电路,首先
另外,比如典型 的EPM240它的运行频率是<400MHZ,

出0入0汤圆

发表于 2013-10-14 19:22:14 | 显示全部楼层
我用VHDL也有过这样的疑惑....

出0入17汤圆

发表于 2013-10-14 19:25:11 | 显示全部楼层
问的很有道理,毫无疑问,逻辑会发生混乱。begin块内部是顺序执行的,和C程序一样。即便是硬件,也不可能瞬间完成,必须保证在下一个CLK来之前完成当前块。

出0入0汤圆

发表于 2013-10-14 20:16:39 | 显示全部楼层
10ms 啊? 你估计得用10 000 000个非门串起来才有10ms

出0入0汤圆

发表于 2013-10-14 22:35:31 | 显示全部楼层
如果有延时,也是组合逻辑的门延迟。ms级别是不可能,ns倒还有可能。如果这种情况,要么分割组合逻辑,增加pipeline,要么修改组合逻辑。数电是基础,编程只是工具。verilog不是C

出0入0汤圆

发表于 2013-10-14 22:37:12 | 显示全部楼层
DOER 发表于 2013-10-14 19:25
问的很有道理,毫无疑问,逻辑会发生混乱。begin块内部是顺序执行的,和C程序一样。即便是硬件,也不可能瞬 ...

‘begin块内部是顺序执行的’
呵呵

出0入0汤圆

发表于 2013-10-15 09:09:51 | 显示全部楼层
DOER 发表于 2013-10-14 19:25
问的很有道理,毫无疑问,逻辑会发生混乱。begin块内部是顺序执行的,和C程序一样。即便是硬件,也不可能瞬 ...

begin块内部是顺序执行的, 我猜只是在语法分析的时候这样理解

实际电路,几个同时的赋值,怎么可能会有顺序

出0入17汤圆

发表于 2013-10-15 09:43:59 | 显示全部楼层
wangjun403 发表于 2013-10-15 09:09
begin块内部是顺序执行的, 我猜只是在语法分析的时候这样理解

实际电路,几个同时的赋值,怎么可能会有 ...

你见过很长的begin块吗?
这个你可以实践下,写一个很长的begin块,然后将这个很长的begin块拆分为很多个小的begin块,运行在很高的CLK下比较。
begin块内部是串行执行的,就好像很多级门电路串在一起,时间总是需要的,楼主只是打个比方说是10ms。

出0入4汤圆

发表于 2013-10-15 09:52:31 | 显示全部楼层
fpga 看上去是编程 其实不是编程 生成的都是硬件 你的换换思路

出0入4汤圆

发表于 2013-10-15 09:54:08 | 显示全部楼层
DOER 发表于 2013-10-15 09:43
你见过很长的begin块吗?
这个你可以实践下,写一个很长的begin块,然后将这个很长的begin块拆分为很多个 ...

门级延时都是n秒级别的,如果真的出现这个问题 就是数字电路中 竞争 冒险的问题的。一遍设计工具可以优化这些问题的。

出0入17汤圆

发表于 2013-10-15 10:00:50 | 显示全部楼层
acmilannast 发表于 2013-10-15 09:54
门级延时都是n秒级别的,如果真的出现这个问题 就是数字电路中 竞争 冒险的问题的。一遍设计工具可以优化 ...

ns级的延迟已经很长了,200M的时钟也就5ns的周期,经得起延迟几次呢?

出0入0汤圆

发表于 2013-10-15 11:23:19 | 显示全部楼层
楼主描述的现象只是假设,实际情况就是竞争冒险,会出现亚稳态,综合工具给出的最大clk频率值是要保证满足时序约束的情况下的最大值。即便缩小假设延时值,实际应用中为满足时序或数据速率要求,多会进行多级流水,乒乓操作,串并传换等等。

出0入0汤圆

发表于 2013-10-15 11:26:00 | 显示全部楼层
一个硬件电路跑10ms,吓死人啊

出0入0汤圆

 楼主| 发表于 2013-10-15 11:49:01 | 显示全部楼层
DOER 发表于 2013-10-15 09:43
你见过很长的begin块吗?
这个你可以实践下,写一个很长的begin块,然后将这个很长的begin块拆分为很多个 ...

嗯  是的就是假设    那我不妨假设 200M时钟的clk      块语句门延迟时间要是大于5ns   是不是电路设计错误了就

出0入0汤圆

发表于 2013-10-15 11:51:39 | 显示全部楼层
HDL是硬件描述语言
切记,重点是描述两个字.一个电路,我用原理图是描述,我用HDL也是描述,两者是等同的.没有什么顺序执行的概念.

出0入17汤圆

发表于 2013-10-15 12:19:55 | 显示全部楼层
mokang0421 发表于 2013-10-15 11:49
嗯  是的就是假设    那我不妨假设 200M时钟的clk      块语句门延迟时间要是大于5ns   是不是电路设计错 ...

如果门电路串的太多,延迟有可能大于时钟周期。此时就要用流水线,延迟几个时钟后取出正确的结果。这种情况很常见,我们不可能要求逻辑电路翻转速度无限。

出0入4汤圆

发表于 2013-10-15 13:04:55 | 显示全部楼层
DOER 发表于 2013-10-15 10:00
ns级的延迟已经很长了,200M的时钟也就5ns的周期,经得起延迟几次呢?

回去好好看看 数字电路 竞争冒险。

出0入0汤圆

发表于 2013-10-15 15:05:19 | 显示全部楼层
路过,受教了

出0入0汤圆

发表于 2013-10-16 00:43:00 | 显示全部楼层
楼主不要心急去解决这个问题,也许现在很多人跟你说你都无法理解,你坚持学习下去,你自己就会得到答案的,记住Verilog HDL是硬件描述语言,多学点基础,多找些资料,也许你就有了答案

出0入0汤圆

发表于 2013-10-16 08:54:26 | 显示全部楼层
always块内的都是寄存器级别的电路,也就是一级二级寄存器的事情~

出0入0汤圆

发表于 2013-10-17 13:43:42 来自手机 | 显示全部楼层
这个情况时序分析报告可以看到问题,到时就改一下吧,比如加流水线。

出0入0汤圆

发表于 2013-10-18 09:23:16 | 显示全部楼层
DOER 发表于 2013-10-15 09:43
你见过很长的begin块吗?
这个你可以实践下,写一个很长的begin块,然后将这个很长的begin块拆分为很多个 ...

alway
begin
a <= b
c <= a
d <=c
end
如果是这样,那肯定是串行

alway
begin
a <= a1
b <= b1
c <=c1
end
如果是这样,还是串行,我死都不信

出0入0汤圆

发表于 2013-10-18 09:25:34 | 显示全部楼层
DOER 发表于 2013-10-15 12:19
如果门电路串的太多,延迟有可能大于时钟周期。此时就要用流水线,延迟几个时钟后取出正确的结果。这种情 ...

从逻辑上来说, 延迟和同时发生,以及串行没有相关性

同时发生的事件可以因为延迟的不同而导致先后的顺序,但这并不能说明他是串行的

出0入0汤圆

发表于 2013-10-22 12:00:05 | 显示全部楼层
还是在单片机里,没跳出来呢,呵呵!

出0入0汤圆

 楼主| 发表于 2013-11-7 11:16:00 | 显示全部楼层
thought224 发表于 2013-10-22 12:00
还是在单片机里,没跳出来呢,呵呵!

人总会有菜比的时候  呵呵
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 05:18

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表