我正在尝试使用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):在文本“ for”附近的Search.vhd(16)处发生VHDL语法错误;期待“开始”或声明声明
错误(10500):在文本“生成”附近的Search.vhd(18)处发生VHDL语法错误;期待“那么”
错误(10500):在文本“ else”附近的Search.vhd(20)处发生VHDL语法错误;期望“ end”或“(”,或标识符(“ else”是保留关键字)或顺序语句
错误(10500):文本“ end generate GenIf;”附近的Search.vhd(22)处的VHDL语法错误。期望“结束”或“(”,或标识符,或顺序语句
错误(10500):文本附近的Search.vhd(22)处的VHDL语法错误信息:在源文件search.vhd中找到0个设计单位,包括0个实体
纠正第一个错误或前几个错误总是值得的。此后,它变得毫无意义,因为随后的错误取决于前一个或两个。所以,我看了一下前两个:
错误(10500):在文本“ for”附近的Search.vhd(16)处发生VHDL语法错误;期待“开始”或声明声明
您的过程需要begin
陈述。所有过程都需要一个begin
声明:
process(input)
begin
错误(10500):在文本“生成”附近的Search.vhd(18)处发生VHDL语法错误;期待“那么”
Generate
语句不属于流程内部。(实际上,您可以将流程放入generate
语句中)。我认为您需要修改生成语句。您只需要一个普通for loop
和if
声明:
process(input)
begin
for i in sequence'range loop
GenIf: if input=sequence(i) then
(您的意思sequence
不是my_array
。)
纠正这些错误之后,您会发现还有许多其他不同的错误需要更正,由于先前的错误,这些错误没有报告。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句