2016-08-04 2 views
2

나는 VHDL 놈이므로 몇 가지 상수를 만들고 16 진수를 할당하려고하지만 오류가 계속 발생합니다. VHDL : 정수에 16 진수 값 사용

나는 ... 상수 FOO_CONST0x38이 같이

와 동일 할

constant FOO_CONST : integer := x"38";

오류 : 나는 몇 가지를 시도했습니다

Type integer does not match with a string literal

성공하지 못한 변종.

어떤 도움을 주셔서 감사합니다. 감사!

- 마이크

+1

정수 비트가 없습니다. 16 진수 값은 1 차원 배열에 할당 할 수있는 문자열 값과 동일한 비트 문자열 리터럴입니다. 정수는 '16 # 38 #'형식의 리터럴 인 추상 리터럴을 필요로합니다. 16이 기본이면 '#'은 구분 기호입니다. IEEE Std 1076-2008을 참조하십시오. 15. 어휘 요소, 15.5.3 기반 리터럴. 또한 ieee.std_logic_1164.all을 사용할 수도 있습니다. (FIN_CONST : integer : = to_integer (unsigned '(x "38"));'비트 문자열 리터럴을 필수 정규 표현식으로 부호 확장자를 지정하는 정수로 변환합니다. – user1155120

+0

당신이 원하는 것은 다음과 같습니다 : 상수 FOO_CONST : 부호없는 (7 downto 0) : = x "38"; 합성을 위해 VHDL의 정수보다 더 자주 unsigned 또는 std_logic_vector를 사용하는 경향이 있습니다. –

+0

'#'[numeric literal] (http://www.ics.uci.edu/~jmoorkan/vhdlref/literals.html)을 사용할 수도 있습니다. 접두어로 16을 사용하면 기본 16 숫자가 적용됩니다. – Bettorun

답변

4

당신은 형식 base#value#을 사용하여 정수를위한 기반을 지정할 수 있습니다

constant FOO_CONST : integer := 16#38#;