verilog 过程性赋值 连续赋值 连续过程性赋值
来源:互联网 发布:centos 7免密码 编辑:程序博客网 时间:2024/04/30 20:29
连续赋值:
1)语法上,有关键词“assign”来标识;
2)左侧被赋值的数据类型必须是线网型数据(wire);
3)连续赋值语句不能出现在过程快中(initial/always);
4)连续赋值语句主要用来对组合逻辑进行建模以及线网数据间进行描述;
5)连续赋值语句产生作用后,赋值表达式中信号的任何变化都将立即被反映到赋值线网型数据的取值上;
过程赋值:
1)语法上,没有关键词“assign”;
2)左侧被赋值的数据类型必须是寄存器类型的变量(reg);
3)过程性连续赋值语句只能出现在过程块中;
4)过程性连续赋值语句主要用来对时序逻辑电路进行行为描述;
5)在过程赋值语句的情况下,只有在过程赋值语句被执行时才执行赋值操作,语句执行完后被赋值变量的取值不再受到赋值表达式的影响;
过程性连续赋值语句:
在verilog HDL中,有两组过程性连续赋值语句可以实现连续赋值:assign-deassign,只能用于对寄存器型变量的连续赋值操作,而不能用来对线网型数据进行连续赋值操作;force-release,它不仅能对寄存器型变量产生作用,也对线网型数据产生作用。force语句的优先级高于assign 。
deassign 撤销对某一个寄存器型变量的连续赋值后,该寄存器变量仍然保持deassign操作之前的取值。
过程性连续赋值语句比普通的过程赋值语句有更高的优先级。
举例:异步清零的D触发器;
module dff_asyn_clear(clk,clr,d,q);
input clk,clr;
input d;
output q;
reg q;
always@(clr) //用于实现异步清零的always块,强制清零,过程性连续赋值语句的优先级高于过程赋值语句
begin
if(!clr)
assign q =0 ;
else
deassign q;
end
always@(posedge clk) //用于实现D触发器正常工作的always块
begin
q = d;
end
endmodule
0 0
- verilog 过程性赋值 连续赋值 连续过程性赋值
- Verilog 连续赋值、过程赋值、过程性连续赋值
- verilog过程块与赋值
- 赋值过程
- assign连续赋值
- JS:连续赋值运算
- Javascript 连续赋值运算
- js连续赋值运算
- JavaScript中的连续赋值
- Verilog学习笔记(三)--连续赋值语句
- FPGA笔记 连续赋值,阻塞赋值,非阻塞赋值
- javaScript中连续赋值运算
- C/C++中的连续赋值
- JS 连续等号赋值问题
- javascript面试坑连续赋值
- JavaScript连续赋值的思考
- mysql存储过程 赋值
- Python 变量赋值过程
- Day01 Java语言基础
- 针对苹果最新审核要求为应用兼容IPv6
- Luogu P3172 [CQOI2015]选数
- Android实现QQ换头像的对话框
- WM_MOUSEWHEEL消息
- verilog 过程性赋值 连续赋值 连续过程性赋值
- 学习日志第13篇
- JavaScript ES6中的var、let、const
- RxAndroid之初体验——Create、From、interval、just、range操作符的基本使用
- Atitit.eclise的ide特性-------abt 编译
- WM_MOUSEMOVE消息
- IOS IPV6支持
- cuda生成汉宁窗代码
- Jaxb2 转换XML文档