首页 > 解决方案 > (N+1) x 13 数组的 VHDL 移位数组元素

问题描述

我似乎在移动矢量数组元素时遇到了问题。当我的 FSM 进入状态时,应在输入的开头添加一个 0,然后将其保存在第 0 个数组位置。其余的数组条目应该再移动一步,所以位置 0 到位置 1 等等。

我试图在我的状态机中使用的是

when readAndShift =>
   x(0) <= "0" & x_in;
   for i in N to 1 loop
      x(i)    <=  x(i-1);    
   end loop;

类型和变量声明为:

type    tap_line is array(0 to N) of std_logic_vector(12 downto 0);
.
.
.
signal x    :   tap_line  := (others=>(others=>'0'));

据我了解,在VHDL中,for循环“展开”自身并同时执行for循环的每一步,所以一个时钟上升沿就足够了,对吧?我的模拟只显示了第 0 个数组元素的变化。

模拟

标签: arraysfor-loopvhdl

解决方案


好的,所以我想写的是

when readAndShift =>
   x(0) <= "0" & x_in;
   for i in N downto 1 loop
      x(i)    <=  x(i-1);    
   end loop;

我以为方向会自动确定。感谢您的帮助,现在我可以继续解决其余的逻辑问题


推荐阅读