1

这是我的代码:

             variable input: array(0 to 3, 0 to 3) of unsigned(7 downto 0);
             variable outt: array(0 to 3, 0 to 175) of unsigned(7 downto 0);
           for i in 0 to 3 loop
              outt(0,i) :=input(0,i);
     outt(1,i) :=input(1,i);
     outt(2,i) :=input(2,i);
      outt(3,i) :=input(3,i);

      end loop;

有没有更好的方法来做到这一点?我的意思是一个有效的代码将所有输入数组复制到较大的 outt 数组的一部分中?

4

3 回答 3

1

根据经验,VHDL 中的循环是展开的,因为循环的目的是合成循环体中描述的多个硬件副本。控制逻辑不会出现在综合硬件中。

出于这个原因,编写多个赋值的更紧凑的方法是执行两个嵌套循环。

 for i in 0 to 3 loop
  for j in 0 to 3 loop
    out(i,j) := in(i,j);  // there will be 16 wires / flipflops synthesized
  end loop;
 end loop;
于 2013-03-20T05:23:38.260 回答
0

尝试

outt(0 to 3, 0 to 3) := input;
于 2013-03-19T18:48:05.543 回答
0

为了获得最大的灵活性,您可以使用嵌套循环和属性来应对 的大小变化i

for i in i'range(1) loop
  for j in i'range(2) loop
    outt(i,j) := input(i,j);  
  end loop;
end loop;
于 2013-03-20T11:49:34.590 回答