Verilog开发中“=”和“<=”的区别
来源:互联网 发布:产品跟踪软件 编辑:程序博客网 时间:2024/05/18 14:23
非阻塞(Non_Blocking)赋值方式( 如 b <= a; ), 块结束后才完成赋值操作,值并不是立刻就改变的, 这是一种比较常用的赋值方法。(特别在编写可综合模块时)。
阻塞(Blocking)赋值方式( 如 b = a; ), 赋值语句执行完后,块才结束,值在赋值语句执行完后立刻就改变的, 可能会产生意想不到的结果。
见西安企云基创软件
一般情况下组合逻辑使用=赋值,时序逻辑使用<=赋值。
举个例子:初始化m=1,n=2,p=3;分别执行以下语句
1、begin
2、begin
结果分别是:1、m=2,n=3,p=2;(在给p赋值时m=2已经生效)
这两种赋值“=”用于阻塞式赋值;“<=”用于非阻塞式赋值中。
阻塞赋值:阻塞赋值语句是在这句之后所有语句执行之前执行的,即后边的语句必须在这句执行完毕才能执行,所以称为阻塞,实际上就是顺序执行。
非阻塞赋值:非阻塞赋值就是与后边相关语句同时执行,即就是并行执行。
所以一般时序电路使用非阻塞赋值,assign语句一般使用=阻塞赋值;
组合逻辑电路使用阻塞赋值。
在使用阻塞赋值和非阻塞赋值时的八大原则:
1)时序电路建模时,采用非阻塞赋值;
2)锁存器电路建模时,采用非阻塞赋值;
3)用always块建立组合逻辑模型时,采用阻塞赋值;
4)用always块建立时序和组合逻辑混合电路时,采用非阻塞赋值;
5)不要在同一个always块中同时使用非阻塞赋值和阻塞赋值;
6)不要在一个以上的always块中为同一个变量赋值;
7)用$strobe系统任务来显示用非阻塞赋值的变量值;
8)在赋值时,不要用#0延迟;
阅读全文
0 0
- Verilog开发中“=”和“<=”的区别
- Verilog中“=”和“<=”的区别
- verilog中task和function的区别
- Verilog中parameter和define的区别
- Verilog中parameter和define的区别
- Verilog中parameter和define的区别
- Verilog中parameter和define的区别
- Verilog中Wire 和 Reg 的区别
- Verilog中wire和reg的区别
- verilog中用“<= “ 和 “=”赋值的区别
- verilog中reg和wire类型的区别和用法
- VHDL和Verilog的区别
- VHDL和Verilog的区别
- system verilog中module和program的区别
- Verilog中wire和reg数据类型的区别
- Verilog中if-else和case的区别
- verilog HDL中wire和reg的区别
- verilog中阻塞赋值和非阻塞赋值的区别
- 如何创建不可变(Immutable)的Java类或对象
- 网络设备之集线器
- 安徽省淮北市谷歌卫星地图下载
- Window下安装RabbitMQ
- rabbitMQ第三篇:采用不同的交换机规则
- Verilog开发中“=”和“<=”的区别
- python基础数据类型四
- 开源大数据周刊-第76期
- Extjs-Grid前添加选项框以及多选方式。
- 今日,冬至
- Qt之setCodecForLocale
- django-rest-framework序列化的使用(一)
- Django(三)模型与数据库
- Python 异常错误记录