【问题标题】:creating a linear search algorithm in vhdl在 vhdl 中创建线性搜索算法
【发布时间】:2016-02-28 08:43:35
【问题描述】:

我正在尝试使用 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) 的文本“else”附近出现 VHDL 语法错误; 期待“end”,或“(”,或标识符(“else”是保留的 关键字),或顺序语句

错误 (10500):在 Search.vhd(22) 靠近文本“结束”处的 VHDL 语法错误 生成 GenIf;"; 期望 "end",或 "(",或标识符,或 顺序语句

错误 (10500):Search.vhd(22) 附近文本信息处的 VHDL 语法错误: 在源文件search.vhd中找到0个设计单元,包括0个实体

【问题讨论】:

  • 我建议拿一本好的 VHDL 书或阅读好的在线教程。这些语法错误很容易修复。解决方案几乎在错误消息本身中给出。当然,您总是可以就很难找到的语法错误提出问题。并检查您的 VHDL 编译器是否支持 VHDL'93 或 VHDL'08。

标签: arrays for-loop search int vhdl


【解决方案1】:

纠正第一个错误或第一对错误总是值得的。在那之后,它变得毫无意义,因为随后的错误取决于前一个或两个。所以,我看了一下前两个:

错误 (10500):在 Search.vhd(16) 的文本“for”附近出现 VHDL 语法错误;期待“开始”,或声明声明

您的流程需要begin 声明。所有进程都需要begin 声明:

process(input)
begin

错误 (10500):Search.vhd(18) 附近文本“生成”处的 VHDL 语法错误;期待“那么”

Generate 语句不属于进程内部。 (实际上,您可以将进程放在generate 语句中)。我认为您需要修改生成语句。你只需要一个普通的for loopif 语句:

process(input) 
begin
for i in sequence'range loop
        GenIf: if input=sequence(i)  then

(你的意思是sequence 不是my_array。)

改正之后,你会发现还有很多不同的错误需要改正,由于之前的错误,这里没有报告。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    • 2016-03-23
    相关资源
    最近更新 更多