Operator Library: Memory
FrameMemory operator는 임의 쓰기 액세스(random write access)를 사용하여 입력 이미지를 저장하는 Memory 블록입니다. 쓰기 주소는 입력 링크 행 주소 RowA 및 열 주소 ColA로 지정됩니다. 따라서 각 입력 픽셀 값에 대해 행 및 열 주소를 지정해야 합니다.
프레임이 Memory에 기록된 후, 링크 O를 사용하여 읽고 출력됩니다. 출력 이미지 크기는 파라미터에 의해 정의되며 입력 이미지 크기와는 무관합니다. Memory는 0 값으로 미리 초기화됩니다.
연산자 지연 시간에 대한 정보는 '표 46: Library Memory의 연산자별 지연 시간'을 참조하십시오.
Memory 크기는 FrameWidth 및 FrameHeight 파라미터로 정의됩니다.
이 operator는 두 가지 variant로 구현할 수 있습니다. 즉, 싱글 버퍼(single buffer) 구현과 더블 버퍼(double buffer) 구현입니다. 첫 번째 구현은 RAM을 절약하지만, 쓰기와 읽기의 시간적 중첩을 허용하지 않습니다. 따라서 읽기 상태 동안 입력 링크 I가 중지됩니다. 후자의 구현은 RAM을 두 배로 늘리고 입력 링크 I에서 다음 프레임을 수락하는 동시에 프레임을 출력할 수 있도록 합니다.
오퍼레이터에는 두 가지 상태가 있습니다.
-
쓰기 상태(Write State): 링크 I의 값은 ColA 및 RowA로 지정된 주소에 저장됩니다. 이 작업은 링크 WriteI가 1인 경우에만 수행됩니다. 링크 WriteI가 0인 경우 현재 픽셀은 건너뜁니다. 유효한 주소 범위의 모든 주소에 쓸 수 있습니다. 모든 Memory 셀에 쓸 필요는 없습니다.
-
읽기 상태(Read State): Memory를 순차적으로 읽어 파라미터화된 너비의 라인을 생성합니다. XOffset, XLength, YOffset 및 YLength 파라미터를 사용하여 읽기 주소 범위, 즉 ROI를 정의할 수 있습니다. Memory를 읽으면 읽은 주소의 콘텐츠가 0으로 재설정됩니다. 따라서 이전에 쓰여지지 않은 Memory 셀을 읽으면 0이 출력됩니다.
이 두 상태 간의 전환은 입력 링크 I의 프레임 종료(end-of-frame)에 의해 트리거됩니다. 출력 링크의 프레임 너비와 높이는 XOffset, XLength, YOffset 및 YLength 파라미터에 의해 정의된 크기로 고정되며 입력 링크의 라인 너비 및 프레임 높이와 무관합니다.
이 오퍼레이터는 미러링 또는 센서 보정에 유용할 수 있습니다.
이 operator는 FPGA의 내부 블록 RAM Memory를 사용합니다. 따라서 RAM 유형의 VisualApplets 프레임 그래버 리소스가 사용되지 않습니다. FPGA 내부 블록 RAM은 제한되어 있습니다. 전체 해상도 프레임이 FPGA 내부 블록 RAM에 맞지 않을 수 있습니다. 대신 FrameBufferRandomRead operator 사용을 고려하십시오.
Operator 제한 사항
-
빈 프레임은 지원되지 않습니다.
라인 길이가 다른 이미지는 지원되지 않습니다.
| Property | Value |
|---|---|
| Operator Type | M |
| Input Links | I, 이미지 데이터 입력 WriteI, 쓰기 허가 입력 ColA, I에서의 픽셀에 대한 쓰기 열 주소 RowA, I에서의 픽셀에 대한 쓰기 행 주소 |
| Output Link | O, 데이터 입력 |
동기 및 비동기 입력
- 모든 입력은 서로 동기화되어 있습니다. 즉, O 타입 오퍼레이터의 임의 네트워크를 통해 동일한 M 타입 오퍼레이터로부터 소스를 공급받아야 합니다.
| ImplementationType | |||||||
|---|---|---|---|---|---|---|---|
| Type | static write parameter | ||||||
| Default | AUTO | ||||||
| Range | (AUTO, BRAM, LUTRAM, URAM) | ||||||
|
ImplementationType 파라미터는 연산자의 구현 전략, 즉 연산자를 구현하는 데 어떤 Memory 요소가 사용되는지에 영향을 미칩니다. 다음 값 중 하나를 선택할 수 있습니다. AUTO: 연결된 링크의 파라미터 설정을 바탕으로 최적의 구현 전략이 자동으로 선택됩니다. BRAM: 연산자가 FPGA의 Block RAM을 사용합니다. LUTRAM: 연산자가 FPGA의 LUT RAM을 사용합니다. URAM: 연산자가 FPGA의 UltraRAM을 사용합니다.
|
|||||||
| 구현 | |
|---|---|
| Type | static parameter |
| Default | SingleBuffer |
| Range | {SingleBuffer, DoubleBuffer} |
|
이 파라미터는 FrameMemory의 구현을 선택합니다(위 참조). |
|
| FrameWidth | |
|---|---|
| Type | static parameter |
| Default | 1024 |
| Range | [0, 65534] |
|
이 파라미터는 픽셀 단위로 출력 링크의 이미지 너비를 선택합니다. |
|
| FrameHeight | |
|---|---|
| Type | static parameter |
| Default | 1024 |
| Range | [0, 65534] |
|
이 파라미터는 라인 단위로 출력 링크의 이미지 높이를 선택합니다. |
|
| XOffset | |
|---|---|
| Type | 동적/정적 읽기/쓰기 파라미터 |
| Default | 0 |
| Range | [0, Max.Img Height - YLength] |
|
이 파라미터는 ROI의 왼쪽 상단 모서리의 y 좌표를 정의합니다. |
|
| XLength | |
|---|---|
| Type | 동적/정적 읽기/쓰기 파라미터 |
| Default | 1024 |
| Range | [1, Max.Img Width - XOffset] |
|
이 파라미터는 ROI의 너비를 정의합니다. |
|
| YOffset | |
|---|---|
| Type | 동적/정적 읽기/쓰기 파라미터 |
| Default | 0 |
| Range | [0, Max.Img Height - YLength] |
|
이 파라미터는 ROI의 왼쪽 상단 모서리의 y 좌표를 정의합니다. |
|
| YLength | |
|---|---|
| Type | 동적/정적 읽기/쓰기 파라미터 |
| Default | 1024 |
| Range | [1, Max.Img Height - YOffset] |
|
이 파라미터는 ROI의 높이를 정의합니다. |
|
FrameMemory operator의 사용법은 다음 예시에 나와 있습니다:
-
'Functional Example for Specific Operators of Library Memory and Library Signal'
Examples - Demonstration of how to use the operator






![[참고]](../common/images/admon/note.png)
이전

