Один регистр описал так:
module shift (C, SI, PO);
input C,SI;
output [15:0] PO;
reg [15:0] tmp;
always @(posedge C)
begin
tmp = {tmp[14:0], SI};
end
assign PO = tmp;
endmodule
Работает!
Теперь хочу блок регистров.
Делаю так:
module shift (C, SI, PO);
parameter n = 8;
input C;
input [n-1:0] SI;
output [15:0] PO[n-1:0];
integer i;
always @(posedge C) begin
for(i = 0; i < n; i = i + 1) begin
PO[i] <= {PO[14:0][i], SI[i]}; // Ругается на эту строку
end
end
endmodule
Что я делаю не так?