FrameBufferRandomRead 연산자

운영자 Library: Memory

이 연산자는 버퍼링된 데이터의 무작위 읽기를 용이하게 합니다. 프레임 데이터는 링크 I를 통해 연산자로 전송됩니다. 데이터의 무작위 읽기는 주소들을 포트 RColA (읽기 열 주소) 및 RRowA (읽기 행 주소)로 전송하여 수행할 수 있습니다. 연산자는 이 주소들을 사용하여 지정된 좌표에 따라 프레임 데이터를 읽습니다. 결과로 출력되는 프레임은 주소 입력값에 해당하는 이미지 크기를 갖게 됩니다.RAM 유형의 VisualApplets 리소스 1개가 필요합니다. 자세한 내용은 '장치 리소스 할당'을 참조하십시오. 이 연산자의 지연 시간에 대한 정보는 표 46, '라이브러리 메모리 내 연산자의 개별 지연 시간'을 참조하십시오 .

FrameBufferRandomRead(프레임 버퍼 랜덤 읽기) 연산자는 이미지 스트림을 프레임 그래버 RAM(DRAM)에에 버퍼링합니다. RAM 유형의 VisualApplets 리소스 1개가 필요합니다.

이 연산자는 두 가지 상태를 가집니다:

  1. 쓰기 상태: 입력 이미지가 버퍼에 저장됩니다. 이 연산자는 FIFO처럼 작동합니다. 사용 가능한 메모리가 충분하면 여러 개의 이미지를 버퍼에 저장할 수 있습니다.

  2. 읽기 상태: 이미지가 메모리에 완전히 저장된 후, 메모리는 입력단자 RColA 및 RRowA에 지정된 주소를 사용하여 읽혀집니다. 주소의 개수와 주소는 이미지의 크기를 나타내며, 이를 통해 이미지의 출력 너비와 높이가 결정됩니다.

이미지 데이터 입력과 주소 입력은 서로 비동기적입니다. 두 입력의 이미지 크기가 다를 수 있습니다. 두 주소 입력인 RColA와 RRowA는 모두 O-동기식이어야 합니다.

입력 링크의 타이밍에 유의하십시오. 주소 입력은 버퍼링 없이 데이터 링크 입력 I과 동일한 연산자에서 공급되어서는 안 됩니다. 이는 이미지 데이터를 연산자에 기록하는 동안에는 현재 프레임을 읽을 수 있는 주소를 받아들일 수 없기 때문입니다. 프레임이 버퍼에 완전히 저장된 경우에만 주소를 받아들일 수 있습니다. 대부분의 경우, 연산자는 CreateBlankImage 는 해당 주소에 대한 이미지를 생성하는 데 사용됩니다.

이 연산자는 대용량의 비-FPGA 메모리를 사용합니다. 만약 저장해야 할 프레임이나 라인이 소량인 경우, 다음 연산자의 사용을 고려해 보십시오. FrameMemoryRandomRd 또는 LineMemoryRandomRd를 사용하는 것을 고려해 보십시오.

버퍼의 채움 수준을 측정하기 위해 이 연산자는 FillLevel과 Overflow라는 두 가지 매개변수를 제공합니다. FillLevel은 RAM의 채움 수준을 백분율로 나타냅니다. Overflow 매개변수는 FillLevel이 100%에 근접하거나 100%일 때, 버퍼에 저장될 다음 이미지가 RAM 용량을 초과할 경우 1로 설정됩니다. 오버플로우가 발생할 경우, 입력 프레임은 버려집니다. 사용자는 오버플로우 매개변수를 주기적으로 확인해야 합니다. 오버플로우 상태가 지속되는 시간이 매우 짧을 수 있으므로, 이 상태가 운영자의 폴링 주기 사이에 발생할 가능성이 있습니다.

매개변수 InfiniteSource는 연산자가 카메라에 직접 연결되어 있는지, 아니면 다른 메모리 연산자와 시퀀스로 연결되어 있는지 지정하는 데 사용됩니다. 자세한 내용은 ‘무한 소스 / 카메라 연결’을 참조하십시오.

오퍼레이터 제한 사항

  • 빈 프레임은 지원되지 않습니다.

  • 선 길이가 서로 다른 이미지는 지원되지 않습니다.

  • 주소 포트의 병렬 처리 수준은 2로 설정해야 합니다.

  • I.MaxImgWidth * I.MaxImgHeight는 사용 가능한 RAM 크기인2^RamAddressWidth를 초과해서는 안 됩니다.

