我正在尝试使用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,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;
我得到的错误信息是:
错误(10500):Search.vhd(16)附近文本“for”的VHDL语法错误;期待“开始”或声明语句错误(10500):Search.vhd(18)附近文本“生成”的VHDL语法错误;期待“然后”错误(10500):Search.vhd(20)的VHDL语法错误接近文本“else”;期望“结束”,或“(”或标识符(“else”是保留关键字),或顺序语句错误(10500):Search.vhd(22)处文本“end generate GenIf;”附近的VHDL语法错误;期望“结束”,或“(”,或标识符,或顺序语句错误(10500):Search.vhd(22)附近文本信息的VHDL语法错误:在源文件中找到0个设计单元,包括0个实体search.vhd
1 回答
总是值得纠正第一个错误或第一个错误 . 之后,它变得毫无意义,因为后续错误取决于前一个或两个错误 . 所以,我看了前两个:
您的流程需要
begin
语句 . 所有进程都需要begin
语句:Generate
语句不属于进程内部 . (实际上,您可以将进程放在generate
语句中) . 我认为你需要修改生成语句 . 你只需要一个普通的for loop
和if
语句:(你的意思是
sequence
而不是my_array
. )在纠正这些之后,您会发现有更多不同的错误要纠正,由于之前的错误而未报告 .