Bit Arithmetic#
이 항목에서는 ‘ VisualApplets ’ 설계에서 생성된 FPGA 파이프라인에서 비트 폭이 어떻게 동작하는지 설명합니다. 이 항목을 읽은 후에는 링크 비트 폭이 산술 연산 결과를 어떻게 제한하는지, 오버플로를 어떻게 처리하는지, 그리고 cast, clip, shift 연산자를 사용하여 값의 범위를 제어하는 방법을 이해하게 됩니다. 또한 부호 있는 값과 부호 없는 값의 차이, 고정 소수점 숫자의 작동 원리, 그리고 더 넓은 데이터 워드에서 비트 필드를 추출하는 방법도 알게 됩니다.
주요 용어
링크 속성 및 매개변수 종속성에 대해서는 ‘매개변수화 튜토리얼’ 항목을 참조하십시오. 링크의 공식적인 규칙에 대해서는 사용자 설명서의 ‘링크 규칙’을 참조하십시오.
링크 Bit Width 한계 및 연산자 제약 조건#
각각 link 두 모듈(즉, 인스턴스화된 연산자) 간의 Bit Width 속성. 이 속성은 생성된 FPGA 파이프라인이 해당 연결상의 각 픽셀 또는 값에 대해 몇 비트를 사용하는지를 정의합니다. 컬러 링크의 경우, 비트 폭은 모든 색상 구성 요소를 통틀어 적용됩니다. 다음을 갖는 링크에서는 ImageProtocol = VALT_SIGNAL, 비트 폭은 항상 1비트입니다.
링크는 데이터 워드당 최대 64비트를 지원합니다. 연산자가 이보다 더 넓은 결과 값을 산출할 경우, 링크 폭이 이 한도를 초과하기 전에 데이터를 잘라내거나, 형변환하거나, 시프트해야 합니다.
모든 연산자가 모든 비트 폭을 허용하는 것은 아닙니다. 일부 연산자는 1~64비트, 8비트, 12비트 또는 16비트와 같은 특정 범위만 허용합니다. ‘연산자 참조 ( Operator Reference )’의 ‘지원되는 링크 형식(Supported Link Format )’ 표에는 각 연산자에 허용되는 값이 기재되어 있습니다. 또한 설계 창에서 모듈을 마우스 오른쪽 버튼으로 클릭한 후 ‘도움말(Help) ’을 선택하거나 F1 키를 눌러 연산자 도움말을 열 수 있습니다. 이는 ‘연산자 참조’에 수록된 내용과 동일하며, VisualApplets 에서 도구 내 도움말로 제공됩니다.
비트 폭 충돌이 발생하면 먼저 상위 연산자의 출력 링크를 확인하십시오. 다음을 조정하십시오. Bit Width 해당 연산자의 속성을 편집하거나, 다음과 같은 연산자를 삽입할 수 있게 해주는 연산자의 link 속성, 또는 CastBitWidth, ClipHigh, ClipLow, ShiftLeft, 또는 ConvertPixelFormat 경로를 따라 비트 폭을 변경하려면.
링크 속성은 연산자가 이를 변경할 때까지 파이프라인을 따라 전파됩니다. 카메라 출력 링크에서 폭을 설정하거나 처리 경로에 비트 폭 연산자를 삽입하십시오. ‘링크 속성의 전파’ 튜토리얼 항목을 참조하십시오.
Arithmetic 연산의 비트 폭#
Arithmetic 라이브러리의 구현체들은 출력을 도출합니다. Bit Width 자동으로. The 지원되는 Link Format 의 표 Operator 레퍼런스 이 출력들을 다음과 같이 표시합니다. auto. 일반적으로 링크에서 이러한 출력 비트 폭 링크 속성을 직접 편집할 수는 없습니다. 산술 연산 후 비트 폭을 수동으로 변경하려면 다음과 같은 추가 연산자를 사용하십시오. CastBitWidth ~와 함께 ClipHigh 및/또는 ClipLow. 다음 산술 연산자들도 비트 폭을 변경합니다:
더하기와 빼기#
The ADD 연산자는 모든 입력 링크의 픽셀 값을 합산합니다. 이 SUB 이 연산자는 첫 번째 입력의 픽셀 값에서 두 번째 입력의 픽셀 값을 뺍니다.
VisualApplets 입력 비트 폭을 기준으로 출력 비트 폭을 설정합니다. 결과값은 해당 최대값보다 1비트 더 넓어집니다. 만약 ADD, 출력값에 비트 하나가 더 필요할 수 있습니다.

