早安不安 2022-06-14 13:23 采纳率: 50%
浏览 87
已结题

Verilog中通过指令索引

问题遇到的现象和发生背景

Verilog使用变量索引

问题相关代码
`timescale 1ns / 1ps
module testbench(
input [15:0]Opcode,
output reg[15:0] rt,
output reg[15:0] psw
    );
reg [3:0] order;
reg [15:0] str_1[15:0];
reg [15:0] str_2[15:0];
reg [15:0] td[15:0];
integer curr[2:0];
 alu test (
 .Opcode(Opcode[15:12]), 
 .alu_src1(str_1[curr[2]]), 
 .alu_src2(str_2[curr[1]]), 
 .PSW(PSW),
 .td(td[curr[0]])
 );

 // Initialize Inputs

 always@(*)
 begin
    curr[2] = Opcode[11:8];
    curr[1] = Opcode[7:4];
    curr[0] = Opcode[3:0];
    str_1[(curr[1])] = $random;
    str_2[(curr[0])] = $random;
    td[(curr[2])] = $random;
    end
 // Wait 100 ns for global reset to finish

endmodule
运行结果及报错内容

[VRFC 10-2951] 'curr' is not a constant

我的解答思路和尝试过的方法

我希望通过指令中的地址进行索引,但由于没学过该语言,当C来写 的……
显示我的索引非常量,不知道如何需求

我想要达到的结果

通过Opcode[11:0]中每4位产生一个索引值(地址)索引rt,str_1和str_2三个寄存器的租号

  • 写回答

1条回答 默认 最新

  • 树下等苹果 2022-06-15 16:13
    关注

    你的curr是一个integer型,它的位宽与你的系统有关,32bit或者64bit,应该不能声明为一个3bit的变量吧,integer型变量也不能作为位向量来访问,也就是不能使用curr[0]、curr[1:3]....等,仅供参考

    integer curr[2:0];
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月21日
  • 修改了问题 6月14日
  • 赞助了问题酬金5元 6月14日
  • 创建了问题 6月14日

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog