2016-04-18 57 views
-1
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; 

的錯誤說下面的VHDL代碼幫助: HDLParsers:3481 - 圖書館工作沒有單位。沒有保存參考文件「xst/work/hdllib.ref」。 請幫助需要你在賽靈思工具

+1

您不應該使用'STD_LOGIC_UNSIGNED'或'STD_LOGIC_ARITH';你的代碼不會執行任何算術運算,即使這樣做了,你也可以使用'numeric_std'包。 –

回答

0

ff(3)<=inp;必須在else之後。

3

瑪麗亞和scary_jeff給出部分解決方案存在幾個誤區:

你宣佈在三個地方一系列down to,而不是downto

您錯過了在該過程中終止等待語句的分號。

您試圖讀取進程之外的變量(在其範圍之外)。

以下是你的代碼糾正這些,特別是使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看起來不太正確,但那可能就是我。

沒有提供刺激和預期結果的測試臺,功能無法驗證。