운영자 Library: Memory
FrameMemory 연산자는 랜덤 쓰기 액세스를 사용하여 입력 이미지를 저장하는 메모리 블록입니다. 쓰기 주소는 입력 링크의 행 주소 RowA와 열 주소 ColA로 지정됩니다. 따라서 각 입력 픽셀 값에 대해 행 주소와 열 주소를 지정해야 합니다.
프레임이 메모리에 기록된 후, 링크 O를 통해 읽혀져 출력됩니다. 출력 이미지의 크기는 매개변수로 정의되며, 입력 이미지의 크기와는 무관합니다. 메모리는 0으로 미리 초기화되어 있습니다.
연산자의 지연 시간에 대한 정보는 표 46, ‘라이브러리 메모리 내 연산자의 개별 지연 시간’을 참조하십시오 .
메모리 크기는 FrameWidth 및 FrameHeight 매개변수로 정의됩니다.
이 연산자는 두 가지 방식으로 구현될 수 있습니다. 즉, 단일 버퍼 구현 방식과 이중 버퍼 구현 방식이 있습니다. 첫 번째 구현 방식은 RAM을 절약하지만, 쓰기와 읽기를 동시에 수행할 수 없습니다. 따라서 읽기 상태에서는 입력 링크 I의 전송이 중단됩니다. 두 번째 구현 방식은 RAM 용량을 두 배로 늘리며, 입력 링크 I에서 다음 프레임을 수신하는 동안에도 현재 프레임을 출력할 수 있게 해줍니다.
이 연산자는 두 가지 상태를 가집니다:
-
쓰기 상태: Link I의 값이 ColA와 RowA로 지정된 주소에 저장됩니다. 이는 Link WriteI가 1일 때만 수행됩니다. 링크 WriteI가 0인 경우, 현재 픽셀은 건너뜁니다. 유효한 주소 범위 내의 모든 주소에 쓰기가 가능합니다. 각 메모리 셀에 반드시 쓰기를 수행할 필요는 없습니다.
-
읽기 모드: 메모리가 순차적으로 읽혀지며, 매개변수로 지정된 너비의 한 줄이 생성됩니다. XOffset, XLength, YOffset 및 YLength 매개변수를 사용하여 읽기 주소 범위, 즉 ROI를 정의할 수 있습니다. 메모리를 읽으면 읽은 주소의 내용이 0으로 초기화됩니다. 따라서 이전에 쓰기 작업이 수행되지 않은 메모리 셀을 읽을 경우, 0이 출력됩니다.
이 두 상태 간의 전환은 입력 링크 I에서 프레임 끝이 감지됨에 따라 발생합니다. 단, 출력 링크의 프레임 너비와 높이는 XOffset, XLength, YOffset 및 YLength 매개변수로 정의된 크기로 고정되어 있으며, 입력 링크의 라인 너비 및 프레임 높이와는 무관합니다.
이 연산자는 미러링이나 센서 보정에 유용하게 사용될 수 있습니다.
이 연산자는 FPGA의 내부 블록 RAM 메모리를 사용합니다. 따라서 RAM 유형의 VisualApplets 프레임 그래버 리소스는 사용되지 않습니다. 이 FPGA 내부 블록 RAM 의 용량은 제한되어 있습니다. 전체 해상도의 프레임이 FPGA 내부 블록 RAM에 모두 들어가지 않을 수도 있습니다. 연산자 FrameBufferRandomRead 연산자를 사용하는 것을 고려해 보십시오.
오퍼레이터 제한 사항
-
빈 프레임은 지원되지 않습니다.
선 길이가 서로 다른 이미지는 지원되지 않습니다.
| Property | Value |
|---|---|
| Operator Type | M |
| Input Links | I, 이미지 데이터 입력 WriteI, 쓰기 허용 입력 ColA, I 위치의 픽셀에 대한 열 주소 쓰기 RowA, I 위치의 픽셀에 대한 행 주소 쓰기 |
| 출력 링크 | O, 데이터 입력 |
동기 및 비동기 입력
- 모든 입력은 서로 동기화되어 있으며, 즉 동일한 M형 연산자를 통해 임의의 O형 연산자 네트워크를 거쳐 공급되어야 한다.
| ImplementationType | |||||||
|---|---|---|---|---|---|---|---|
| Type | 정적 쓰기 파라미터 | ||||||
| Default | AUTO | ||||||
| Range | (AUTO, BRAM, LUTRAM, URAM) | ||||||
|
ImplementationType 매개변수는 연산자의 구현 전략, 즉 연산자를 구현하는 데 어떤 메모리 요소가 사용되는지에 영향을 미칩니다. 다음 값 중 하나를 선택할 수 있습니다: AUTO: 연결된 링크의 매개변수 설정에 따라 최적의 구현 전략이 자동으로 선택됩니다. BRAM: 오퍼레이터는 FPGA의 블록 RAM을 사용합니다. LUTRAM: 오퍼레이터는 FPGA의 LUT RAM을 사용합니다. URAM: 운영자는 FPGA의 UltraRAM을 사용합니다.
|
|||||||
| 구현 | |
|---|---|
| Type | static parameter |
| Default | SingleBuffer |
| Range | {단일 버퍼, 이중 버퍼} |
|
이 매개변수는 FrameMemory(위 참조)의 구현 방식을 선택합니다. |
|
| FrameWidth | |
|---|---|
| Type | static parameter |
| Default | 1024 |
| Range | [0, 65534] |
|
이 매개변수는 출력 링크의 이미지 너비를 픽셀 단위로 지정합니다. |
|
| 프레임 높이 | |
|---|---|
| Type | static parameter |
| Default | 1024 |
| Range | [0, 65534] |
|
이 매개변수는 출력 링크의 이미지 높이를 줄 단위로 지정합니다. |
|
| XOffset | |
|---|---|
| Type | 동적/정적 읽기/쓰기 매개변수 |
| Default | 0 |
| Range | [0, 최대 이미지 높이 - YLength] |
|
이 매개변수는 ROI의 왼쪽 상단 모서리의 y좌표를 정의합니다. |
|
| XLength | |
|---|---|
| Type | 동적/정적 읽기/쓰기 매개변수 |
| Default | 1024 |
| Range | [1, 최대 이미지 너비 - X 오프셋] |
|
이 매개변수는 ROI의 너비를 정의합니다. |
|
| YOffset | |
|---|---|
| Type | 동적/정적 읽기/쓰기 매개변수 |
| Default | 0 |
| Range | [0, 최대 이미지 높이 - YLength] |
|
이 매개변수는 ROI의 왼쪽 상단 모서리의 y좌표를 정의합니다. |
|
| YLength | |
|---|---|
| Type | 동적/정적 읽기/쓰기 매개변수 |
| Default | 1024 |
| Range | [1, 최대 이미지 높이 - Y 오프셋] |
|
이 매개변수는 ROI의 높이를 정의합니다. |
|
다음 예제에서는 FrameMemory 연산자의 사용법을 보여줍니다:
-
'라이브러리 메모리 및 라이브러리 신호의 특정 연산자에 대한 기능 예시'
예제 - 오퍼레이터 사용법 시연






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