출력 비트 폭은 64비트를 초과해서는 안 됩니다. 이후 ADD 또는 SUB, 다운스트림 연결에서 전달된 링크 폭을 확인하십시오.
곱셈#
The MULT 이 연산자는 두 입력의 픽셀 값을 곱합니다. 하나의 링크에서 허용되는 최대 입력 비트 폭은 32비트입니다. 출력 비트 폭은 두 입력 비트 폭의 합과 같습니다. 8비트 값과 8비트 값을 곱하면 16비트 결과가 나옵니다:

정보
MULT 많은 FPGA 리소스를 사용합니다. 상수 배로 스케일링할 경우, Basler는 다음을 권장합니다. SCALE 또는 ShiftLeft 명령을 사용하십시오.
Division#
The DIV 연산자는 입력 링크의 값을 나눕니다 I1 입력 링크의 값에 따라 I2. 출력 링크 O 정수 몫을 전달합니다. 출력 링크 R 나머지를 반환합니다. 두 출력 모두에서 0으로 나눈 결과는 정의되지 않습니다.
입력 링크의 비트 폭 I2 입력 링크의 비트 폭 이하이어야 합니다. I1. 부호 없는 입력의 경우, 출력 링크에서의 출력 비트 폭은 O 입력 링크의 비트 폭과 동일합니다. I1. 부호가 있는 입력의 경우, 출력 링크에서의 출력 비트 폭은 O 입력 비트 폭과 동일합니다 I1 +1.

DIV 정수 나눗셈을 수행합니다. 이 함수 자체만으로는 소수 자릿수를 보존하지 않습니다. 고정 소수점 나눗셈을 수행하려면 ShiftLeft 나누기 연산을 하기 전에 연산자를 먼저 입력하세요.
소수값에 대한 자세한 내용은 이 주제의 “고정 소수점(Fixed-Point) Arithmetic ” 섹션을 참조하십시오.
정보
DIV 많은 FPGA 리소스를 사용합니다. 2의 거듭제곱으로 나눌 때는 다음을 사용하십시오. ShiftRight 명령을 사용하십시오.
clip 및 cast 연산자를 사용하여 Arithmetic 오버플로우 처리하기#
Arithmetic 오버플로는 계산 결과가 현재 비트 폭으로 표현할 수 있는 범위를 초과할 때 발생합니다. 8비트 무부호 링크의 경우, 이 범위는 0부터 255까지입니다. 200 + 100의 합은 300입니다. 출력 비트가 충분하지 않으면 저장된 값이 잘못됩니다. 오버플로는 잘못된 픽셀 값으로 나타납니다:

