|
发表于 2017-7-4 12:18:35
|
显示全部楼层
明白你的意思了。我给你写一段伪代码,你自己琢磨吧。
首先定义寄存器存放输入进来的数据: shift_reg_s ,这个寄存器可存放16个输入的数据。
再定义16个寄存器存放并行的数据,每个寄存器长度为你每次处理数据的个数,假如为48个吧shift_reg_p1,shift_reg_p2..........shift_reg_p16;每个寄存器可存放48个数,这16个寄存器存放的就是你需要的并行的数据。
定义一个计数器: cnt ,每次计到15清零。
process( clk ) begin
if clk'event and clk = '1' then
cnt <= cnt + 1;
shift_reg_s[0] <= data_in;
for i =1:15 loop
shift_reg_s[i] <= shift_reg_s[i-1];
end loop;
if cnt = 0 then
shift_reg_p1[0] <= shift_reg_s[0];
shift_reg_p2[0] <= shift_reg_s[1];
shift_reg_p3[0] <= shift_reg_s[3];
..
..
shift_reg_p16[0] <= shift_reg_s[15];
for i=1:48 loop
shift_reg_p1[i] <= shift_reg_p1[i-1];
shift_reg_p2[i] <= shift_reg_p2[i-1];
..
..
shift_reg_p16[i] <= shift_reg_p16[i-1];
end loop;
elsif cnt = 15 then
cnt <= 0;
end if;
end if;
end process; |
|