在Verilog(Xilinx)中移动2d阵列

时间:2015-07-23 21:38:15

标签: arrays vector verilog

参考:Shifting 2D array Verilog

我的问题很相似。我有一个由8个元素组成的向量数组,每个元素有7位。所以我宣布了

wire [6 : 0][0 : 7] out_wire;    
reg [6 : 0] [0 : 7] disp_data ;
reg [6 : 0]  out_disp;     // Output register

现在我想要移动每个向量,就像这样

disp_data = { out_wire[1 : 6],  out_wire[0] } ;

并在某种情况下将out_disp分配给此

out_disp = disp_data[0] ; Or disp_data[1] etc 

我正在使用Xilinx ISE 14.7。但每当我尝试合成时,都会给出foll错误:

expecting 'IDENTIFIER', found '['
unexpected token: '['

我想我已经按照上面参考链接中的步骤进行操作了。我也参考了参考手册。但没用。我正在使用Verilog 2001.如果我错过了一些非常基本的东西,请道歉。

此处的相关代码:

always @ (posedge tick_stable, posedge tick_shift)
begin
if (tick_shift)
begin
    disp_data = { out_reg[1 : 6],  out_reg[0] } ;
end 

else 
begin
    case (sel_reg)
    0 : 
    begin
        out_disp = disp_data[0] ;
        enable_reg = en_z ;
    end

    1 :
    begin
        out_disp = disp_data[1] ;
        enable_reg = en_f ;
    end

    2 : 
    begin
        out_disp = disp_data[2] ;
        enable_reg = en_s ;
    end

    3 :
    begin
        out_disp = disp_data[3] ;
        enable_reg = en_t ;
    end

    default
    begin
        out_disp = 7'b1110111 ;
        enable_reg = 4'b0000 ;
    end
    endcase
  end
end

0 个答案:

没有答案