2015-01-06 1 views
-3

자일링스를 사용하여 3 개 카운터의 VHDL 시뮬레이션을해야하는 대학 프로젝트를 만들고 있습니다. 카운터 중 하나는 5에서 0으로 가고, 다른 카운터는 4에서 0으로 이동하고 다른 카운터는 13에서 0으로 이동하지만 하나의 클럭 신호로 두 번 카운트합니다.자일링스의 VHDL 도움이 필요합니다.

LIBRARY ieee; 
USE ieee.std_logic_1164.ALL; 
USE ieee.numeric_std.ALL; 
LIBRARY UNISIM; 
USE UNISIM.Vcomponents.ALL; 
ENTITY projetesquema2_projetesquema2_sch_tb IS 
END projetesquema2_projetesquema2_sch_tb; 
ARCHITECTURE behavioral OF projetesquema2_projetesquema2_sch_tb IS 

COMPONENT projetesquema2 
PORT(CLOCK : IN STD_LOGIC; 
     ACL : IN STD_LOGIC; 
     CAT : OUT STD_LOGIC; 
     CRT : OUT STD_LOGIC; 
     CLT : OUT STD_LOGIC; 
     ACA : IN STD_LOGIC); 
END COMPONENT; 

SIGNAL CLOCK : STD_LOGIC; 
SIGNAL ACL : STD_LOGIC; 
SIGNAL CAT : STD_LOGIC; 
SIGNAL CRT : STD_LOGIC; 
SIGNAL CLT : STD_LOGIC; 
SIGNAL ACA : STD_LOGIC; 

BEGIN 

UUT: projetesquema2 PORT MAP(
    CLOCK => CLOCK, 
    ACL => ACL, 
    CAT => CAT, 
    CRT => CRT, 
    CLT => CLT, 
    ACA => ACA 
); 

*** Test Bench - User Defined Section *** 

tb : PROCESS 
BEGIN 
process (CLOCK) 
begin 
    if (CLOCK'event and CLOCK='1') then 
     if (ACA='0') then 
     CAT <= "0000"; 
     else 
     CAT <= CAT + 1; 
     end if; 
    end if; 
end process; 

    process (CAT) 
begin 
    if (CAT'event and CAT='1') then 
     CRT <= CRT + 1; 
     end if; 
    end if; 
end process; 

    process (CLOCK) 
begin 
    if (CLOCK'event and CLOCK='1') then 
     if (ACL='0') then 
     CLT <= "0000"; 
     else 
     CLT <= CLT + 1; 
     end if; 
    end if; 
end process; 

end Behavioral; 
    WAIT; -- will wait forever 
END PROCESS; 
*** End Test Bench - User Defined Section *** 

END; 

이 나에게 내가 해결하는 방법을 모르는 약간의 오차가 있습니다 : 내가 개발 한 코드 (엔티티 및 아키텍처를 그대로 유지하도록되어 있으므로 그것이 내가 생각하는 개략적 기반으로했다) 이와 같은 일을했다 누군가가 실제로 나를 도울 수 있기를 바랍니다. 오류 :

오류 : 54 번째 줄 : "process"근처에 구문 오류가 있습니다.

오류 : 줄 55 : "begin"근처에 구문 오류가 있습니다.

ERROR : 행 58 : 유형 STD_LOGIC는 문자열 리터럴과 일치하지 않는

ERROR : 행 60 : 발견 '0'연산자의 정의를 "+", "+"

에 대한 정확한 과부하가 일치하는 정의를 확인할 수 없습니다

ERROR : 라인 68 : 라인 70 : 볼 '0'오퍼레이터의 정의는 "+", "+"

ERROR 대한 정확한 오버 매칭 정의를 결정할 수 구문 오류 "만약"근처.

ERROR : 행 77 : 유형 STD_LOGIC는 문자열 리터럴과 일치하지 않는

ERROR : 행 79 : 발견 '0'연산자의 정의를 "+", "+"

에 대한 정확한 과부하가 일치하는 정의를 확인할 수 없습니다

오류 : 줄 22 : 이전 오류로 인해 단위가 무시되었습니다.

오류 : 줄 85 : "WAIT"근처에 구문 오류가 있습니다.

+1

표시되는 오류를 표시 할 수 있습니까? – kestasx

+0

기본적으로 다음과 같은 오류가 발생합니다 : "process"및 "begin"근처의 구문 오류, 다양한 유형의 std_logic이 문자열 리터럴과 일치하지 않음, 연산자 "+"의 정의가 발견 됨, 구문 오류가있는 경우 근처에서 로 인해 무시 됨 이전 오류 및 WAIT 근처의 구문 오류 – pmff96

+0

@ pmff96 질문에 직접 오류 출력을 추가하십시오 (주석의 수와 문자 수에 제한이 있음). –

답변

0

바로 여기에서 프로세스 내부에서 프로세스를 정의하기 시작합니다. 이는 합법적이지 않습니다. 또한별로 의미가 없습니다.당신은 불필요한 과정을 가지고 BEGIN

:

tb : PROCESS 
BEGIN 
process (CLOCK) 
begin 

추가 end if있다 : 별표 구분 된 의견을 가정

tb : PROCESS 
BEGIN 
process (CLOCK) 
begin 
    if (CLOCK'event and CLOCK='1') then 
1

는 VHDL의 설계 사양의 일부가 아닌

process (CAT) 
begin 
    if (CAT'event and CAT='1') then 
     CRT <= CRT + 1; 
     end if; 
    end if; 
end process; 

더 많은 관련없는 문장이 있습니다 :

end Behavioral; 
    WAIT; -- will wait forever 
END PROCESS; 
-- *** End Test Bench - User Defined Section *** 

END; 

이 간단해야한다 :

end Behavioral; 

또는

end architecture Behavioral; 

그리고 지금 우리가 의미 론적 오류를 발견 :

'CAT'은 스칼라 STD_LOGIC으로 정의된다 :

SIGNAL CAT : STD_LOGIC; 
    SIGNAL CRT : STD_LOGIC; 
    SIGNAL CLT : STD_LOGIC; 
    SIGNAL ACA : STD_LOGIC; 

및 projetesquema2의 구성 요소 선언에 사용됩니다.

당신은 std_logic_vector 값을 올릴 수 없습니다 :

 CAT <= "0000"; 
     else 
     CAT <= CAT + 1; 

또는이 부호없는 (사용 절 참조 패키지 numeric_std로 선언 된 것처럼의 정수를 추가하고, BTW unisim 물건이 될 수 덤핑).

동일한 인수가 CRTCLA 인 경우 true입니다. projetesquema은 프로젝트 계획으로 영어로 번역 된 것처럼 보이지만 응답자에게 이러한 문제를 해결하는 방법을 알려주는 정보가 충분하지 않습니다.

아마도 당신이 projetesquema2에 대한 엔티티와 아키텍처를 사용 가능하게 만들었거나 그것이하는 일과 포트 이름이 의미하는 바를 말했습니까?

당신이 깊은 곳에서 던져 지거나 독서 목록에 누락되었거나 지금까지 보았던 오류에서 수업 시간에 관심을 보이지 않은 것 같습니다.

VHDL 학습을위한 첫 번째 리소스로 사용해야하는 곳이 Stackoverflow가 아니기 때문에 Xilinx 도구는 오류 메시지에 다소 비우호적입니다.

나는 영어로 알고 있지만 VHDL에 대한 개요는 reference을 사용해보십시오.