描述: 我想编写vhdl代码,找到数组A中最大的整数,这是一个包含20个整数的数组。
问题:
我的算法应该是什么样的,输入顺序语句的位置?
我的vhdl代码:
highnum: for i in 0 to 19 loop
i = 0;
i < 20;
i<= i + 1;
end loop highnum;
这不需要是可综合的,但我不知道如何形成这个循环的详细例子来解释如何被欣赏。
答案 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实体格式......即进程,端口等等......你可以回复!