全站数据
8 4 2 0 5 8 1

verilog中有哪几种类型的赋值语句,说明它们的区别,并举例

数学教师周 | 简单学习,快乐成才!         
问题更新日期:2024-10-16 23:59:23

问题描述

verilog中有哪几种类型的赋值语句,说明它们的区别,并举例急求答案,帮忙回答下
精选答案
最佳答案

在Verilog中有两种类型的赋值语句 连续赋值和过程赋值 赋值表达式由三个部分组成 左 值赋值运算符=或<= 和右值右值可以是任何类型的数据包括net型和register型但对连续 赋值 左值必须是net类型的数据 而过程赋值 左值必须是register类型的数据 下面将作详细描 述 1连续赋值 在initial或always外的assign赋值语句 称为连续赋值语句 一般在描述纯组合电路时使用 例 如 wire out //类型定义左值必须是net类型包括wire tri wand wor等等 assign out = a + b //综合结果为加法器 assign out = en a : b //多路选择器 assign out = en in : Z //三态门 也可以在数据定义时同时进行连续赋值如 wire out = a + b 使用连续赋值语句 所有右值都是敏感信号 当右值发生变化时 计算表达式的值 并将结 果传给左值具有组合电路的特性输入变化输出立即变化 2过程赋值 在initial或always块中的赋值语句 称为过程赋值语句 包括三种 Blocking赋值 Non-blocking赋值和过程连续赋值assign/deassign Blocking赋值与顺序相关的而Non-blocking赋值与顺序无关一般来说使用Non-blocking赋 值描述时序逻辑电路使用Blocking赋值语句描述组合逻辑电路例如 reg X,Y,Z; //Non-blocking assignment always @(posedge Clk) begin X <= A && B; Y <= X; Z <= Y; end reg X,Y,Z; //Blocking assignment always @(posedge Clk) begin X = A && B; Y = X; Z = Y; end在Verilog中有两种类型的赋值语句 连续赋值和过程赋值 赋值表达式由三个部分组成 左 值赋值运算符=或<= 和右值右值可以是任何类型的数据包括net型和register型但对连续 赋值 左值必须是net类型的数据 而过程赋值 左值必须是register类型的数据 下面将作详细描 述 1连续赋值 在initial或always外的assign赋值语句 称为连续赋值语句 一般在描述纯组合电路时使用 例 如 wire out //类型定义左值必须是net类型包括wire tri wand wor等等 assign out = a + b //综合结果为加法器 assign out = en a : b //多路选择器 assign out = en in : Z //三态门 也可以在数据定义时同时进行连续赋值如 wire out = a + b 使用连续赋值语句 所有右值都是敏感信号 当右值发生变化时 计算表达式的值 并将结 果传给左值具有组合电路的特性输入变化输出立即变化 2过程赋值 在initial或always块中的赋值语句 称为过程赋值语句 包括三种 Blocking赋值 Non-blocking赋值和过程连续赋值assign/deassign Blocking赋值与顺序相关的而Non-blocking赋值与顺序无关一般来说使用Non-blocking赋 值描述时序逻辑电路使用Blocking赋值语句描述组合逻辑电路例如 reg X,Y,Z; //Non-blocking assignment always @(posedge Clk) begin X <= A && B; Y <= X; Z <= Y; end reg X,Y,Z; //Blocking assignment always @(posedge Clk) begin X = A && B; Y = X; Z = Y; end