Menu Close

Verilog 问号语句

在Verilog选择分支语句中有三种基本结构,分别是:if语句,case语句以及问号?语句。

  • 前两种只能用在顺序过程语句中;而?语句可以在并发赋值表达式中使用,也可以在顺序语句中使用
  • ?语句在顺序语句中只能对reg型变量(寄存器)赋值
  • ?语句在并发语句中只能对wire型变量赋值

因此,虽然if语句,case语句和问号?语句都是分支选择语句,但是它们的用法还是有很大的差别的。

 

1.问号语句的特点:

  • 用于判断的表达式可以是关系表达式,等式表达式,逻辑表达式,wire型变量,reg型变量等。
  • 在并发语句中,只能对wire型变量赋值,
  • 在always引导的顺序过程中使用,只能对reg型变量赋值

例1:


在例1中问号表达式在并发赋值语句中使用。而例2问号表达式在顺序过程的赋值语句中使用。

 

例2:


 

  • 问号语句可以嵌套,即在一个问号语句的分支中可以嵌套另一个问号分支语句。

例3:


 

  1. 问号表达式是惟一的三元表达式。

如:c =  sel ? a : b;

 

2. 三种分支选择语句的比较:

并发语句 顺序语句 优先级 判断条件传递x 可嵌套 可综合
if else 否 是 有 否 是 是
case 否 是 没有 否 是 是
? 是 是 有 是 是 是

 

对应视频:

Posted in FPGA, FPGA 教材教案, Verilog