2014-03-13 4 views
0

내 VHDL 패키지에 상수가 정의되어 있습니다.VHDL MUX 상수 선택

constant USE_OSD : integer := 0; 

그리고 이것은 내 패키지에서 합성하기 전에 변경 한 것입니다. VHDL 코드에서이 상수를 내 MUX 선택 라인으로 사용하고 싶습니다. 어떻게해야합니까? 예를 들어

, 같은 :

s_out <= path_a WHEN (USE_OSD = 0) else path_b; 

감사합니다,

--Rudy

+1

괜찮아 보입니다. 뭐가 문제 야? – fru1tbat

+0

'라이브러리 작업으로 패키지를 VHDL 파일에 추가해야합니다; use work.my_package.all; –

답변

1

이것은 MUX 선택 라인과는 아무 상관이 없습니다.

이 상수 값에 따라 또는 s_out <= path_b;과 같이 정교합니다. 멀티플렉서는 절대 없을 것입니다.

학습 도구로 이것을 실행하고 결과를 살펴보십시오.

+0

"멀티플렉서"라는 용어는 정확하지 않을 수도 있지만, 두 신호 할당 중 하나를 선택하기 위해 상수를 사용하려는 의도가 있다면,이 접근법에서 특히 잘못된 것은 없습니다. – fru1tbat

+0

나는이 접근법에 아무런 문제가 없다는 데 동의한다. 추론 된 mux가 없다는 것을 지적하고 싶었습니다. 이것은 실제로 _less_ 논리를 추론하는 좋은 방법입니다. – Philippe

0

만약 내가 생성을 찾고 있습니다.

path_a: if USE_OSD = 0 generate 
    s_out <= path_a; 
end generate path_a; 
path_b: if USE_OSD /= 0 generate 
    s_out <= path_b; 
end generate path_b; 

내가 VHDL 2008도 allowse 다른 생성 생각 :이

예 C.

에서 전 처리기 명령과 같다.