주요 콘텐츠

Trigonometric Function

입력에 대해 지정된 삼각 함수

  • Trigonometric Function block

라이브러리:
Simulink / Math Operations
HDL Coder / Math Operations
HDL Coder / HDL Floating Point Operations

설명

Trigonometric Function 블록은 일반적인 삼각 함수 연산을 수행한 다음, 결과를 rad 또는 rev 단위로 출력합니다.

지원되는 함수

함수 파라미터 목록에서 다음 함수 중 하나를 선택할 수 있습니다.

함수설명수학 표현식 이에 상응하는 MATLAB® 함수
sin

입력의 사인

sin(u)

sin
cos

입력의 코사인

cos(u)

cos
tan

입력의 탄젠트

tan(u)

tan
asin

입력의 역사인

asin(u)

asin
acos

입력의 역코사인

acos(u)

acos
atan

입력의 역탄젠트

atan(u)

atan
atan2

입력의 4사분면 역탄젠트

atan2(u)

atan2
sinh

입력의 쌍곡사인

sinh(u)

sinh
cosh

입력의 쌍곡코사인

cosh(u)

cosh
tanh

입력의 쌍곡탄젠트

tanh(u)

tanh
asinh

입력의 역쌍곡사인

asinh(u)

asinh
acosh

입력의 역쌍곡코사인

acosh(u)

acosh
atanh

입력의 역쌍곡탄젠트

atanh(u)

atanh
sincos

입력의 사인, 입력의 코사인

cos + jsin

입력의 복소수 지수

CORDIC 근사법

CORDIC은 COordinate Rotation DIgital Computer의 머리글자어입니다. 기븐스 회전 기반 CORDIC 알고리즘은 시프트-덧셈 반복 연산만 필요하기 때문에 사용 가능한 가장 하드웨어 효율적인 알고리즘 중 하나입니다. 자세한 내용은 세부 정보 항목을 참조하십시오. 블록 입력에는 추가적인 요구 사항이 있습니다.

함수sin, cos, sincos 또는 cos + jsin으로 설정하고 근사법CORDIC로 설정하는 경우에 대한 자세한 내용은 Port_1 항목을 참조하십시오.

다음 표에는 입력이 유효하지 않은 경우 수행되는 작업이 요약되어 있습니다.

블록 사용유효하지 않은 입력의 결과
시뮬레이션 모드오류가 발생합니다.
생성된 코드정의되지 않은 동작이 발생합니다. 생성된 코드에서 이러한 정의되지 않은 동작에 의존하지 마십시오.

룩업 근사법

함수sin, cos, sincos 또는 cos + jsin으로 설정하고 근사법룩업으로 설정하는 경우에 대한 자세한 내용은 Port_1 항목을 참조하십시오.

예제

모두 확장

이 예제에서는 Trigonometric Function 블록을 사용하여 부동소수점 입력의 사인을 계산하는 방법을 보여줍니다. 입력 데이터형이 부동소수점이고 근사법none이므로 Trigonometric Function 블록의 출력은 입력과 동일한 데이터형을 갖습니다.

이 예제에서는 Trigonometric Function 블록을 사용하여 고정소수점 입력 신호에 대한 sincos의 CORDIC 근사를 계산하는 방법을 보여줍니다.

Trigonometric Function 블록 파라미터는 다음과 같습니다.

  • 함수: sincos

  • 근사법: CORDIC

  • 반복 횟수: 11

CORDIC 근사법을 사용할 때 Trigonometric Function 블록에 대한 입력은 범위 [-2pi,2pi) 내에 있어야 합니다. 입력이 고정소수점 신호이고 근사법CORDIC로 설정되어 있으므로 Trigonometric Function 함수의 출력 유형은 fixdt(1,13,11)입니다. 출력 소수부 길이는 입력 워드 길이에서 2를 뺀 값입니다.

