← 华为硬件(逻辑)岗(19.09.04)

推荐答案 测试一下

下列定义不正确的是( )。

问答题 中等 笔试真题问答题

参考答案

正确答案是 D。在 Verilog 中,端口方向与数据类型有明确的组合规则。input 端口默认是 wire 类型,且不允许显式声明为 reg,因为 input 端口只能由外部驱动,内部不能对其进行过程赋值(如 always 块中的赋值)。output 端口可以声明为 reg(适用于时序逻辑)或 wire(适用于组合逻辑)。inout 端口必须为 wire 类型。选项 A 定义了一个 8 位 wire 型变量,正确;选项 B 定义了一个 8 位 reg 型变量,可作为内部寄存器使用,通常用于 always 块中赋值,正确;选项 C 定义了一个 8 位 input 端口,省略了数据类型声明,默认是 wire,正确;选项 D 试图将一个 input 端口声明为 reg,这在 Verilog 中是语法错误,因为 input 端口只能由外部信号驱动,而 reg 类型要求内部赋值,矛盾。因此 D 不正确。注意:在 SystemVerilog 中,端口可以使用 logic 类型,logic 可以同时表示 reg 和 wire,但 input logic 仍然不允许被内部赋值,且 input logic 等价于 input wire,但 input reg 仍然是错误的。这一考点常出现在 Verilog 基础笔试中,易错点在于混淆 reg 与 wire 的适用场景,以及忽略端口方向对数据类型的限制。

涉及知识点

  • Verilog端口方向与数据类型规则
  • reg 和 wire 的区别与使用限制
  • input 端口不能声明为 reg
  • 常见语法错误识别
← 上一题
登录后反馈错题
下一题 →