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




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