이 예제에서는 Trigonometric Function 블록의 두 가지 서로 다른 구성에서 복소수 지수 출력을 비교합니다.

근사법CORDIC인 경우 입력 데이터형은 고정소수점일 수 있으며, 이 경우에는 fixdt(1,16,2)입니다. 출력 소수부 길이는 입력 워드 길이에서 2를 뺀 값이므로 출력 데이터형은 fixdt(1,16,14)입니다.

근사법None인 경우 입력 데이터형은 부동소수점이어야 합니다. 출력 데이터형은 입력 데이터형과 동일합니다.

제한 사항

  • 근사법CORDIC 또는 룩업으로 설정된 경우에만 고정소수점 입력 신호를 사용할 수 있습니다. CORDIC 및 룩업 근사법은 sin, cos, sincos, cos + jsin, atan2 함수에 사용할 수 있습니다.

  • 복소 입력 신호는 이 블록에서 atan2를 제외한 모든 함수에 지원됩니다.

  • 근사법룩업으로 설정한 경우 데이터 점 개수는 다음에 의해 제한됩니다.

    • smallEnoughNumDataPoints = 2(inputFractionLen-2)+1

    • bigEnoughFractionLen = log2(numberOfDataPoints - 1)+2

    여기서

    • smallEnoughNumDataPoints는 지정된 입력 소수부 길이 inputFractionLen으로 표현되는 최대 데이터 점 개수입니다.

    • bigEnoughFractionLen은 지정된 데이터 점 개수 numberOfDataPoints로 표현해야 하는 최소 소수부 길이입니다.

  • 함수sin, cos, sincos 또는 cos + jsin으로 설정하고 근사법CORDIC로 설정한 경우 이 블록은 다음과 같은 제한을 갖습니다.

    • 부호 있는 고정소수점 데이터형을 사용할 때 입력 각도는 범위 [–2π, 2π)rad 이내여야 합니다.

    • 부호 없는 고정소수점 데이터형을 사용할 때 입력 각도는 범위 [0, 2π)rad 이내여야 합니다.

  • 함수atan2로 설정하고 근사법CORDIC로 설정한 경우 이 블록은 다음과 같은 제한을 갖습니다.

    • 입력들의 크기가 동일하거나 적어도 하나의 값이 스칼라 값이어야 합니다.

    • 두 입력이 동일한 데이터형을 사용해야 합니다.

    • 부호 있는 고정소수점 데이터형을 사용할 때 워드 길이는 126 이하여야 합니다.

    • 부호 없는 고정소수점 데이터형을 사용할 때 워드 길이는 125 이하여야 합니다.

  • 함수sin, cos, sincos 또는 cos + jsin으로 설정하고 근사법룩업으로 설정한 경우 이 블록은 다음과 같은 제한을 갖습니다.

    • 부호 있는 고정소수점 데이터형을 사용할 때 입력 각도는 범위 [-2π,2π]rad 이내여야 합니다.

    • 부호 없는 고정소수점 데이터형을 사용할 때 입력 각도는 범위 [0,2π)rad 이내여야 합니다.

  • 함수atan2로 설정하고 근사법룩업으로 설정한 경우 이 블록은 다음과 같은 제한을 갖습니다.

    • 입력들의 크기가 동일하거나 적어도 하나의 값이 스칼라 값이어야 합니다.

    • 두 입력이 동일한 데이터형을 사용해야 합니다.

포트

입력

모두 확장

스칼라, 벡터 또는 행렬로 지정되는 입력입니다. 이 블록은 다음 데이터형의 입력 신호를 받습니다.

함수입력 데이터형
  • sin

  • cos

  • sincos

  • cos + jsin

  • atan2

  • 부동소수점

  • 고정소수점(근사법CORDIC 또는 룩업인 경우에만)

  • tan

  • asin

  • acos

  • atan

  • sinh

  • cosh

  • tanh

  • asinh

  • acosh

  • atanh

  • 부동소수점

