Arrays 用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,

我正在尝试用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;
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。