Vhdl 通用二进制灰色,灰色二进制转换器,逻辑错误

Vhdl 通用二进制灰色,灰色二进制转换器,逻辑错误,vhdl,gray-code,Vhdl,Gray Code,它向我显示了一个错误: 错误:Xst:787-“E:/tumama/tyty.vhd”第54行:索引值不在数组的范围内 这是一个“通用”代码,我的嵌入信号a有5位n 我只想使用4位转换的情况下。所以我在Y中有4位 注释用于并发代码 但是我不明白 谢谢 library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity FirstTermExamen is Generic (n: natural := 4); Port ( Num

它向我显示了一个错误: 错误:Xst:787-“E:/tumama/tyty.vhd”第54行:索引值不在数组的范围内

这是一个“通用”代码,我的嵌入信号a有5位n 我只想使用4位转换的情况下。所以我在Y中有4位 注释用于并发代码

但是我不明白 谢谢

library IEEE;
    use IEEE.STD_LOGIC_1164.ALL;



entity FirstTermExamen is

    Generic (n: natural := 4);

    Port ( Num : in   STD_LOGIC_VECTOR (n-1 downto 0);
           Sel : in   STD_LOGIC;
           Y   : out  STD_LOGIC_VECTOR (n-1 downto 0)
              );

end FirstTermExamen;

architecture Behavioral of FirstTermExamen is

    signal A: STD_LOGIC_VECTOR (n downto 0);

begin

--  --Secuencial Description
--  Binary_Gray : process(A, Num, Sel)
--      begin 
--  
--  --Initial conditions
--  A(0) <= Num(0);
--  A(1) <= Num(0) xor Num(1);
--  
--   for i in 1 to n-1 loop
--          if Sel = '1' then   A(i+1) <= Num(i) xor Num(i+1);
--          else              A(i+1) <= A(i)   xor Num(i+1);
--          
--          end if;
--      
--  end loop;
--  
--  for j in 0 to n loop
--          Y(j)<= A(j);
--          
--      end loop;
--
--end process Binary_Gray;

    --Concurrent Description
    A(0) <= Num(0);
    A(1) <= Num(0) xor Num(1);


    Binary_Gray: 
    for i in 1 to n-1 generate
        begin
            A(i+1) <= Num(i) xor Num(i+1) when Sel = '1' else
                   A(i)   xor Num(i+1);

      end generate;

     output:
      for j in 0 to n generate
        begin
            Y(j)<= A(j);

        end generate;

end Behavioral;
IEEE库;
使用IEEE.STD_LOGIC_1164.ALL;
实体FirstTermExamen是
一般(n:自然:=4);
端口(Num:在标准逻辑向量中(n-1到0);
Sel:标准逻辑中;
Y:输出标准逻辑向量(n-1到0)
);
期末考试;
FirsterMexamen的架构行为是
信号A:标准逻辑向量(n到0);
开始
----间接描述
--二进制灰:进程(A、Num、Sel)
--开始
--  
----初始条件

--A(0)当循环索引
i
达到值n-1时,则尝试访问
Num(n)
。但是,
Num
仅为
(n-1到0)
范围定义

一个数字示例是n=4,这是您的默认情况:
您为
i
生成从1到3的值,但访问
Num(i+1)
,因此
Num(4)
。但是,如上所述,
Num
仅在
3到0的范围内定义