Arrays 用vhdl创建线性搜索算法
我正在尝试用vhdl实现一个线性搜索算法我的代码是Arrays 用vhdl创建线性搜索算法,arrays,for-loop,search,int,vhdl,Arrays,For Loop,Search,Int,Vhdl,我正在尝试用vhdl实现一个线性搜索算法我的代码是 library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity q1 is port( input : in integer; output : out integer ); end q1; architecture beh of q1 is type my_array is array (0 to 6) of integer; constant sequence: my_array := (0,1,2,
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity q1 is port(
input : in integer;
output : out integer
);
end q1;
architecture beh of q1 is
type my_array is array (0 to 6) of integer;
constant sequence: my_array := (0,1,2,3,4,5,6,7);
begin
process(input)
for i in sequence' range generate
begin
GenIf: if (input=my_array(i)) generate then
output <=input;
else
output <=0;
end generate GenIf;
end generate;
end process;
end beh;
IEEE库;
使用IEEE.STD_LOGIC_1164.ALL;
实体q1是端口(
输入:整数;
输出:输出整数
);
第一季度末;
q1的架构是
类型my_数组是整数的数组(0到6);
常量序列:my_数组:=(0,1,2,3,4,5,6,7);
开始
过程(输入)
对于序列“范围”中的i,生成
开始
GenIf:if(input=my_数组(i))生成然后
输出总是值得纠正第一个错误或第一对错误。之后,它就变得毫无意义了,因为后续的错误取决于前一两个错误。我看了前两个:
错误(10500):搜索时出现VHDL语法错误。vhd(16)靠近文本“for”;应为“begin”或声明语句
您的流程需要一个begin
语句。所有流程都需要begin
语句:
process(input)
begin
process(input)
begin
for i in sequence'range loop
GenIf: if input=sequence(i) then
错误(10500):搜索时出现VHDL语法错误。vhd(18)靠近文本“generate”;期待“那么”
Generate
语句不属于进程内部。(实际上,您可以将进程放入generate
语句中)。我认为您需要修改生成报表。您只需要一个普通的for循环
和if
语句:
process(input)
begin
process(input)
begin
for i in sequence'range loop
GenIf: if input=sequence(i) then
(你的意思是序列
而不是我的数组
)
更正这些错误后,您会发现还有很多不同的错误需要更正,这些错误由于以前的错误而未报告。我建议您阅读一本好的VHDL书籍或阅读一本好的在线教程。这些语法错误很容易修复。错误消息本身几乎给出了解决方案。当然,你可以问一个关于语法错误的问题,这是很难找到的。并检查您的VHDL编译器是否支持VHDL'93或VHDL'08。