CORDIC 근사 고정소수점 데이터형 전파:

입력 데이터형함수출력 데이터형

고정소수점, 부호 있음 또는 부호 없음

sin, cos, sincoscos + jsin

fixdt(1, WL, WL - 2), 여기서 WL은 입력 워드 길이임

이 고정소수점 데이터형은 CORDIC 알고리즘에 최적 정밀도를 제공합니다.

고정소수점, 부호 있음

atan2

fixdt(1, WL, WL – 3)

고정소수점, 부호 없음

atan2

fixdt(1, WL, WL – 2)

룩업 근사 고정소수점 데이터형 전파:

입력 데이터형함수출력 데이터형

고정소수점, 부호 있음

sin, cos, sincos, cos + jsin, atan2

fixdt(1, WL, FL)

고정소수점, 부호 없음

sin, cos, sincos, cos + jsin, atan2

fixdt(1, WL - 1, FL)

종속성

  • 함수atan2로 설정하면 이 블록에는 2개의 입력 포트가 표시됩니다. 첫 번째 입력(Port_1)은 함수 인수의 y축 또는 허수부입니다. 두 번째 입력(Port_2)은 함수 인수의 x축 또는 실수부입니다.

  • 근사법없음, CORDIC 또는 룩업으로 설정하면 부동소수점 입력 신호를 사용할 수 있습니다. 그러나 블록 출력 데이터형은 선택한 다음 근사법 옵션에 따라 달라집니다.

    입력 데이터형근사법출력 데이터형

    부동소수점

    안 함

    출력 신호 유형의 선택 항목에 따라 다릅니다. 옵션은 auto(입력의 데이터형과 동일), real 또는 complex입니다.

    부동소수점

    CORDIC

    입력과 동일. CORDIC 근사법을 사용하여 블록 출력을 계산하는 경우에는 출력 신호 유형을 사용할 수 없습니다.

    부동소수점

    룩업

    입력과 동일. 룩업 근사법을 사용하여 블록 출력을 계산하는 경우에는 출력 신호 유형을 사용할 수 없습니다.

CORDIC 근사법 및 룩업 근사법의 경우:

  • sin, cos, sincos, cos + jsin, atan2 함수의 경우 입력이 실수여야 합니다.

  • sin, cos, sincos, atan2 함수의 경우 출력이 실수입니다.

  • cos + jsin 함수의 경우 출력이 복소수입니다.

자세한 내용은 제한 사항 항목을 참조하십시오.

데이터형: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

atan2 함수 인수의 x축 또는 실수부에 대한 입력입니다. 함수atan2로 설정하면 이 블록에는 2개의 입력 포트가 표시됩니다. 첫 번째 입력(Port_1)은 함수 인수의 y축 또는 허수부입니다. 두 번째 입력(Port_2)은 함수 인수의 x축 또는 실수부입니다. (다양한 블록 방향에서의 포트 순서에 대한 설명은 Identify Port Location on Rotated or Flipped Block 항목을 참조하십시오.)

고정소수점 입력 신호는 근사법CORDIC 또는 룩업으로 설정한 경우에만 지원됩니다.

종속성

이 포트를 활성화하려면 함수atan2로 설정하십시오.

데이터형: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

출력

모두 확장

지정된 삼각 함수를 하나 이상의 입력(단위: rad)에 적용한 결과입니다. 각 함수는 다음을 지원합니다.

  • 스칼라 연산

  • 요소별 벡터 및 행렬 연산

데이터형: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

입력 신호의 사인(단위: rad 또는 rev)입니다.

종속성

이 포트를 활성화하려면 함수sincos로 설정하십시오.

데이터형: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

입력 신호의 코사인(단위: rad 또는 rev)입니다.

종속성

이 포트를 활성화하려면 함수sincos로 설정하십시오.

데이터형: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point

파라미터

모두 확장

알고리즘

