For loop vhdl代码(用于循环)

For loop vhdl代码(用于循环),for-loop,vhdl,For Loop,Vhdl,说明: 我想写vhdl代码,在数组A中找到最大的整数,数组A是一个由20个整数组成的数组 问题: 我的算法应该是什么样的,输入顺序语句的位置 我的vhdl代码: highnum: for i in 0 to 19 loop i = 0; i < 20; i<= i + 1; end loop highnum; highnum:0到19循环中的i i=0; i0); 信号最大值:整数; --上面是vhdl中的整数数组,所有整数都初始化为值0。 A(0)首先,您应该知道如何在vhd

说明: 我想写vhdl代码,在数组A中找到最大的整数,数组A是一个由20个整数组成的数组

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

我的vhdl代码:

highnum: for i in 0 to 19 loop
i = 0; 
i < 20; 
i<= i + 1;
end loop highnum;
highnum:0到19循环中的i
i=0;
i<20;

简单地将C循环转换为VHDL,在一个VHDL时钟进程内,将工作并可合成。它将生成大量硬件,因为它必须在一个时钟周期内生成输出,但如果您只是模拟它,这并不重要


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

在VHDL时钟进程内,简单地将C循环转换为VHDL,将工作并可合成。它将生成大量硬件,因为它必须在一个时钟周期内生成输出,但如果您只是模拟它,这并不重要


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

首先,您应该知道如何在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;
输入整数数组的数组(19到0);
信号A:数组_的_整数:=(其他=>0);
信号最大值:整数;
--上面是vhdl中的整数数组,所有整数都初始化为值0。

A(0)首先,您应该知道如何在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;
输入整数数组的数组(19到0);
信号A:数组_的_整数:=(其他=>0);
信号最大值:整数;
--上面是vhdl中的整数数组,所有整数都初始化为值0。

A(0)(在删除问题中的C代码之前,此答案更有意义!)(在删除问题中的C代码之前,此答案更有意义!)