【发布时间】:2019-08-13 04:05:19
【问题描述】:
我似乎在移动矢量数组元素时遇到了问题。当我的 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 个数组元素的变化。
【问题讨论】:
-
当然我很乐意分享完整的代码和模拟文件,但我想也许我已经把显示的代码弄错了
-
for i in 1 to N loop -
@giampietro-seu 而不是。
for i in N downto 1 loop -
@mfro 有什么区别?
-
@giampietro-seu 关于结果,没有。关于学习效果,很多。