← 2022 · 华为 笔试

推荐答案 测试一下

在Verilog HDL中,定义变量并进行运算如下:

A 0x7 C 0x3 D 0x5
单选题 中等 笔试真题单选

参考答案

正确选项为 D 0x5。 解析:首先明确变量定义:wire [5:0] mem0, mem1, mem2; wire [2:0] data_out。赋值语句:assign mem0 = 0x29; assign mem1 = 0x1B; assign mem2 = 0x34; 注意原题中 "mem0" 应为 "mem0"。各变量的二进制值(6位):0x29 = 6'b101001;0x1B = 6'b011011;0x34 = 6'b110100。位选结果:mem0[5:3] 取位5、4、3,对应 1、0、1,组成 3'b101 = 5;mem1[4:2] 取位4、3、2,对应 1、1、0,组成 3'b110 = 6;mem2[3:1] 取位3、2、1,对应 0、1、0,组成 3'b010 = 2。三数相加:5 + 6 + 2 = 13,即 4'b1101。由于 data_out 定义为 wire [2:0],宽度为3位,赋值时自动截断高位,保留低3位,得到 3'b101 = 5,十六进制表示为 0x5。注意:原题中 "assign data _out - mem0..." 存在笔误,应为 "assign data_out = ..."。易错点:直接计算得13(0xD)而忽略截断,误选B。

涉及知识点

  • Verilog 位选操作
  • 进制转换与二进制表示
  • 赋值时的宽度匹配与截断
  • 加法运算结果溢出处理
  • wire 类型的赋值
← 上一题
登录后反馈错题
下一题 →