Arithmetic 오버플로우 다음에서 처리하는 오버플로 상태와 혼동해서는 안 됩니다. Overflow 오퍼레이터( Synchronization 라이브러리: The Overflow 연산자는 중단할 수 없는 소스의 흐름 제어를 위해 사용됩니다. 이에 대한 자세한 내용은 Overflow 연산자, 참조: 중지 가능 및 중지 불가능 데이터 스트림 튜토리얼 주제.
다음 연산자를 사용하면 산술 오버플로를 해결할 수 있습니다:
ClipHigh 및 ClipLow#
The ClipHigh 이 연산자는 값을 설정 가능한 최대값으로 제한합니다. 최대값을 초과하는 입력 값은 모두 최대값으로 대체됩니다. 이 ClipLow 연산자는 설정 가능한 최소값에 대해서도 유사하게 작동합니다.
설정하려는 속성을 식별하려면 ClipHigh 및 ClipLow 값을 목표 범위 내에 유지하기 위해 전 비트 폭을 줄입니다. 모듈 매개변수를 사용하여 클립 한계를 설정하십시오. 유효 범위는 다음 요소에 따라 달라집니다. Bit Width 입력 링크의 속성과 해당 입력 링크가 부호 있는 산술 연산을 사용하는지, 아니면 부호 없는 산술 연산을 사용하는지에 따라 달라집니다.
스크린샷을 보면 다음과 같습니다. ClipHigh 255보다 큰 모든 픽셀 값을 255로 설정합니다:

CastBitWidth#
The CastBitWidth 연산자는 링크 비트 폭을 변경합니다. link 속성을 설정하면 Bit Width 연산자의 출력 링크에서.
출력 비트 폭이 입력 비트 폭보다 클 경우, 연산자는 해당 값을 유지한 채 최상위 비트 위치에 비트를 추가합니다. 부호 있는 값의 경우, CastBitWidth 부호 확장 연산을 수행합니다.
출력 비트 폭이 입력 비트 폭보다 작을 때, CastBitWidth 가장 높은 순위의 비트를 버립니다. 그 결과, 출력 비트 폭 내에서 표현할 수 없는 값은 수정됩니다. 이 연산은 비트를 영구적으로 제거하기 때문에, 후속 처리에 필요한 정보가 손실될 수 있습니다.
링크 비트 폭을 줄일 때, Basler는 다음 단계를 이 순서대로 따를 것을 권장합니다:
- 삽입
ClipHigh및ClipLow비트 폭 값을 목표 범위로 제한하기 위해. - 삽입
CastBitWidth비트 폭을 줄이기 위해.
‘매개변수화 튜토리얼’ 항목도 참조하십시오.
예시: 픽셀 추가 및 결과 폭 좁히기#
이 예제는 두 개의 8비트 부호 없는 픽셀 스트림을 더하고, 후속 처리를 위해 8비트 결과를 반환합니다:
- 두 개의 8비트 이미지 경로를 다음으로 연결합니다.
ADD연산자. - 출력 링크를 확인해 주세요.
ADD9비트 결과를 산출합니다. - 삽입
ClipHigh다음ADD. 최대값을 255로 설정하세요. - 삽입
CastBitWidth다음ClipHigh. 출력 설정Bit Width~ 8. - 디자인 규칙 검사 레벨 1을 실행하고 모든 링크가 유효한지 확인하십시오.
~ 없이 ClipHigh, CastBitWidth 9번째 비트만 버리게 되므로, 큰 수를 더하면 잘못된 픽셀 값이 산출됩니다.

부호 있는 값과 부호 없는 값#
link 속성 Arithmetic 생성된 FPGA 파이프라인이 값을 다음과 같이 취급할지 여부를 정의합니다. Signed 또는 Unsigned에 대한 두 번의 호출 사이에서 변경될 수 있습니다. Signed, 하드웨어는 2의 보충수 표현법을 사용합니다. 이 속성은 설계 단계에서 ‘ VisualApplets ’에서 설정합니다.
부호 비트는 구성된 비트 폭의 일부입니다.

CastType 연산자를 사용하여 Arithmetic 링크 속성 변경하기#
The CastType 연산자는 다음을 변경합니다. Arithmetic 출력 링크의 링크 속성. 비트 패턴은 동일하게 유지됩니다. 생성된 FPGA 로직은 저장된 비트 패턴을 변경하지 않으므로, 연산자는 FPGA 리소스를 전혀 사용하지 않습니다.
산술 설정에 따라 동일한 비트 패턴이 서로 다른 십진수 값을 나타낼 수 있습니다. 이 값은 1010 4비트 부호 없는 링크에서 이 값은 10과 같습니다. 4비트 부호 있는 링크에서 동일한 패턴은 −6과 같습니다.
다음 명령을 사용하여 CastType 하류 연산자가 다른 산술 유형을 필요로 하지만 값의 범위가 여전히 적합한 경우 이 연산자를 사용합니다.

값이 비트 범위에 포함되는지 확인하기#
VisualApplets 에서 매개변수 값(예를 들어, CONST 연산자)는 10진수로 입력되고 표시됩니다. 그러나 연산자에 연결된 링크는 특정 비트 범위 내의 값만 저장할 수 있습니다. 따라서 매개변수 값이 연결된 링크의 비트 폭에 맞는지 확인하십시오.
서명되지 않은 링크
n비트 부호 없는 링크는 양수 값과 0만 나타낼 수 있습니다. 유효한 범위는 다음과 같습니다:
0부터 2^n − 1까지
예를 들어, 8비트 부호 없는 정수형 변수는 0부터 255까지의 값을 저장할 수 있습니다:

~와의 관계에 대하여 ImageProtocol = VALT_SIGNAL, 산술 연산은 항상 Unsigned.
서명된 링크
n비트 부호 있는 링크는 양수 값과 음수 값을 모두 나타낼 수 있습니다. 유효 범위는 다음과 같습니다:
−2^(n-1)에서 2^(n-1) − 1까지
예를 들어, 8비트 부호 있는 링크는 −128부터 127까지의 값을 저장할 수 있습니다.

가장 높은 비트는 부호 비트로 사용되며, 해당 값이 양수인지 음수인지를 나타냅니다.
고정 소수점 Arithmetic#
VisualApplets FPGA에 구현되는 이미지 처리 설계를 만드는 데 사용됩니다. PC에서 실행되는 소프트웨어와 달리, FPGA 하드웨어는 일반적으로 부동소수점 수(예: 0.5 또는 1.25). 대신, 계산은 일반적으로 정수를 사용하여 수행됩니다.
VisualApplets 는 정수 연산을 계속 사용하면서도 소수 값을 표현하기 위해 고정 소수점 표현 방식을 사용합니다. 이를 통해 스케일링 계수, 이득 또는 서브픽셀 좌표와 같은 값을 하드웨어에서 효율적으로 저장하고 처리할 수 있습니다.
이 섹션에서는 다음 내용을 설명합니다:
- 고정 소수점 표현이 필요한 이유.
- 소수 값이 정수 비트 패턴에 어떻게 저장되는지.
- Q 형식이 소수점 위치를 어떻게 정의하는지.
- 비트 폭이 사용 가능한 값의 범위와 정밀도에 어떤 영향을 미치는지.
- 연산자 선택이 계산의 정확도에 미치는 영향.
링크를 통해 전송되는 모든 값은 비트 시퀀스로 저장됩니다. 하드웨어는 이러한 비트를 정수 값으로 해석합니다.
예를 들어, 아래의 비트 패턴은 정수 값 5를 나타냅니다:
00000101 = 5
그러나 이미지 처리 응용 프로그램에서는 종종 다음과 같은 소수 값이 필요합니다: 0.5, 1.25, 또는 12.75.
FPGA는 부동소수점 수를 저장하지 않기 때문에, 이러한 값들은 고정소수점 형식으로 표현됩니다. 고정소수점 표현에서는 비트 패턴이 여전히 정수 형태로 저장되지만, 소수점의 위치를 고정하여 정의합니다.
저장된 정수 값은 여전히 5이지만, 다음과 같이 해석됩니다:
5 / 2^2 = 1.25
소수 부분에 2비트가 할당되어 있기 때문입니다.
이것을 다음과 같이 생각할 수 있습니다. 가상 소수점 이는 미리 정의된 위치에 고정되어 있습니다. 이진 산술에서 이 구분선은 비트 가중치 사이의 이진 소수점입니다. 2^0 및 2^-1. 이 튜토리얼에서는 익숙한 용어를 그대로 사용합니다. 가상 소수점. FPGA는 모든 계산을 정수 연산으로 수행하며, 사용자는 선택한 고정소수점 형식에 따라 결과를 해석합니다.
Q 형식 및 비트 할당#
고정소수점 수는 일부 비트를 정수 부분에, 일부 비트를 소수 부분에 할당하여 소수 값을 표현합니다. 가상 소수점의 위치는 Q 형식을 사용하여 표시됩니다.
A Q 형식은 다음과 같이 표기됩니다:
Qm.n
여기서:
m정수 비트의 개수입니다n분수 비트의 개수입니다
부호가 있는 값의 경우, 부호 비트는 정수 부분에 포함됩니다.
예:
Q4.4
의미는:
- 정수 부호에 4비트
- 소수부에는 4비트가 할당됩니다.
- 총 8비트
소수 비트의 개수는 표현된 값의 정밀도를 결정합니다.
표현 가능한 최소 단계 크기는 다음과 같습니다:
1 / 2^n
여기서 n 는 소수부 비트의 개수입니다.
예시:
| 형식 | 분수 비트 | 최소 단계 크기 |
|---|---|---|
| Q6.2 | 2 | 0.25 |
| Q4.4 | 4 | 0.0625 |
| Q2.6 | 6 | 0.015625 |
분수 자릿수가 많을수록 인접한 값 간의 차이가 더 작아지므로 정밀도가 높아집니다.
총 비트 폭은 고정되어 있습니다. 그 결과, 소수 부분에 사용되는 비트는 더 이상 정수 부분에 사용할 수 없습니다.
따라서:
- 소수 비트가 많을수록 정밀도는 높아지지만, 사용할 수 있는 정수 범위는 줄어듭니다.
- 소수 비트의 수가 적을수록 정수 범위는 넓어지지만 정밀도는 낮아집니다.
Q 형식을 선택할 때는 필요한 값의 범위와 필요한 정밀도 사이의 균형을 고려해야 합니다.
고정소수에서 각 비트는 2의 거듭제곱을 나타냅니다.
가상 소수점 왼쪽의 비트는 정수를 나타냅니다:
..., 2^3, 2^2, 2^1, 2^0
오른쪽의 비트는 소수를 나타냅니다:
2^-1, 2^-2, 2^-3, ...
예를 들어, Q4.4 형식의 경우:
Bit position: 7 6 5 4 3 2 1 0
Weight: 2^3 2^2 2^1 2^0 2^-1 2^-2 2^-3 2^-4
의 위치는 2^0 비트는 가상 소수점의 위치를 정의합니다. 이 위치는 하드웨어에 저장되지 않으며, 선택된 Q 형식에 의해 정의되며 설계 전반에 걸쳐 일관되게 해석되어야 합니다.
예시: Q4.4#
Q4.4 형식에서는 4비트가 정수 부분에, 4비트가 소수 부분에 사용됩니다.
비트 패턴
0 0 0 0 . 1 0 0 0
다음이 포함되어 있습니다. 1 첫 번째 소수 자리. 이 자리는 값을 나타냅니다 2^-1, 이는 다음과 같습니다. 0.5.
따라서, 이 비트 패턴은 다음을 나타냅니다:
0 * 2^0 + 1 * 2^-1 + 0 * 2^-2 + 0 * 2^-3 + 0 * 2^-4 = 0.5
표시된 값은 0.5, FPGA는 해당 정수값만 저장합니다:
Stored integer value: 8
Represented real value: 0.5
Q4.4가 4비트의 소수부를 사용하기 때문에 이 방식이 작동합니다. 저장된 정수 값은 다음과 같이 해석됩니다:
Real value = Stored integer / 2^4
= 8 / 16
= 0.5
~하자 F 분수 비트의 개수가 되게 하라.
실수 값을 고정소수 표현으로 변환하려면:
FixedPoint = round(RealValue * 2^F)
예:
FixedPoint = round(0.5 * 2^4)
= round(8)
= 8
결과 비트 패턴:
0000.1000
고정소수점 값을 실수 값으로 다시 변환하려면:
RealValue = FixedPoint / 2^F
예:
RealValue = 8 / 2^4
= 8 / 16
= 0.5
연산자 및 설계 규칙#
연산자는 정수 비트 패턴만 처리합니다. 고정 소수점 산술에서 가상 소수점의 위치는 Q 형식에 의해 결정되며, 설계 전반에 걸쳐 이를 추적해야 합니다.
다음 연산자들은 확대/축소 비율을 조정하고 의도한 Q 형식을 유지하는 데 일반적으로 사용됩니다:
- The
ShiftLeft및ShiftRight이 연산자들은 입력 비트 패턴을 설정 가능한 비트 수만큼 왼쪽이나 오른쪽으로 이동시킵니다. 왼쪽 이동은 값을 2^Shift로 곱하고, 오른쪽 이동은 값을 2^Shift로 나눕니다. 이러한 연산자들은 원하는 Q 형식을 복원하기 위해 산술 연산 후에 자주 사용됩니다. SCALE또는ShiftLeft: 다음 연산자를 대신 사용하십시오.MULT값에 2의 일정한 거듭제곱을 곱할 때. 이 두 방법은 동일한 스케일링 연산을 수행하지만, 일반적으로 FPGA 리소스를 덜 소모합니다.- The
MULT이 연산자는 두 입력 값을 곱합니다. 출력 비트 폭은 입력 비트 폭들의 합과 같습니다. 고정 소수점 산술에서, 결과의 소수 비트 수는 두 피연산자의 소수 비트 수의 합과 같습니다.
예시#
Q4.4 값에 또 다른 Q4.4 값을 곱하면 Q8.8 결과가 나옵니다:
Q4.4 * Q4.4 -> Q8.8
이 결과는 더 높은 정밀도를 제공하지만, 이후 추가적인 조치가 필요할 수도 있습니다. ShiftRight 설계에서 Q4.4 값을 예상하는 경우 연산 또는 비트 폭 축소.
일부 연산자는 특정 고정소수점 형식을 가정합니다. 예를 들어, 다음과 같은 삼각 함수 연산자들은 SIN, COS, TAN, 그리고 이들의 역함수는 입력과 출력에 대해 미리 정의된 소수 비트 수를 요구합니다.
이러한 연산자에 링크를 연결하기 전에, ‘연산자 참조’의 ‘산술 라이브러리’에서 필요한 형식을 확인하십시오.
디자인 가이드라인
각 단계에서 Q 형식을 기록하십시오. 곱셈이나 나눗셈을 한 후에는 다음을 사용하십시오. ShiftRight 또는 의도한 형식을 복원하기 위해 필요한 경우 비트 폭을 조정합니다.
시뮬레이션에서 고정소수점 값 표시하기#
VisualApplets 의 시뮬레이션 기능을 사용하면 애플릿을 빌드하기 전에 고정소수점 값이 의도한 대로 해석, 스케일링 및 설계 전반에 걸쳐 전달되는지 확인할 수 있습니다. 시뮬레이션 프로브 뷰어( Simulation Probe Viewer)에서 링크된 값은 여전히 정수 형태로 유지되지만, 소수 비트를 설정하고 부호 있는/부호 없는 십진수를 선택하며, 필요에 따라 스케일링 계수를 적용하여 고정소수점 형식으로 표시할 수 있습니다. 이는 표시에만 영향을 미치며 하드웨어에는 영향을 주지 않습니다. VisualApplets 에서 시뮬레이션을 통해 고정소수점 값을 확인하려면:
- 처리 파이프라인의 시작 부분에 시뮬레이션 소스를 추가합니다.
- 시뮬레이션 프로브를 오퍼레이터의 출력 링크에 추가합니다.
- ‘분석(Analysis )’ → ‘시뮬레이션 시작( Start Simulation)’을 통해 시뮬레이션을 시작합니다.
- 2단계에서 추가한 프로브에 대한 시뮬레이션 프로브 뷰어를 엽니다.
- 시뮬레이션 프로브 뷰어에서 부호 있는 또는 부호 없는 십진수 표시를 선택하십시오.
- Q 형식에 맞게 소수점 비트 수를 설정하십시오.
- 선택적으로 단위 변환을 위한 배율을 설정할 수 있습니다(예: 라디안에서 도로 변환).
결과적으로, 시뮬레이션 프로브가 소수 비트를 어떻게 고려하는지 확인할 수 있습니다:

VisualApplets 의 시뮬레이션에 대한 자세한 내용은 사용자 설명서의 ‘시뮬레이션’ 항목을 참조하십시오.
SelectBitField를 사용하여 비트 필드 추출하기#
The SelectBitField 이 연산자는 입력 값에서 연속된 비트 범위를 추출하여 출력 값으로 복사합니다. 더 넓은 데이터 워드 중 특정 부분만 필요한 경우 이 연산자를 사용하십시오.
운영자를 다음과 같이 구성하십시오:
- 출력 설정
Bit Width출력 링크에서. 이는 추출되는 비트 수를 결정합니다. - 파라미터를 원하는
BitOffset매개변수. 이 매개변수는 선택된 필드 중 출력으로 복사될 최하위 비트(LSB)의 위치를 지정합니다. 선택된 비트는 출력 값의 0번 비트(최하위 비트)가 됩니다.
회색조 이미지의 경우, BitOffset 다음 범위 내에 있어야 합니다:
0 ... Input Bit Width - Output Bit Width
입력이 부호 있는 산술을 사용하는 경우, 추출된 비트는 항상 부호 없는 값으로 출력됩니다.

하류 소프트웨어용 ‘ Bit Width ’의 범위 확대#
많은 카메라가 픽셀당 10비트나 12비트와 같은 비트 폭을 가진 픽셀 데이터를 생성합니다. 하지만 이미지 처리 소프트웨어와 이미지 파일 형식은 대개 8비트, 16비트, 32비트와 같은 표준 데이터 폭을 사용합니다.
따라서 카메라 데이터를 호스트 PC로 전송하기 전에 16비트 픽셀로 변환하는 것이 일반적입니다. 이를 다음과 같은 방법으로 수행할 수 있습니다:
ConvertPixelFormat 사용#
비트 폭을 넓히려면 다음을 삽입할 수 있습니다. ConvertPixelFormat 이미지 소스 또는 버퍼와 DmaToPC.
를 삽입한 후 ConvertPixelFormat 연산자, 출력 링크 속성을 열고 다음을 설정합니다. Bit Width 에서 16.
예를 들어, 9비트 픽셀 데이터를 16비트로 변환할 때, 연산자는 각 픽셀 값을 7비트 왼쪽으로 시프트하고, 새로 생성된 최하위 비트 위치에 0을 채웁니다. 이를 통해 데이터를 16비트 형식으로 변환하면서도 상대적인 밝기 범위를 유지합니다.
![]()
ShiftLeft 활용하기#
또는 다음과 같이 삽입할 수도 있습니다. ShiftLeft 연산자를 사용하고 다음을 설정합니다. Shift 매개변수를 7로 설정합니다.
7비트 왼쪽 시프트는 9비트 값을 16비트 값으로 변환하는 것과 동일한 스케일링 효과를 나타냅니다:
9-bit value << 7
그러면 출력 링크는 16비트 픽셀 값을 전달합니다.

CastBitWidth 사용법#
수치 자체는 변경하지 않고 비트 폭을 늘리고 싶다면, CastBitWidth 연산자. 하위 소프트웨어에서 더 넓은 비트 폭이 필요하지만 픽셀 값의 배율은 원하지 않는 경우 이 옵션을 선택하십시오.
비트 폭을 변경하려면 CastBitWidth 연산자, 의 출력 링크에서 비트 폭을 변경하려면 CastBitWidth 연산자:

~과는 달리 ConvertPixelFormat 또는 ShiftLeft, CastBitWidth 픽셀 데이터를 이동시키지 않습니다. 대신, 원래 값을 유지한 채 상위 비트를 추가합니다.
DRC를 통한 설계 검증#
비트 폭을 변경하거나 산술 연산자를 삽입한 후에는 [Analysis ] → [ Design Rules Check Level 1]을 실행하십시오. 레벨 1은 DRC 로그에 비트 폭 불일치 및 매개변수 충돌을 보고합니다. 영향을 받는 모듈과 링크는 설계 창에서 강조 표시됩니다.
실행 설계 규칙 검사 레벨 2 구축하기 전에. 레벨 2는 FPGA 리소스 사용량을 추정합니다. 다음과 같은 넓은 중간 결과 및 연산자 MULT 및 DIV 자원 소비를 증가시킨다.
DRC 로그를 강조 표시된 모듈 및 링크와 함께 읽어보세요. 전체 워크플로는 ‘빈 디자인에서 실행 가능한 애플릿까지’ 튜토리얼 항목을 참조하세요.
주요 용어
바슬러는 비트 폭을 다룰 때 다음과 같은 방법을 권장합니다:
- 전파된 내용을 확인하십시오.
Bit Width모든 산술 연산자 뒤의 하류 링크에서. - 폭을 더 좁게 조정하기 전에 값을 잘라내세요.
- 호스트 소프트웨어의 비트 폭 변경 사항을 미리 계획해야 합니다. 예를 들어, DMA 전에 픽셀당 16비트로 설정하는 식입니다.
- 설정하려는 속성을 식별하려면
ShiftLeft및ShiftRight다음 대신 2의 거듭제곱 스케일링을 위해MULT및DIV가능할 때. - 매개변수 값이 제대로 적용되지 않을 때는 ‘운영자 참조 가이드’를 참조하십시오.
관련 항목#
- Parameterization 튜토리얼 주제 —
BitWidth및 산술 연결 속성 - 사용자 설명서의 링크 관련 규칙 — 공식 링크 규칙
- ‘빈 디자인에서 실행 가능한 애플릿까지’ 튜토리얼 주제 — DRC, 시뮬레이션 및 빌드
- VisualApplets 기초 튜토리얼 주제 — 파이프라인 및 FPGA 리소스
- 운영자 참조 — 지원되는 링크 형식
- 연산자 참조의 CastBitWidth
- ‘Operator Reference’의 ClipHigh
- ‘Operator Reference’의 ClipLow
- 연산자 참조의 ConvertPixelFormat
- 연산자 참조의 SelectBitField
- ‘Operator Reference’의 ShiftLeft
- ‘Operator Reference’의 ShiftRight