搜索
bottom↓
回复: 15

always@下面begin... end 里面不一定是顺序执行吧 ?

[复制链接]

出0入0汤圆

发表于 2018-1-22 15:19:33 | 显示全部楼层 |阅读模式
本帖最后由 atom100 于 2018-1-22 15:31 编辑

看到一个资料,
说        begin.........end
是一个顺序语句块,
然后always@(触发条件)
             begin
                ........
        end
在 非阻塞条件下,begin  end里的语句一定不是顺序执行吧 ?
如果这种 begin  end内的语句不是顺序执行,为何 又将begin  end  统称未顺序语句块 ?

出0入0汤圆

发表于 2018-1-22 15:45:19 | 显示全部楼层
这是阻塞赋值条件下相对fork……join而言。
阻塞赋值条件下,begin……end是顺序执行,所以叫顺序语句块;
fork……join是并行执行,所以叫并行语句块。

出0入0汤圆

发表于 2018-1-22 15:53:49 | 显示全部楼层
Verilog标准规定,begin - end之间的表达式是按照书写顺序求值的。

出0入0汤圆

发表于 2018-1-22 17:38:02 | 显示全部楼层
我的理解是在:always@(触发条件)
             begin
                ........
        end
的非阻塞语句中,分前半段和后半段。在前半段是顺序执行的,后半段里面也是顺序执行的。
望高手纠正。。。。

出0入0汤圆

发表于 2018-1-23 21:47:40 | 显示全部楼层
切记:HDL是“硬件描述语言”, 不是程序, 没有执行的概念
HDL与电路图等效的。你能说“电路图”能执行么。

出0入91汤圆

发表于 2018-1-23 22:46:08 | 显示全部楼层
楼主  VERILOG 分可综合和不可综合之分。  可综合得代码生成到FPGA里 就是生成一个电路图, 电路图在同一个时钟得驱动下, 在不考虑信号线长短等问题时 你说是顺序执行还是并行执行

出0入0汤圆

发表于 2018-1-26 10:09:30 | 显示全部楼层
roasn 发表于 2018-1-22 15:45
这是阻塞赋值条件下相对fork……join而言。
阻塞赋值条件下,begin……end是顺序执行,所以叫顺序语句块;
...

这么理解好理解一点,也可以想成always下begin..end是(),执行顺序看是阻塞语句还是非阻塞语句

出0入0汤圆

发表于 2018-1-27 22:32:21 | 显示全部楼层
就是个()具体看里面写了啥不能一概而论

出0入0汤圆

 楼主| 发表于 2018-2-2 14:45:27 | 显示全部楼层
本帖最后由 atom100 于 2018-2-2 14:48 编辑
ackyee 发表于 2018-1-23 22:46
楼主  VERILOG 分可综合和不可综合之分。  可综合得代码生成到FPGA里 就是生成一个电路图, 电路图在同一个 ...


begin  。。。end之间的 代码
如果被理解为并行执行的 电路,   是可以用门电路搭建出一个电路与该代码对应的,
如果被理解为串行执行的 电路,也是可以用门电路搭建出一个电路与该代码对应的,这个没问题吧?

假如代码的赋值方式是非阻塞赋值的情况下, 被一个人(而不是综合器) 错误的理解为串行执行的,那也可以搭出一个对应的串行电路吧?
不太明确的地方是:为何verilog,在非阻塞的情况下,要用begin。。。end (教科书中已经写明了 之间的是顺序执行的)类型的代码来表示一个并行的电路 ?

出0入91汤圆

发表于 2018-2-2 14:59:51 | 显示全部楼层
atom100 发表于 2018-2-2 14:45
begin  。。。end之间的 代码
如果被理解为并行执行的 电路,   是可以用门电路搭建出一个电路与该代码 ...

楼上有个人说的很对,在用VERILOG写FPGA代码的时候,你就直接当begin end 是()  实际使用的时候 确实只要当它是括号就行了。 你现在看到的很多VERILOG都是刚进入中国时候 几个学者写的,那个时候 甚至他们连FPGA都没怎么摸过吧 然后几个少数的教材就被慢慢当作经典教材然后  新教材又不断的参考老教材。


其实很好理解呀,   楼主有用过74hc164么   还有74hc595    这两颗都是 串转并的转换芯片, 一个带锁存器  一个不带锁存器。     其实阻塞赋值和非阻塞赋值就可以当作 带锁存跟不带锁存的区别。  带锁存并且锁存由时钟驱动, 和不带锁存进来信号直接输出  就这么简单

出0入0汤圆

 楼主| 发表于 2018-2-2 15:36:16 | 显示全部楼层
英文 原版 里 begin。。。end 之间的代码也被 写成是串行了吗 ?

出0入0汤圆

发表于 2018-2-2 21:28:36 | 显示全部楼层
一般来说,begin...end之间的代码描述了一个D触发器。阻塞/非阻塞并不是并行/串行的意思。
简单的说,非阻塞逻辑,取的值来自D触发器的输入侧,是纯粹的组合逻辑。
阻塞逻辑,取的值来自D触发器的输出端。是时序逻辑。

出10入0汤圆

发表于 2018-2-2 22:45:57 来自手机 | 显示全部楼层
putty 与ackyee 我觉得说的都挺好的

出0入0汤圆

发表于 2018-2-5 08:13:10 | 显示全部楼层
解释清楚了,就是要看内部的语句。

出0入0汤圆

 楼主| 发表于 2018-2-6 17:16:51 | 显示全部楼层
受教了

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-4-19 11:43

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

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