推荐答案
测试一下
题目
reg[255:0] mem[7:0]正确的赋值是
A mem[5]==3' d0;
B mem[10]=8' d1;
C mem=0;
D mem[5][3:0]=4' d1;
参考答案与知识点
参考答案
正确答案是D。reg[255:0] mem[7:0]定义了一个包含8个元素的数组,每个元素是256位宽的寄存器。选项A中使用了双等号“==”,这是比较运算符而非赋值运算符,因此不符合要求。选项B中的索引10超出了数组范围(有效索引0~7),属于越界访问,错误。选项C试图将整数0直接赋给整个数组,但在Verilog中不允许对一维数组进行整体赋值(需要逐元素或使用循环),因此不合法。选项D中mem[5][3:0]表示取数组第5个元素(256位寄存器)的低4位(位3~0),然后赋值4位数据4'd1,这是合法的位选赋值操作。因此D正确。
涉及知识点
- 多维数组声明与索引范围
- 位选与部分位赋值
- 赋值与比较运算符区别
- 数组整体赋值限制
- 数组越界错误