Hyperbolic Tangent HDL Optimized
라이브러리:
Fixed-Point Designer HDL Support /
Math Operations
설명
Hyperbolic Tangent HDL Optimized 블록은 HDL 코드 생성에 최적화된 CORDIC 기반 구현을 사용하여 계산된, x의 쌍곡탄젠트를 반환합니다.
예제
포트
입력
x — 라디안 단위의 각도
유한한 실수 스칼라
라디안 단위의 각도로, 유한한 실수 스칼라로 지정됩니다. x가 고정소수점 또는 스케일링된 double형 데이터형인 경우 x는 이진 소수점 스케일링을 사용해야 합니다. 고정소수점 데이터형에는 기울기-편향 표현이 지원되지 않습니다.
데이터형: single
| double
| fixed point
validIn — 입력이 유효한지 여부
Boolean
스칼라
입력이 유효한지 여부로, 부울 스칼라로 지정됩니다. 이 제어 신호는 x 입력 포트의 데이터가 유효한 경우 이를 표시합니다. 이 값이 1
(true
)이면 블록은 x 입력 포트의 값을 캡처합니다. 이 값이 0
(false
)이면 블록은 입력 샘플을 무시합니다.
데이터형: Boolean
출력
y — x
의 쌍곡탄젠트
스칼라
x의 값에 대한 쌍곡탄젠트로, 스칼라로 반환됩니다. y의 값은 x의 쌍곡탄젠트에 대한 CORDIC 기반 근삿값입니다. 함수에 대한 입력이 부동소수점인 경우 출력 데이터형은 입력 데이터형과 동일합니다. 입력이 고정소수점 데이터형인 경우 출력은 입력과 동일한 워드 길이를 갖고 소수부 길이는 워드 길이보다 2가 작습니다.
데이터형: single
| double
| fixed point
validOut — 출력 데이터가 유효한지 여부
Boolean
스칼라
출력 데이터가 유효한지 여부로, 부울 스칼라로 반환됩니다. 이 제어 신호의 값이 1
(true
)이면 블록은 출력 y를 제대로 계산한 것입니다. 이 값이 0
(false
)이면 출력 데이터가 유효하지 않은 것입니다.
데이터형: Boolean
ready — 블록이 준비되었는지 여부
Boolean
스칼라
블록이 준비되었는지 여부로, 부울 스칼라로 반환됩니다. 이 제어 신호는 블록이 새 입력 데이터에 준비가 된 경우 이를 표시합니다. 이 값이 1(true
)이고 validIn 값이 1(true
)이면 블록은 다음 시간 스텝에서 입력 데이터를 받습니다. 이 값이 0(false
)이면 블록은 다음 시간 스텝에서 입력 데이터를 무시합니다.
데이터형: Boolean
세부 정보
알고리즘
CORDIC
CORDIC은 COordinate Rotation DIgital Computer의 머리글자어입니다. 기븐스 회전 기반 CORDIC 알고리즘은 시프트-덧셈 반복 연산만 필요하기 때문에 사용 가능한 가장 하드웨어 효율적인 알고리즘 중 하나입니다(참고 문헌 참조). CORDIC 알고리즘에서는 명시적 곱셈기가 필요하지 않습니다.
블록은 입력 데이터형을 기반으로 CORDIC 알고리즘이 수행할 반복 횟수 niters
를 자동으로 결정합니다.
입력 x의 데이터형 | niters |
---|---|
single형 | 23 |
double형 | 52 |
고정소수점 | x의 워드 길이보다 1이 작은 수. CORDIC의 최소 반복 횟수는 7 입니다. |
하드웨어 효율적인 고정소수점 계산
Hyperbolic Tangent HDL Optimized 블록은 이진 소수점 스케일링을 적용한 고정소수점 데이터에 대해 HDL 코드 생성을 지원합니다. 이 블록은 이러한 응용 사례를 염두에 두고 설계되었으며, 하드웨어별 의미 체계와 최적화를 적용합니다. 그러한 최적화 중 하나가 리소스 공유입니다.
FPGA 또는 ASIC 소자에 복잡한 알고리즘을 배포할 때 주어진 계산에서 리소스 사용량과 총 처리량이 상호 절충되는 경우가 종종 있습니다. 완전히 파이프라인으로 구현되고 병렬화된 알고리즘은 가장 큰 처리량을 보이지만, 실제 소자에 배포할 때 리소스 사용량이 지나치게 높은 경우가 있습니다. 하나 이상의 핵심 계산 회로를 중심으로 스케줄링 논리를 구현하면 계산 내내 리소스를 재사용할 수 있습니다. 그러면 총 처리량은 줄어들지만 사용량이 극히 적은 구현이 생성됩니다. 이는 대개의 경우 허용되는 상호 절충 관계로, 리소스 공유 설계에서도 전반적인 대기 시간 요구 사항을 충족할 수 있기 때문입니다.
Hyperbolic Tangent HDL Optimized 블록의 핵심 계산 유닛은 모두 계산 라이프사이클 내내 재사용됩니다. 기븐스 회전 수행에 사용되는 CORDIC 회로뿐만 아니라 각도 업데이트에 사용되는 가산기와 곱셈기 등이 여기에 해당됩니다. 이 덕분에 FPGA 또는 ASIC 소자에 배포 시 DSP 리소스와 패브릭 리소스가 모두 절약됩니다.
쌍곡탄젠트 HDL에 최적화된 블록과 상호 작용하는 방법
Hyperbolic Tangent HDL Optimized 블록은 ready 출력이 high(블록이 새 계산을 시작할 준비가 되었음을 나타냄)일 때 데이터를 받습니다. 입력 데이터를 블록에 전송하려면 validIn 신호를 어설션해야 합니다. 입력값을 제대로 등록한 경우 블록은 준비 신호에 대한 어설션을 취소합니다. 그러면 사용자는 새 입력 전송을 위해 신호가 다시 어설션될 때까지 기다려야 합니다. 다음 파형 다이어그램에 이 프로토콜이 요약되어 있습니다. 참고로, 블록에 대한 첫 번째 유효한 입력이 무시되는데, 블록이 입력 데이터를 받을 준비가 되지 않았기 때문입니다.
블록이 계산을 완료하고 출력을 전송할 준비가 되면 블록은 하나의 클록 주기에 대해 validOut을 어설션합니다. 그러면 블록이 새 입력값을 받을 준비가 되었음을 나타내는 ready가 어설션됩니다.
확장 기능
C/C++ 코드 생성
Simulink® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
고정소수점 데이터형에는 기울기-편향 표현이 지원되지 않습니다.
HDL 코드 생성
HDL Coder™를 사용하여 FPGA 및 ASIC 설계를 위한 VHDL, Verilog 및 SystemVerilog 코드를 생성할 수 있습니다.
HDL Coder™는 HDL 구현과 합성된 논리에 영향을 주는 추가 구성 옵션을 제공합니다.
이 블록에는 하나의 디폴트 HDL 아키텍처가 있습니다.
일반 | |
---|---|
ConstrainedOutputPipeline | 기존 지연을 설계 내부로 이동하여 출력에 배치하는 레지스터 개수입니다. 분산된 파이프라이닝은 이러한 레지스터를 다시 분산하지 않습니다. 디폴트 값은 |
InputPipeline | 생성된 코드에 삽입할 입력 파이프라인 단계의 개수입니다. 분산 파이프라이닝과 제약이 있는 출력 파이프라이닝은 이러한 레지스터를 이동할 수 있습니다. 디폴트 값은 |
OutputPipeline | 생성된 코드에 삽입할 출력 파이프라인 단계의 개수입니다. 분산 파이프라이닝과 제약이 있는 출력 파이프라이닝은 이러한 레지스터를 이동할 수 있습니다. 디폴트 값은 |
고정소수점 데이터형만 지원합니다.
버전 내역
R2020a에 개발됨
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)