문서 ID: 000077812 콘텐츠 형태: 문제 해결 마지막 검토일: 2012-09-11

Quartus II 소프트웨어 버전 8.1에서 일부 VHDL 트리스테이트 신호가 잘못 추론되는 이유는 무엇입니까?

환경

BUILT IN - ARTICLE INTRO SECOND COMPONENT
설명

Quartus® II 소프트웨어 버전 8.1에는 VHDL 트리스테이트 신호가 멀티플렉서로 잘못 추론될 수 있는 문제가 있습니다. 신호가 장치 출력 핀에 연결된 경우 컴파일 결과로 인해 핀이 3중 상태 출력으로 작동하는 대신 보드로 구동될 수 있습니다.

소프트웨어 문제는 VHDL 디자인 엔터티에 기본값 'Z' 이 포함된 사용되지 않는 출력 포트가 포함된 경우에만 발생합니다(즉, 출력 포트에는 엔터티 선언에 3중 상태 할당이 'Z' 있지만 디자인의 신호에 대한 명시적 할당은 없음). 문제가 발생하면 바깥쪽 아키텍처의 동작 명령문에 의해 설명되는 모든 유추된 트리스테이트 논리가 멀티플렉서로 잘못 유추됩니다. 문제는 아키텍처의 단일 계층으로 제한되며 다른 엔터티가 다음을 포함하는 'Z'기본값과 동일한 유형의 사용되지 않는 출력 포트를 갖지 않는 한 인스턴스화된 계층이 아닙니다. 이 문제를 설명하는 작은 디자인에 대해서는 이 솔루션의 끝에 있는 예를 참조하십시오.

영향을 받는 트리스테이트 신호가 내부 트라이스테이트 연결인 경우, Altera 디바이스에 내부 트리스테이트 로직이 없기 때문에 멀티플렉서 추론이 필요합니다. 그러나 삼중 명시된 엔티티 포트가 장치의 I/O 핀을 공급하는 경우 이 소프트웨어 동작으로 인해 사용되지 않는 출력 핀이 삼중 상태 출력으로 작동하는 대신 보드로 구동되어 시스템에서 신호 경합이 발생할 수 있습니다.

문제를 해결하고 정의된 3중 상태 동작을 유추하려면 기본 명령문에 의존하는 대신 설계에서 신호 할당을 사용하여 사용되지 않는 출력 핀을 3중 상태 값에 명시적으로 할당합니다. 예를 들어, unused_output <= 'Z'; 또는 unused_output <= (others => 'Z');

Quartus II 소프트웨어 버전 8.1에서 이 문제를 해결하기 위한 패치를 사용할 수 있습니다. Windows 패치 0.34 또는 Linux 패치 0.34를 다운로드한 다음 패치를 설치하고 디자인을 다시 컴파일합니다.

이 소프트웨어 문제는 Quartus II 소프트웨어의 향후 버전에서도 해결될 예정입니다.

다음은 이 문제의 영향을 받는 예제 디자인입니다.

library ieee;
use ieee.std_logic_1164.all;
entity example is
port (
en : in std_logic;
data : in std_logic;
unused_output: out std_logic := 'Z';
other_output : out std_logic);
end example;

architecture rtl of example is
begin
-- other_output should be tri-state but won't be tri-state due to this problem
other_output <= data when en = '1' else 'Z';
end rtl;

Quartus II 소프트웨어 버전 8.1을 사용하는 위의 설계 예에서 두 출력 핀에 대한 올바른 트리스테이트 동작을 유추하려면 아키텍처에 다음 명령문을 추가합니다.
unused_output <= 'Z';

관련 제품

이 문서는 다음 항목에 적용됩니다. 1 제품

인텔® 프로그래밍 가능 장치

이 페이지의 콘텐츠는 원본 영어 콘텐츠에 대한 사람 번역 및 컴퓨터 번역의 조합으로 완성되었습니다. 이 콘텐츠는 편의와 일반적인 정보 제공을 위해서만 제공되었으며, 완전하거나 정확한 것으로 간주되어선 안 됩니다. 이 페이지의 영어 버전과 번역 간 모순이 있는 경우, 영어 버전이 우선적으로 적용됩니다. 이 페이지의 영어 버전을 확인하십시오.