VHDL分析错误,意外的DIV

VHDL分析错误,意外的DIV,vhdl,Vhdl,我被要求在键盘上显示按下次数最多的号码 这是唯一显示的错误 错误:HDLParsers:164-“D:/project/comparator.vhd”第37行。作语法分析 错误,意外的DIV 这是第37行 if Int_Key = i then 这个错误意味着什么?我该怎么解决呢 这是完整的代码: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; use ieee.std_logic_ari

我被要求在键盘上显示按下次数最多的号码 这是唯一显示的错误

错误:HDLParsers:164-“D:/project/comparator.vhd”第37行。作语法分析 错误,意外的DIV

这是第37行

if Int_Key = i  then
这个错误意味着什么?我该怎么解决呢

这是完整的代码:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use ieee.std_logic_arith.all;
---------------------------------------------------------------

entity compartor is
port
(
Key_out : in  std_logic_vector(3 downto 0);
clk,rst: in std_logic;
Winner: out std_logic_vector (3 downto 0)    
);
end compartor;

architecture Behavioral of compartor is

Type Data is array (0 to 15) of integer;
Signal Counters:Data:=(others=>0);
Signal Max:integer;
Signal MaxPlace:integer;
Signal INT_Key:integer:=conv_integer(Key_out);


begin


process (clk,rst)
begin
if (rst='1') then
Winner<= (others=>'0');

elsif (rising_edge(clk)) then


  for i in 0 to 15 loop
     if Int_Key = i  then   
       Counters(i)<= Counters(i)+1;
     end if;
  end loop;

Max <= Counters(0);
MaxPlace <= 0;
    for i in 0 to 15 loop 
      if (Counters(i) > Max) then 
        Max <= Counters(i);
    MaxPlace <= i;
      end if;
    end loop;

end if;
end process;
Winner<= conv_std_logic_vector (MaxPlace,4);

end Behavioral;
IEEE库;
使用IEEE.STD_LOGIC_1164.ALL;
使用IEEE.STD_LOGIC_UNSIGNED.ALL;
使用ieee.std_logic_arith.all;
---------------------------------------------------------------
实体比较器是
港口
(
按键输出:输入标准逻辑向量(3到0);
时钟,rst:标准逻辑中;
获胜者:输出标准逻辑向量(3到0)
);
末端比较器;
比较器的结构是
类型数据是整数数组(0到15);
信号计数器:数据:=(其他=>0);
信号最大值:整数;
信号最大位置:整数;
信号INT_键:整数:=conv_整数(键出);
开始
过程(时钟、rst)
开始
如果(rst='1'),则
获胜者"0";;
elsif(上升沿(clk))然后
对于0到15循环中的i
如果Int_Key=i,则

计数器(i)看不出该特定错误消息的原因,但代码还有其他问题

Winners
输出端口在进程内和进程外都受驱动,因此具有多个驱动器,Xilinx合成工具不接受这些驱动器

声明中的分配给
INT\u键
,如下所示:

Signal INT_Key:integer:=conv_integer(Key_out);

给出了<代码> ItKyKEY <代码>和基于<代码> KEYEXOUT 输入端口的初始值,这可能不是您想要的,所以请考虑做:

Signal INT_Key:integer;
...
INT_Key <= conv_integer(Key_out);
信号输入键:整数;
...

INT_Key首先感谢您的回复。其次,我在代码中写了一个注释,并在这里删除了它,因此出现了错误。我使用“//mynotes”而不是“--notes”。将Int_键放在流程中并在流程结束前给出优胜者的结果后,代码现在可以正常工作。谢谢你这个问题不能从你的代码中重现。从你的评论到第二个答案,我在代码中写了一个注释,并在这里删除了它,因此出现了错误。我使用“//mynotes”而不是“--notes”。,第一个正斜杠使用了不正确的注释分隔符,导致删除行上的解析器错误(DIV)。