在Xilinx工具中需要您对以下vhdl代码的帮助

时间:2016-04-18 11:35:03

标签: vhdl xilinx xilinx-ise xilinx-edk

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity conv_enc is
    Port ( clk : in  STD_LOGIC;
           rst : in  STD_LOGIC;
           inp : in  STD_LOGIC;
           outp : out  STD_LOGIC_VECTOR(3 DOWN TO 0));
end conv_enc;

architecture Behavioral of conv_enc is
begin
 process
 variable ff:std_logic_vector(3 down to 0);
  begin
   wait until rising_edge (clk)
     if rst='1' then
      ff<="0000";
     else
      for i in 2 down to 0 loop
       ff(i)<=ff(i+1);
        end loop;
        ff(3)<=inp;
    end if;
 end process;
 outp(0) <= inp xor ff(1) xor ff(0) ;
 outp(1) <= inp xor ff(3) xor ff(2) xor ff(1) ;
 outp(2) <= inp xor ff(3) xor ff(2) xor ff(1) xor ff(0);
 end Behavioral;

错误说: HDLParsers:3481 - 图书馆工作没有单位。没有保存参考文件&#34; xst / work / hdllib.ref&#34;为了它。 请帮助

2 个答案:

答案 0 :(得分:3)

虽然Maria和scary_jeff给出了部分解决方案,但有几个错误:

  

您在三个地方声明了范围down to而不是downto

     

你错过了一个分号,在这个过程中终止了wait语句。

     

您尝试读取流程之外的变量(在其范围之外)。

以下是你的代码纠正这些,特别是使ff成为一个信号:

library ieee;
use ieee.std_logic_1164.all;
-- use IEEE.STD_LOGIC_ARITH.ALL;
-- use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity conv_enc is
    port (
        clk:   in  std_logic;
        rst:   in  std_logic;
        inp:   in  std_logic;
        outp:  out std_logic_vector(3 downto 0) -- WAS DOWN TO
    );
end entity conv_enc;

architecture behavioral of conv_enc is
     signal ff:   std_logic_vector(3 downto 0); -- variable used outside process
begin
    process
        -- variable ff:   std_logic_vector(3 downto 0);  --  was down to
    begin
        wait until rising_edge (clk);  -- was miaaing terminating semicolon
        if rst = '1' then
            ff <= "0000";
        else
            for i in 2 downto 0 loop   -- was down to
                ff(i) <= ff(i + 1);
            end loop;
            ff(3) <= inp;
        end if;
    end process;

    outp(0) <= inp xor ff(1) xor ff(0);
    outp(1) <= inp xor ff(3) xor ff(2) xor ff(1);
    outp(2) <= inp xor ff(3) xor ff(2) xor ff(1) xor ff(0);

 end architecture behavioral;

请注意未使用的Synopsys软件包已注释掉。

然后您的代码进行分析。

注意没有赋值给outp(3)。

你的convolutionally encoder看起来不太合适,但那可能就是我。

如果没有测试平台提供刺激和预期结果,则无法验证功能。

答案 1 :(得分:0)

ff(3)<=inp;必须在else之后。