삼각 함수를 지정합니다. 블록 아이콘의 함수 이름은 선택한 항목에 일치하도록 변경됩니다.

함수sin, cos, sincos 또는 cos + jsin으로 설정하고 근사법CORDIC로 설정하는 경우에 대한 자세한 내용은 제한 사항 항목을 참조하십시오.

프로그래밍 방식의 사용법

블록 파라미터: Operator
유형: 문자형 벡터
값: 'sin' | 'cos' | 'tan' | 'asin' | 'acos' | 'atan' | 'atan2' | 'sinh' | 'cosh' | 'tanh' | 'asinh' | 'acosh' | 'atanh' | 'sincos' | 'cos + jsin'
디폴트 값: 'sin'

출력을 계산하기 위한 근사 유형을 지정합니다.

근사법지원되는 데이터형이 방법을 사용하는 경우
안 함(디폴트 값)

부동소수점

디폴트 테일러 급수 알고리즘을 사용하려는 경우.

CORDIC

부동소수점 및 고정소수점

빠른 근삿값 반복 계산을 원하는 경우.

룩업

편향 값이 0이고 기울기 값이 2의 거듭제곱인 부동소수점(double형 및 single형) 및 고정소수점

빠른 근사 룩업 테이블 구현을 원하는 경우.

함수sin, cos, sincos 또는 cos + jsin으로 설정하고 근사법CORDIC로 설정하는 경우에 대한 자세한 내용은 제한 사항 항목을 참조하십시오.

종속성

  • 이 파라미터를 활성화하려면 함수sin, cos, sincos, cos + jsin 또는 atan2로 설정하십시오.

  • 고정소수점 입력 신호를 사용하려면 근사법CORDIC 또는 룩업으로 설정해야 합니다.

  • 테이블 데이터형 파라미터를 활성화하려면 이 방법을 룩업으로 설정하십시오.

프로그래밍 방식의 사용법

블록 파라미터: ApproximationMethod
유형: 문자형 벡터
값: 'None' | 'CORDIC' | 'Lookup'
디폴트 값: 'None'

입력값이 절점 값 사이에 있는 경우, 이 블록은 이웃한 절점을 사용하여 출력값을 보간합니다. 보간 방법에 대한 자세한 내용은 Interpolation Methods 항목을 참조하십시오.

프로그래밍 방식의 사용법

블록 파라미터: InterpMethod
유형: 문자형 벡터
값: 'Linear point-slope' | 'Flat'
디폴트 값: 'Linear point-slope'

CORDIC 알고리즘을 수행할 때의 반복 횟수를 지정합니다. 디폴트 값은 11입니다.

  • 블록 입력이 부동소수점 데이터형을 사용하는 경우 반복 횟수는 양의 정수일 수 있습니다.

  • 블록 입력이 고정소수점 데이터형인 경우 반복 횟수는 워드 길이를 초과할 수 없습니다.

    예를 들어, 블록 입력이 fixdt(1,16,15)인 경우 워드 길이는 16입니다. 이 경우 반복 횟수는 16을 초과할 수 없습니다.

종속성

이 파라미터를 활성화하려면 함수 파라미터와 근사법 파라미터를 다음과 같이 설정해야 합니다.

  • 함수sin, cos, sincos, cos + jsin 또는 atan2로 설정합니다.

  • 근사법CORDIC로 설정합니다.

프로그래밍 방식의 사용법

블록 파라미터: NumberOfIterations
유형: 문자형 벡터
값: 양의 정수, 고정소수점 입력의 워드 길이보다 작거나 같아야 함
디폴트 값: '11'

룩업 방법에 대한 각도 단위를 radian 또는 revolution으로 지정합니다.

종속성

이 파라미터를 활성화하려면 다음을 수행하십시오.

  • 함수sin, cos, sincos, cos + jsin 또는 atan2로 설정합니다.

  • 근사법룩업으로 설정합니다.

