2016-07-20 6 views
0
library IEEE; 
use IEEE.STD_LOGIC_1164.ALL; 
entity test_adder_vhdl is 
end test_adder_vhdl; 

architecture Behavioral of test_adder_vhdl is 
constant clock_period : time := 1000 ns ; 
component adder is 
PORT (A: in STD_LOGIC; 
    B: in STD_LOGIC; 
    SUM: out STD_LOGIC; 
    CARRY: out STD_LOGIC); 
end component adder; 

SIGNAL A: STD_LOGIC : ='0'; 
SIGNAL B: STD_LOGIC : ='0'; 
SIGNAL SUM: STD_LOGIC : ='0'; 
SIGNAL CARRY: STD_LOGIC : ='0'; 
begin 

uut: adder port map(
A=> A; 
B=> B; 
SUM => SUM; 
CARRY => CARRY; 
); 

clk gena: process 
begin 
wait for 100 ns; 
A <= not A; 
end process; 

clk genb: process 
begin 
wait for 50 ns; 
B <= not B; 
end process; 
end Behavioral; 

오류의 내 시뮬레이션 파일에 오류를 찾을 수 없습니다 나는 것은내가 위의 코드에서 VHDL

[HDL 9-806] 구문 오류 가까이 ":". [ "F : /practiceWorkspace/practice1/practice1.srcs/sim_1/new/test_adder_vhdl.vhd": 38]

+0

디자인과 회선 번호가 일치하지 않습니다. 디폴트 값 '0'을 제공하기 위해 사용되는 복합 분리 문자 ": ="에서 ':'와 '='사이에 관계없는 공백이있는 네 개의 신호 선언 (A, B, SUM, CARRY)이 있습니다. 포트 맵에서 ','는 ';'대신 연결 목록에서 구분 기호로 사용해야합니다. 마지막 연결에는 쉼표 (구분 기호로 사용됨)가 필요하지 않습니다. clk_gena 및 clk_genb 레이블에는 밑줄 대신 공백이 있습니다. 레이블은 단일 식별자입니다.이러한 코드를 수정 한 후 분석합니다. 더 이상의 보증은 함축되어 있지 않습니다. – user1155120

+0

상수 clock_period : 시간 : = 1000 ns; 코드 줄에 표시 – Sami

답변

2

당신은 당신의 디자인 라인 번호 대응을 보여주는되지 않습니다. 오류는 A에 대한 신호 선언과 일치하는 것으로 나타납니다. 더 많은 구문 오류가 있습니다.

문은 세미콜론으로 구분됩니다. 인터페이스 선언은 세미콜론으로 구분됩니다. 다른 객체 선언은 세미콜론으로 구분됩니다. 여기에있는 연관 목록의 여러 요소는 쉼표로 구분됩니다.

기본값 '0'을 제공하는 데 사용되는 복합 분리 문자 ": ="의 ':'와 '='사이에 공백이있는 네 개의 신호 선언 (A, B, SUM, CARRY)이 있습니다.

이 같아야합니다

SIGNAL A: STD_LOGIC := '0'; 
SIGNAL B: STD_LOGIC := '0'; 
SIGNAL SUM: STD_LOGIC := '0'; 
SIGNAL CARRY: STD_LOGIC := '0'; 

:=는 상수와 객체에 대한 기본 식 (값)에 대한 변수 할당, 값을 의미하는 데 사용됩니다.

포트 맵에서 ','는 ';'대신 연결 목록에서 구분 기호로 사용해야합니다.

uut: adder port map (
A=> A, 
B=> B, 
SUM => SUM, 
CARRY => CARRY -- NO TRAILING SEPARATOR 
); 

마지막 연결에는 쉼표 (구분 기호로 사용되는 구분 기호)가 필요하지 않습니다.

레이블 clk_gena 및 clk_genb에 밑줄 대신 공백이 있습니다.

clk_gena: process 
begin 
wait for 100 ns; 
A <= not A; 
end process; 

clk_genb: process 
begin 
wait for 50 ns; 
B <= not B; 
end process; 

레이블은 0 개 또는 하나의 밑줄 문자로 구분 된 하나 이상의 문자 또는 숫자가 뒤에 오는 문자로 구성된 단일 식별자입니다. 프로세스에는 clk_gena 및 clk_genb라는 레이블이 지정됩니다.

코드 수정 후 (컴파일). 컴포넌트 가산기의 엔티티 및 아키텍처 쌍이 없으면 코드를 정교 (링크)하거나 시뮬레이션 할 수 없습니다.

두 프로세스는 50ns 동안 일시 중단되며 감도 목록의 요소를 기다리는 암시 적 마지막 대기 시간 명령문이없는 프로세스는 마지막 프로세스를 실행 한 후 프로세스의 첫 번째 순차 명령문을 기쁜 마음으로 시작합니다.

예를 들어, 후행 대기 명세서 나 제어 시뮬레이션을 구현 방식에 따라 추가 할 수 있습니다 (예 : 일부 시뮬레이션 시간 간격으로 실행).

testbench에서 상수 clock_period가 (아직) 사용되지 않았습니다.

관련 문제