Verilog赋值与执行方式

文章讲述了Verilog语言中赋值的不同方式,包括非阻塞赋值(<=)和阻塞赋值(=),以及它们在时序逻辑和组合逻辑中的应用。assign用于组合逻辑,always模块则根据是否包含时钟决定使用哪种赋值方式。wire类型代表连线型信号,reg表示寄存器型信号,且赋值有特定规则。执行方式上,阻塞赋值顺序执行,非阻塞赋值并行执行。
摘要由CSDN通过智能技术生成

赋值

赋值方式
  • 非阻塞赋值:<=
    时序逻辑一定用非阻塞赋值,比如:always 模块的敏感列表包含时钟。
  • 阻塞赋值:=
    组合逻辑一定使用阻塞赋值,比如:always 模块的敏感列表不包含时钟,或者 assign 模块
赋值语句
  • assign
    称为持续赋值语句,对应的信号犹如固化的逻辑门电路实时反映。
  • always
    称为过程赋值语句,对应的信号改变需要一定触发条件。
信号类型
  • 连线型(Net Type)
    定义为 wire,默认初始值为高阻态 ‘Z’
  • 寄存器型(Register Type)
    定义为 reg,默认初始值为不定态 ‘X’

声明为input output的参数都默认为 wire 类型,TestBench 必须使用 wire 类型作为输出。

赋值规则

assign 定义的组合逻辑只能对 wire 类型赋值,而且必须是阻塞赋值;always、initial 定义的逻辑只能对 reg 类型赋值。
always 模块中使用相同的赋值方式;同一变量不要在不同的 always 语句赋值。

执行方式

Verilog 的语句执行分为并行执行和顺序执行,执行方式取决于模块语句的赋值方式。
阻塞赋值的语句为顺序执行,非阻塞赋值的语句为并行执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怦然心动如往昔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值