浅谈自己对Verilog中阻塞赋值与非阻塞赋值

Verilog之阻塞赋值

阻塞赋值与非阻塞赋值是Verilog语法中的赋值语句,理解起来并不难!换个思维,我们不能用以前编写C语言或者其他高级计算机语言的思维来理解Verilog中的代码。
亲们,想想吧,Verilog是硬件描述语言,不是程序哦!写出来的语句我们可以称之为代码,而不是程序,思维要转变过来哟😜
像用来编写控制单片机的C语言程序是顺序执行的,因为利用的是CPU取指,译码,执行等一条条命令控制完成,这典型的按顺序去完成任务。
而FPGA不一样,用Verilog语言编写好可以生成电路,电路啥概念,亲们,是不是一上电,每个模块是不是都进行工作呀,可以理解为并行处理的风格,所以Verilog硬件语言采用的就是“并行”,这里只是简单讲讲,感兴趣同学可以百度搜搜什么是FPGA以及开发流程。

重点来了,阻塞赋值?什么鬼?👻
像assign a = b,有“=”就是代表阻塞赋值,概念就是该语句执行时,其下面的代码管你是天王老子都不能被执行😂(调皮了),要等该语句执行完才接着执行下面的语句,就是如此🐮!是不是有点顺序执行那味了哈哈,我们可以假装是顺序执行,我创的词叫伪顺序执行!

听我描述大家肯定也不懂,所以我不讲了😜
上图↓

正常情况下(assign驱动)阻塞赋值
always中的阻塞赋值
always中阻塞赋值波形图

上图波形图绘制不标准,供参考!由于画功实在缺乏,改天报个儿童美术班。。。

我一般是结合语言描述出来的电路以及仿真波形图来理解阻塞和非阻塞,我会想这个语句会生成啥样的电路,如果单纯assign驱动的,那就是一根线连的信号,或者其他的组合逻辑。有always描述的,带边缘触发的,那就是会生成触发器,输出数据Q端会滞后输入D端一个时钟周期!!!

哈哈
睡了,晚安😘

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值