На языке C существует массив x [0], x [1], ..., x [127], для заданного числа k в [0, 127) мы различаем операцию сдвига влево как y [n] = x [(n + k)% 128], для n = 0,1,2 ..., 127
Теперь я пытаюсь реализовать это в FPGA, так как их так много я хотел бы получить результат как можно быстрее.
Я сделал это следующим образом,
module LEFT_SHIFT(
input clk,
input rst,
input [31:0] data_in[0:127])
input [6:0] shift,
output reg [31:0] data_ou[0:127]
);
integer i;
always @ (posedge clk)
begin
if (rst)
for (i=0;i<128;i++)
data_out[i] <= 32'bb0;
else
for (i=0;i<128;i++)
data_out[(i+shift)%128] = data_in[i];
end
endmodule
Этот код хорош с точки зрения скорости, ресурса и времени? Я похож на ОЗУ, но ОЗУ не выводит всю память одновременно.
Большое спасибо,
Джерри