대역폭 최적화

다음 메모리를 사용하는 통신 사업자를 통과하는 이론적 대역폭 [비트/초] 프레임 그래버 RAM(DRAM) 를 사용하는 운영자를 통과하는 이론적 대역폭 [비트/초]는 다음 공식에 따라 계산됩니다:

그러나 DRAM의 효율성 문제로 인해 실제 대역폭은 항상 이론적 대역폭보다 낮습니다.

The 최대 대역폭 이 Bit Width 와 Parallelism 의 곱이 내부 RAM 포트 폭과 같을 때, 오퍼레이터를 통과하는 최대 대역폭에 도달합니다.

[참고] 플랫폼별 값

RAM 포트 폭과 시스템 클럭은 플랫폼에 따라 다릅니다. 참조: 장치 리소스 를 참조하십시오.

I/O Properties

Property Value
Operator Type M
Input Links I, 이미지 데이터 입력
RColA, I 위치의 픽셀에 대한 열 주소 읽기
RRowA, I 위치의 픽셀에 대한 행 주소 읽기
출력 링크 O, 데이터 입력

동기 및 비동기 입력

  • 동기 그룹: RColA 및 RRowA
  • 입력 I는 그룹과 비동기적으로 작동합니다.

지원되는 Link Format

Link Parameter Input Link I 입력 링크 RColA 입력 링크 RRowA Output Link O
Bit Width [1, 64]1 auto2 auto3 as I
Arithmetic {unsigned, signed} unsigned unsigned as I
Parallelism 1 {1, 2}4 RColA로서 as I
Kernel Columns [1, RAM 데이터 폭 / Bit Width / 커널 행 수]5 1 1 as I
Kernel Rows [1, RAM 데이터 폭 / Bit Width / 커널 열 수]5 1 1 as I
Img Protocol VALT_IMAGE2D as I as I as I
Color Format any VAF_GRAY VAF_GRAY as I
Color Flavor any FL_NONE FL_NONE as I
Max. Img Width any6 any RColA로서 RColA로서
Max. Img Height any6 any RColA로서 RColA로서

1

입력 비트 폭의 범위는 다음과 같습니다:

  • 부호 없는 입력의 경우: [1, 64]

  • 부호가 있는 입력의 경우: [2, 64]

  • 부호 없는 색상 입력의 경우: [3, 63]

  • 부호가 있는 색상 입력의 경우: [6, 63].

입력 비트 폭은 네이티브 RAM 데이터 폭을 초과해서는 안 됩니다. 확인하십시오 장치 리소스 항목을 참조하십시오.

2

열 주소의 비트 폭은 다음과 같습니다:

3

행 주소의 비트 폭은 다음과 같습니다:

4

이 연산자를 효율적으로 사용하려면 주소 포트의 병렬도를 2로 설정해야 합니다.

5

I.BitWidth x I.Kernel Columns x I.Kernel Rows <= RamDataWidth.

6

I.MaxImgWidth * I.MaxImgHeight는 사용 가능한 RAM 크기인2^RamAddressWidth를 초과해서는 안 됩니다.

Parameters

RamDataWidth
Type 정적 쓰기 파라미터
Default N/A
Range 정수

이 매개변수는 RAM 인터페이스에서 사용할 수 있는 데이터 비트 수를 지정합니다. 이는 입력 및 출력에 대한 최대 비트 수입니다.

RamAddressWidth
Type 정적 쓰기 파라미터
Default N/A
Range 정수

이 매개변수는 사용 가능한 주소 비트 수를 제공합니다. 이를 통해 허용되는 최대 이미지 크기와 최대 주소 폭을 계산할 수 있습니다.

채움 수준
Type dynamic read parameter
Default 0
Range [0%, 100%]

이 매개변수는 RAM의 채움 수준을 나타냅니다.

Overflow
Type dynamic read parameter
Default 0
Range [0, 1]

이 매개변수는 버퍼 오버플로를 나타냅니다.

InfiniteSource
Type static parameter
Default 활성화됨
Range {활성화됨, 비활성화됨}

이 매개변수는 카메라 연산자와 같은 무한 소스 연산자에 대한 지원을 활성화합니다. 자세한 내용은 ‘무한 소스 / 카메라 연결’을 참조하십시오.

사용 예

다음 예제에서는 FrameBufferRandomRead 연산자의 사용법을 보여줍니다: