LabVIEW DSP Module for Speedy33, DSK6711, DSK6713에서 지원되는 numeric 데이터 타입은 어떤 것이 있습니까?



주요한 소프트웨어:
주요한 소프트웨어 버전: 1.0
문제가 해결된 소프트웨어 버전:
부차적인 소프트웨어: N/A

문제점: 저는 데이터 값을 DSP 모듈에 타겟을 잡을 때 문제가 생깁니다. LabVIEW DSP Module status monitor안에서 show warnings box를 선택하면 아래와 같은 경고 메세지가 뜹니다.

WARNING: Data type not supported. Mapped to single-precision floating-point (SGL). < DBL >
WARNING: Data type not supported. Mapped to 32-bit integer (I32). < I16 >
WARNING: Data type not supported. Mapped to 32-bit integer (I32). < I8 >
WARNING: Data type not supported. Mapped to 32-bit integer (I32). < U32 >
WARNING: Data type not supported. Mapped to 32-bit integer (I32). < U16 >
WARNING: Data type not supported. Mapped to 32-bit integer (I32). < U8 >


이 문제는 DSP 모듈이 몇몇 데이터 타입만을 지원하기 때문에 생기는 것으로 보입니다. LabVIEW DSP Module은 어떤 데이터 타입을 지원하며 잘못된 데이터 타입을 쓰는 것이 VI에 어떤 영향을 미치나요?

솔루션: LabVIEW DSP Module에서는 아래와 같은 데이터 타입의 사용이 허용됩니다.

Double (DBL)
Single (SGL)
Signed 32 Bit Integer (I32)
Signed 16 Bit Integer (I16)
Signed 8 Bit Integer (I8)
Unsigned 32 Bit Integer (U32)
Unsigned 16 Bit Integer (U16)
Unsigned 8 Bit Integer (U8)


그러나 SPEEDY-33, DSK6711, DSK 6713에서는 아래의 두 가지 데이터 타입만이 사용가능합니다.

Single (SGL)
Signed 32 Bit Integer (I32)
LabVIEW DSP Module이 어플리케이션을 타겟 DSP 장치로 다운로드할 때 데이터를 적합한 타입으로 바꾸게 됩니다.

하나의 데이터를 다른 데이터 타입으로 바꾸는 것은 잘못된 변환 또는 데이터의 손실을 가져올 수 있습니다. LabVIEW DSP는 잘못된 데이터 타입이 쓰였을 때 에러를 발생시키지 않고 경고를 보낸다는 것을 기억하십시오. 이런 상태에서도 어플리케이션은 컴파일되고 DSP 타겟에서 작동하게 됩니다.

Double(DBL)은 64비트 부동형 값이고 Single(SGL)은 32비트 부동형 값입니다. 만약 DBL 데이터 타입을 써서 숫자가 충분히 커지면 데이터 값은 무한대(INF)로 변환될 것입니다. 예를 들면, Double형의 1.11111E+49라는 값은 DSP 보드에서는 무한대(INF)로 인식될 것입니다.

부호가 있는 32비트 정수(I32)는 -2147483648부터 2147483647사이에 있는 10진수값입니다. I32가 부호가 있기 때문에 마지막 비트는 부호를 표현하기 위해 쓰이므로 사실은 31비트 정수가 될 것입니다. 부호가 없는 32비트 정수(U32)형이 I32로 변환될 때 큰 양수부터 음수로 변환될 것입니다. 만약 U32값의 왼쪽 끝의 비트값이 1이라면 I32로 변환될 때 부적절한 변환이 일어날 것입니다. 예를 들면, U32형의 4294967294라는 값은 현재 지원되는 세 개의 DSP 보드에서는 -1로 인식될 것입니다.

이러한 잘못된 변환은 수학 함수를 적용했을 때 더 명확해집니다. 예를 들면 4294967294 곱하기 5를 하면 결과는 21474836470 대신 -5가 될 것입니다.

또한, LabVIEW Embedded는 데이터 타입의 한계를 넘어가도 그것을 알려주는 어떤 에러도 발생시키지 않는다는 것을 유의하십시오. 만약 두개의 큰 I32형의 숫자값, 예를 들면 2000000000과 2000000000을 곱한다고 하면 결과는 -1651507200이 될 것입니다. 이것이 틀린 결과라는 것을 알려주는 대신 LabVIEW DSP는 부적절한 곱셈이 수행되었다는 것을 알려주는 어떤 에러도 보여주지 않을 것입니다. 기본적으로, 두 값이 수학적으로 조합되어 데이터 타입의 한계를 넘는 결과를 초래하는 어떤 경우에 있어서도 LabVIEW DSP 모듈은 아무런 에러를 표시하지 않을 것입니다.

이러한 변환 문제를 피하려면 single형 변수와 I32형 변수만 쓰십시오. 상수, 컨트롤, 인디케이터의 데이터 타입은 객체에 오른쪽 클릭을 하고 representation 메뉴에서 적절한 데이터 타입을 고르는 것으로 변형이 가능합니다.

데이터 타입의 범위 초과를 피하기 위한 유일한 방법은 LabVIEW 프로그래머가 조심하는 길 뿐입니다.

관련 링크:

첨부:





리포트 날짜: 05/17/2005
마지막 업데이트: 01/19/2006
문서 번호: 3LGEDHAJ