프로그래밍 방식의 사용법

블록 파라미터: AngleUnit
유형: 문자형 벡터
값: 'radian' | 'revolution'
디폴트 값: 'radian'

룩업 테이블의 데이터 점 개수를 스칼라 실수로 지정합니다.

종속성

이 파라미터를 활성화하려면 다음을 수행하십시오.

  • 함수sin, cos, sincos, cos + jsin 또는 atan2로 설정합니다.

  • 근사법룩업으로 설정합니다.

프로그래밍 방식의 사용법

블록 파라미터: NumberOfDataPoints
유형: 문자형 벡터
값: 스칼라
디폴트 값: '16'

Trigonometric Function 블록의 출력 신호 유형을 auto, real 또는 complex로 지정합니다.

함수입력 신호 유형출력 신호 유형
자동실수복소수
함수 파라미터에 대한 모든 선택 항목 실수실수실수복소수
복소수복소수오류복소수

종속성

근사법CORDIC로 설정하면 이 파라미터가 비활성화됩니다.

참고

함수atan2인 경우 시뮬레이션 또는 코드 생성에 복소 입력 신호가 지원되지 않습니다.

프로그래밍 방식의 사용법

블록 파라미터: OutputSignalType
유형: 문자형 벡터
값: 'auto' | 'real' | 'complex'
디폴트 값: 'auto'

acosasin의 경우, 이 체크박스를 선택하면 범위를 벗어난 입력에 대한 방지를 제거하여 중복을 줄일 수 있습니다.

  • 이 체크박스의 선택을 해제하면 방지가 활성화됩니다. 블록이 연산을 수행하기 전에 범위를 벗어난 입력을 1 또는 -1로 포화 처리합니다. 범위를 벗어난 입력을 검사하는 코드가 생성 코드에 포함됩니다.

  • 이 체크박스를 선택하면 방지가 제거됩니다. 블록이 모든 연산을 입력값에 대한 변경 없이 수행합니다. 범위를 벗어난 입력을 검사하는 코드가 생성 코드에 포함되지 않습니다.

입력이 이미 범위 내에 있는 경우, 이 체크박스를 활성화하면 중복을 제거할 수 있습니다.

종속성

함수acosasin으로 설정하면 이 파라미터가 활성화됩니다.

프로그래밍 방식의 사용법

블록 파라미터: RemoveProtectionAgainstOutOfRangeInput
유형: 문자형 벡터
값: 'off' | 'on'
디폴트 값: 'off'

샘플 간의 시간 간격을 지정합니다. 샘플 시간을 상속하려면 이 파라미터를 -1로 설정하십시오. 자세한 내용은 샘플 시간 지정하기 항목을 참조하십시오.

종속성

이 파라미터는 -1 이외의 값으로 설정한 경우에만 표시됩니다. 자세한 내용은 Blocks for Which Sample Time Is Not Recommended 항목을 참조하십시오.

프로그래밍 방식의 사용법

프로그래밍 방식으로 블록 파라미터 값을 설정하려면 set_param 함수를 사용하십시오.

파라미터: SampleTime
값: "-1" (디폴트 값) | scalar or vector in quotes

데이터형

룩업 테이블의 데이터형으로, 다음으로 지정됩니다.

  • 상속: 입력을 통해 상속

  • double

  • single

  • fixdt(1,16,0)

  • <데이터형 표현식>

데이터형 설정에 대한 자세한 내용은 Control Data Types of Signals 항목을 참조하십시오.

프로그래밍 방식의 사용법

블록 파라미터: TableDataTypeStr
유형: string형 스칼라 또는 문자형 벡터
값: Inherit: Inherit via input | single | double | fixdt(1,16,0) | 데이터형 표현식
디폴트 값: Inherit: Inherit via input

