2015-11-08 2 views
0

У меня есть программа с входами и выходами, обозначенных следующим образом:Ошибка Verilog: значение не является константой?

module RegBlock(
    input [31:0] WriteRegData, 
    input [4:0] rs, rt, WriteRegIn, 
    output [31:0] op1, rtData 
    ); 

    reg [31:0] op1, rtData, data [0:31]; 

'данные [0:31] является массивом, который объявлен после этого, и после заявлений я попытался назначить выходы, следует:

assign op1 = data[rs]; 
    assign rtData = data[rt]; 
    assign data[WriteRegIn] = WriteRegData; 

Я продолжаю получать сообщение об ошибке «WriteRegData» не является константой. Поскольку он просто объявлен как ввод в начале программы, я не уверен, в чем проблема. Я использую Xilinx ISE.

ответ

0

При использовании непрерывного назначения, как:

assign data[WriteRegIn] = WriteRegData; 

вы не можете изменить индекс на левой руке на стороне. Возможно, вы захотите использовать процедурное назначение внутри всегда процесса для достижения того, чего вы хотите:

always @(*) 
    data[WriteRegIn] = WriteRegData; 
Смежные вопросы