vhdl“ for循环”,步长不等于1

use*_*350 2 for-loop vhdl low-level

我有一个简单的问题 。是否可以编写VHDL for循环,步长不等于1,例如16

循环应该像

0-> 16-> 32-> 48 ....到某个值

任何即时帮助,我们感激不尽

rgc*_*ini 5

可能的解决方案是使用所需范围的1/16的范围,并展开其中的循环以生成所需范围:

for i in 0 to 3 -- Actually 0 to 48
loop
    x(16*i) <= ...
    x((16*i)+1) <= ...
    (...)
    x((16*i)+15) <= ...
end loop;
Run Code Online (Sandbox Code Playgroud)

另一个解决方案是改用一段时间。假设您的count变量是一个整数:

while (i < 48)
loop
   --Do something
   i := count + 16;
end loop;
Run Code Online (Sandbox Code Playgroud)

编辑:我还没有测试上面的代码,您可能无法更改循环内的变量计数,我不确定。也许第一个解决方案是最好的。

for循环的步长不可能不同于1。甚至不允许您在for循环内更改它,如下所示:

--THIS WILL NOT WORK
for i in 0 to 48 loop
    --Do Something
    i := i + 15; -- This will NOT increment the loop index by 16
end loop; 
Run Code Online (Sandbox Code Playgroud)

最后,对于2或3步,您可以使用嵌套的。

但是无论如何,您要完成什么?VHDL是一种低级的硬件描述语言,您应该能够在不花哨的情况下实现任何尝试。