2012-01-02 3 views
1

Mux8 : 3을 사용하여 전체 가산기를 만들려고했으나 실행되지 않습니다! 실행할 때 명령 줄에서 오류가 발생하지 않지만 ghdl이 시작되지 않습니다! 누군가이 코드를 읽고 내가 무엇을 할 수 있는지 말해 줄 수 있습니까? 고마워요. VHDL Full adder with Mux 8 : 3

   -----------------------MUX8ingressi------------------- 
     library IEEE; 
     use IEEE.std_logic_1164.all; 

     entity mux8 is 
      port(
       A: in STD_LOGIC; 
       B: in STD_LOGIC; 
       C: in STD_LOGIC; 
       D: in STD_LOGIC; 
       E: in STD_LOGIC; 
       F: in STD_LOGIC; 
       G: in STD_LOGIC; 
       H: in STD_LOGIC; 
       S1: in STD_LOGIC; 
       S2: in STD_LOGIC; 
       S3: in STD_LOGIC; 
       U: out STD_LOGIC 
     ); 
     end mux8; 


     architecture RTL of mux8 is 
     signal S: STD_LOGIC_VECTOR (2 downto 0); 

      begin 
      S <= S1&S2&S3; 
      U <= A when S="000" else 
       B when S="001" else 
       C when S="010" else 
       D when S="011" else 
       E when S="100" else 
       F when S="101" else 
       G when S="110" else 
       H; 

      end RTL; 

     -------------------FULL ADDER------------------------------- 
     library IEEE; 
     use IEEE.std_logic_1164.all; 

     entity FA is 
      port(
       add1: in STD_LOGIC; 
       add2: in STD_LOGIC; 
       Ci: in STD_LOGIC; 
       S: out STD_LOGIC; 
       Co: out STD_LOGIC 
     ); 
     end FA; 

     architecture RTL of FA is 
     -- Ci A B | Co S 
     -------------|--------- 
     -- 0 0 0 | 0 0 
     -- 0 0 1 | 0 1 
     -- 0 1 0 | 0 1 
     -- 0 1 1 | 1 0 
     -- 1 0 0 | 0 1 
     -- 1 0 1 | 1 0 
     -- 1 1 0 | 1 0 
     -- 1 1 1 | 1 1 

     component mux8 is 
      port(
       A: in STD_LOGIC; 
       B: in STD_LOGIC; 
       C: in STD_LOGIC; 
       D: in STD_LOGIC; 
       E: in STD_LOGIC; 
       F: in STD_LOGIC; 
       G: in STD_LOGIC; 
       H: in STD_LOGIC; 
       S1: in STD_LOGIC; 
       S2: in STD_LOGIC; 
       S3: in STD_LOGIC; 
       U: out STD_LOGIC 
     ); 
     end component; 

      begin 
      test: mux8 port map (
            A=>'0', 
            B=>'1', 
            C=>'1', 
            D=>'0', 
            E=>'1', 
            F=>'0', 
            G=>'0', 
            H=>'1', 
            S1=>add1, 
            S2=>add2, 
            S3=>Ci, 
            U=>S 
            ); 

      end RTL; 

     -----------------TEST BENCH----------------- 
     library IEEE; 
     use IEEE.std_logic_1164.all; 

     entity FA_tb is 
     end FA_tb; 


     architecture test of FA_tb is 
     component FA is 
      port(
       add1: in STD_LOGIC; 
       add2: in STD_LOGIC; 
       Ci: in STD_LOGIC; 
       S: out STD_LOGIC; 
       Co: out STD_LOGIC 
     ); 
     end component; 

     signal add1_tb, add2_tb, Ci_tb, S_tb, Co_tb: STD_LOGIC; 
     signal ideal_co: STD_LOGIC; 
     signal ideal_s: STD_LOGIC; 
     signal ERRORE_S,ERRORE_Co: STD_LOGIC := '0'; 

     begin 

      UUT: FA port map (add1=>add1_tb, add2=>add2_tb, Ci=>Ci_tb, S=>S_tb, Co=>Co_tb); 

      process 
      begin 
      add1_tb<='0'; add2_tb<='0'; Ci_tb<='0'; ideal_co<='0'; ideal_s<='0'; 
      wait for 10 ns; 
      add1_tb<='0'; add2_tb<='1'; Ci_tb<='0'; ideal_co<='0'; ideal_s<='1'; 
      wait for 10 ns; 
      add1_tb<='1'; add2_tb<='0'; Ci_tb<='0'; ideal_co<='0'; ideal_s<='1'; 
      wait for 10 ns; 
      add1_tb<='1'; add2_tb<='1'; Ci_tb<='0'; ideal_co<='1'; ideal_s<='0'; 
      wait for 10 ns; 
      add1_tb<='0'; add2_tb<='0'; Ci_tb<='1'; ideal_co<='0'; ideal_s<='1'; 
      wait for 10 ns; 
      add1_tb<='0'; add2_tb<='1'; Ci_tb<='1'; ideal_co<='1'; ideal_s<='0'; 
      wait for 10 ns; 
      add1_tb<='1'; add2_tb<='0'; Ci_tb<='1'; ideal_co<='1'; ideal_s<='0'; 
      wait for 10 ns; 
      add1_tb<='1'; add2_tb<='1'; Ci_tb<='1'; ideal_co<='1'; ideal_s<='1'; 
      wait for 10 ns; 

      wait; 
      end process; 

     end test; 

과 당신의 코드가 잘 컴파일

echo off 
    cls 
    set path=%path%;C:\Program files\GHDL\bin;C:\Program files\GHDL\gtk\bin; 

    echo on 
    ghdl -a FAconMUX_83.vhdl 
    ghdl -e mux8 
    ghdl -e FA 
    ghdl -e FA_tb 
    ghdl -r FA_tb --vcd=out83.vcd 
    gtkwave out83.vcd 
+1

시뮬레이션을 컴파일, 작성 및 실행하는 데 사용하는 명령을 포함하도록 질문을 업데이트 할 수 있습니까? –

+2

리눅스에서 ghdl로 코드를 시험해 보았습니다. 분석하고 컴파일하고 실행했습니다. gtkwave에서 VCD 파일을 검사하지는 않았지만 VCD 파일이 생성되었고 일부 활동이 포함되어 있습니다. ghdl 설치를 확인하십시오. 아마도 여기에 결함이 있습니다. –

답변

0

, 나는 당신이 다른 합성 도구를 사용하거나 논리를 사용하는 것이 좋습니다 윈도우 8에 알테라의 Quartus II 14.0을 사용하여 시도 지금 내 make.bat 게이츠는 합계와 운반을 모두 얻습니다. 을 기원합니다.