Verilog基础语法(9)之assign语句

赋值语法

赋值语法以关键字assign开头,后面是信号名,可以是单个信号,也可以是不同信号网的连接。驱动强度和延迟是可选的,主要用于数据流建模,而不是综合到实际硬件中。右侧的表达式或信号被分配给左侧的网或网的表达式。

语法结构如下:

assign <net_expression> = [drive_strength] [delay] <expression of different signals or constant value>

延迟值对于指定门的延迟很有用,并用于模拟实际硬件中的时序行为,因为该值决定了何时应该用评估值分配网。

使用 assign 语句时, 需要遵循一些规则:

  • LHS(左值) 应该始终是wire类型的标量或向量网络, 或者标量或矢量网络的串联, 而绝对不能是reg类型的标量或矢量寄存器。
  • RHS 可以包含标量或向量寄存器以及函数调用。
  • 只要 RHS 上的任何操作数的值发生变化, LHS 就会使用新值进行更新。
  • assign 语句也称为连续赋值, 并且始终处于活动状态
    在这里插入图片描述
    综合后的RTL图:
    在这里插入图片描述

reg类型变量赋值

reg类型的变量不能使用assign进行连续赋值,这是因为reg类型的变量可以存储数据,并且不需要连续驱动。我们只能在initial以及always块内对reg类型变量进行赋值。

隐性连续赋值

当使用assign给wire类型的网络赋值时,称为显示连续赋值,如果在定义的时候就对其连续赋值,称为隐形连续赋值,隐形连续赋值在Verilog中是被允许的。


wire [1:0] a;
assign a = x & y;       // Explicit assignment
 
wire [1:0] a = x & y;   // Implicit assignment

组合逻辑设计

assign语句常用于组合逻辑设计,如下的电路图:

在这里插入图片描述

module combo (  input   a, b, c, d,
                output  o);
 
  assign o = ~((a & b) | (c ^ d));
 
endmodule

在这里插入图片描述

  • 4
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在Verilog中,assign语句用于将一个逻辑表达式的结果赋值给一个输出信号。它可以用于组合逻辑电路的实现。在引用\[1\]中的例子中,assign语句被用来实现半加器的逻辑功能,其中sum和cout是通过逻辑运算符^和&来计算的。在引用\[2\]中的例子中,assign语句被用来实现组合逻辑电路的功能,其中o是通过逻辑运算符~、&和^来计算的。在引用\[3\]中的例子中,assign语句被用来将寄存器变量和输入信号量的组合逻辑结果赋值给输出信号量oSI和oCP。总的来说,assign函数在Verilog中用于将逻辑表达式的结果赋值给输出信号。 #### 引用[.reference_title] - *1* *2* [Verilog初级教程(8)Verilog中的assign语句](https://blog.csdn.net/Reborn_Lee/article/details/106985139)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [CPLD/FPGA/Verilog_Verilog指令_assign用法](https://blog.csdn.net/weixin_34132768/article/details/85548818)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值