2016-08-21 6 views
0

추가 작업에 vhdl에 + 연산자가있는 경우 왜 ieee.std_logic_unsigned를 추가해야합니까?이 라이브러리에는 vhdl에 + 연산자가 이미있는 경우 + 함수가 정의 된 이유는 무엇입니까?+ 연산자와 + 함수의 차이점은 vhdl입니까?

+0

사전 정의 된 수학 연산은 배열 유형에 기본적으로 제공되지 않습니다. 라이브러리 IEEE의 특정 패키지에 있습니다. IEEE Std 1076-2008 16.8 표준 합성 패키지, 특히 비트 및 표준 논리 값을 사용하는 산술 용 16.8.5 패키지를 참조하십시오. -2008 개정에서 이러한 패키지는 표준의 일부입니다. – user1155120

답변

1

모든 VHDL 연산자와 마찬가지로 + 연산자에도 기능 표기법이 있습니다. a+b"+"(a,b)은 정확히 같습니다. 이것의 좋은 점은 기본적으로 정의되지 않은 유형에서 작동하도록 VHDL 연산자를 오버로드 할 수 있다는 것입니다. 자신의 형식 인 my_type과 voilà의 두 인수를 취하는 "+" 함수를 정의하기 만하면됩니다. 이제 a+b을 사용할 수 있습니다. abmy_type입니다.

std_ulogic_vector 또는 std_logic_vector에는 + 연산자가 기본적으로 정의되어 있지 않습니다. 이건 사실이다. 당신은 이것에 동의 할 수 없지만 그것은 VHDL 표준입니다. 따라서 이러한 유형과 함께 사용하려면 원하는 방식으로 정의해야합니다.

ieee.std_logic_unsigned 패키지는 산술 연산자를 오버로드합니다. 표준 패키지가 아니며 표준 ieee 라이브러리에는이없는 이 없습니다. 이 아니라을 사용하십시오. 표준 ieee.numeric_std 대신에 unsignedsigned 유형을 선언하고 산술 연산자를 오버로드합니다.

user1155120에서 언급했듯이 VHDL 2008에는 몇 가지 새로운 합성 패키지가 도입되었습니다. 그 중 하나는 ieee.numeric_std_unsigned이고 부호없는 자연수로 간주되는 std_ulogic_vector 유형의 산술 연산자가 오버로드됩니다.

+0

IEEE Std 1076-2008 16.8.5 비트 및 표준 논리 값을 사용하는 산술 용 패키지, 16.8.5.1 단락 5 : "... 마찬가지로, NUMERIC_STD_UNSIGNED 패키지는 NUMERIC_STD 패키지에서 제공하는 것과 동일한 연산을 제공합니다. UNSIGNED 피연산자이지만 부호없는 2 진 정수를 나타내는 것으로 해석되는 STD_ULOGIC_VECTOR 피연산자에서 작동합니다. " 피연산자와 결과 시간을 부호없는 값으로 변환합니다. -2008 하위 유형 STD_LOGIC_VECTOR (해결 된) STD_ULOGIC_VECTOR; ' – user1155120

+0

감사합니다!, 훌륭한 답변! –

+0

우리는 20n 이후에 <= b 및 c를 쓸 때이 [20n 후]가 시뮬레이션에 영향을 미치거나 실제 디지털 모델이 비트 파일 형태로로드됨을 알 수 있습니까? –

관련 문제