vhdl代码(for循环)

时间:2014-02-25 02:11:43

标签: for-loop vhdl

描述: 我想编写vhdl代码,找到数组A中最大的整数,这是一个包含20个整数的数组。

问题:
我的算法应该是什么样的,输入顺序语句的位置?

我的vhdl代码:

highnum: for i in 0 to 19 loop
i = 0; 
i < 20; 
i<= i + 1;
end loop highnum;

这不需要是可综合的,但我不知道如何形成这个循环的详细例子来解释如何被欣赏。

2 个答案:

答案 0 :(得分:3)

在VHDL时钟进程内简单地将C循环转换为VHDL将是可以合成的。它会生成很多硬件,因为它必须在一个时钟周期内生成输出,但是如果你只是模拟它就没关系。

如果硬件太多,则必须将其实现为具有至少两种状态(空闲和计算)的状态机,以便在计算时每个时钟周期仅执行一次循环迭代,并返回到空闲状态完成后。

答案 1 :(得分:1)

首先,您应该知道如何在vhdl中定义数组。 让我为你定义一个数组。

    type array_of_integer array(19 downto 0) of integer;
    signal A : array_of_integer :=(others => 0);
    signal max : integer;
    -- Now above is the array in vhdl of integers all are initialized to value 0.

    A(0) <= 1;
    A(1) <= 2;
    --
    --
    A(19)<= 19;
    -- Now the for loop for calculating maximum 
    max <= A(0);
    for i in 0 to 19 loop 
      if (A(i) > max) then 
        max <= A(i);
      end if;
    end loop;

- 现在如果你有一个问题,那就是在哪里把代码的哪一部分放在---- vhdl实体格式......即进程,端口等等......你可以回复!