출력 데이터형의 데이터형 속성을 지정할 방법을 선택합니다. 다음을 선택할 수 있습니다.

  • 상속 — 데이터형을 상속하기 위한 규칙을 지정할 수 있습니다. 예: 상속: 내부 규칙을 통해 상속

  • 내장 — 내장 데이터형을 지정할 수 있습니다.

  • 고정소수점 — 데이터형의 고정소수점 특성을 지정할 수 있습니다.

  • 표현식 — 유효한 데이터형으로 평가되는 표현식을 지정할 수 있습니다. 예: fixdt([],16,0)

종속성

이 파라미터를 활성화하려면 출력 데이터형 파라미터에서 >>를 클릭하십시오.

출력 데이터형의 부호의 유무를 지정합니다.

종속성

이 파라미터를 활성화하려면 모드고정소수점으로 설정하십시오.

출력 데이터형의 스케일링을 지정합니다.

종속성

이 파라미터를 활성화하려면 모드고정소수점으로 설정하십시오.

이 신호에 맞는 데이터형 재정의 모드를 선택합니다.

  • 상속 — 모델에 대해 지정된 데이터형 재정의 설정을 상속합니다.

  • 끄기 — 모델에 대해 지정된 데이터형 재정의 설정을 무시하고 사용자가 지정한 고정소수점 데이터형을 사용합니다.

자세한 내용은 Simulink® 문서의 Specify Data Types Using Data Type Assistant 항목을 참조하십시오.

사용자가 데이터형 재정의를 적용할 때 개별 데이터형에 대해 데이터형 재정의를 끄면 그 설정이 모델에 대한 데이터형보다 우선시 됩니다. 예를 들어, 이 옵션을 사용하여 데이터형이 데이터형 재정의 설정과 관계없이 다운스트림 블록의 요구 사항을 충족하는지 확인할 수 있습니다.

종속성

이 파라미터를 활성화하려면 데이터형 도우미를 표시합니다 버튼을 클릭하고 모드내장 또는 고정소수점으로 설정하십시오.

양자화된 정수를 저장하는 워드의 비트 크기를 지정합니다. 자세한 내용은 Specifying a Fixed-Point Data Type 항목을 참조하십시오.

종속성

이 파라미터를 활성화하려면 모드고정소수점으로 설정하십시오.

고정소수점 데이터형의 소수부 길이를 양의 정수 또는 음의 정수로 지정합니다. 자세한 내용은 Specifying a Fixed-Point Data Type 항목을 참조하십시오.

종속성

이 파라미터를 활성화하려면 다음과 같이 설정하십시오.

  • 모드고정소수점으로 설정

  • 스케일링이진 소수점으로 설정

블록 특성

데이터형

double | fixed pointa | half | integera | single

직접 피드스루

다차원 신호

가변 크기 신호

영점교차 검출

아니요

a 이 블록은 '근사법(Approximation method)'을 CORDIC으로 설정한 경우 고정소수점 데이터형과 기본 정수형을 지원합니다.

세부 정보

모두 확장

참고 문헌

[1] Volder, Jack E., “The CORDIC Trigonometric Computing Technique.” IRE Transactions on Electronic Computers EC-8 (1959); 330–334.

[2] Andraka, Ray “A Survey of CORDIC Algorithm for FPGA Based Computers.” Proceedings of the 1998 ACM/SIGDA Sixth International Symposium on Field Programmable Gate Arrays. Feb. 22–24 (1998): 191–200.

[3] Walther, J.S., “A Unified Algorithm for Elementary Functions,” Proceedings of the Spring Joint Computer Conference, May 18-20, 1971: 379–386.

[4] Schelin, Charles W., “Calculator Function Approximation,” The American Mathematical Monthly 90, no. 5 (1983): 317–325.

확장 기능

모두 확장

PLC 코드 생성
Simulink® PLC Coder™를 사용하여 Structured Text 코드를 생성할 수 있습니다.

버전 내역

R2006a 이전에 개발됨

참고 항목

블록

함수