IP 코어 속성 정의

FPGA에서 사용할 개별 VA IP Core의 인터페이스를 정의하기 위해 GUI 도구인 eVA Designer를 사용합니다. eVA Designer는 VisualApplets Embedder 패키지의 일부입니다. eVA Designer는 VisualApplets와 함께 설치됩니다. VisualApplets Embedder 라이선스를 취득한 후 eVA Designer를 사용할 수 있습니다. 여기에 입력한 데이터는 하드웨어 설명 파일(XML)에 기록됩니다. 이 데이터를 바탕으로 eVA Designer는 나중에 VHDL로 IP Core 블랙박스를 빌드합니다.

eVA Designer의 그래픽 사용자 인터페이스

eVA Designer의 그래픽 사용자 인터페이스는 쉽고 직관적입니다.

eVA Designer의 GUI는 사용자의 모든 입력에 실시간으로 반응하여 지원을 제공합니다.

그래픽 표현

정의된 IP Core의 그래픽 표현(프로그램 창의 왼쪽 패널)에는 현재 정의된 모든 인터페이스가 표시됩니다. 그래픽 표현은 모든 입력(인터페이스 추가 또는 삭제)에 즉시 반응합니다.

  • FIFO를 사용하는 모든 인터페이스는 녹색으로 표시됩니다.

  • 동일한 종류의 여러 인터페이스는 그에 따라 다음과 같이 표시됩니다.

    • 동일한 종류의 인터페이스가 최대 3개까지 있는 경우, 해당 인터페이스 개수만큼 쌓인 형태로 표시됩니다. 예: 2개의 memory 인터페이스: 

    • 동일한 종류의 인터페이스가 3개를 초과하는 경우, 실제 인터페이스 개수를 알려주는 숫자가 표시된 3개의 쌓인 형태로 표시됩니다. 예: 4개의 GPI 및 4개의 GPO 인터페이스:

출력 필드

출력 필드는 IP core 정의가 eVA Designer에 입력한 다른 항목과 일치하지 않는 경우 즉시 알려줍니다(예: 정의한 인터페이스가 IP core 내에서 이러한 인터페이스에 연결하기 위해 정의한 VisualApplets 연산자와 일치하지 않는 경우).

출력 필드는 (인터페이스나 연산자 추가 또는 삭제와 같은) 모든 입력에 즉시 반응합니다.

eVA Designer 및 하드웨어 설명 파일 열기

새로운 IP core 정의를 생성하려면, 즉 FPGA 디자인에 통합할 프로그래머블 IP core의 인터페이스를 정의하려면 다음을 수행하십시오.

  1. VisualApplets를 시작합니다.

  2. Tools 메뉴에서 eVA Designer를 선택합니다.

    eVA Designer의 시작 창이 열립니다.

  3. File 메뉴에서 Open을 선택합니다.

  4. 파일 시스템에서 eVA Designer에 로드할 XML 템플릿(또는 이전에 작업하던 HW 설명 파일)을 선택합니다.

    이제 XML 템플릿이 eVA Designer에 로드됩니다.

[참고] 하드웨어 설명 파일에서 작업 계속하기

물론 이미 작업 중이던 개별 하드웨어 설명 파일이나 완전히 채워진 예제 파일 중 하나를 다시 열 수도 있습니다. 이 경우 IP core의 그래픽 표현에는 이미 지정된 인터페이스가 표시됩니다.

Zynq Platform용으로 지정된 예제 IP Core

그림 193. Zynq Platform용으로 지정된 예제 IP Core


플랫폼 세부 정보 입력

  1. Device 탭으로 이동합니다.

  2. 이미지 처리 응용 프로그램을 탑재할 FPGA가 포함된 하드웨어에 대한 첫 번째 정보를 입력합니다.

    • Name:대상 하드웨어 제품의 이름을 입력합니다.

    • Display Name: VisualApplets GUI에 표시할 하드웨어의 별칭 이름을 정의합니다. 공백 문자가 허용됩니다.

    • Vendor (표시 필드): 회사 이름(즉, 제품의 공급업체). 이 문자열의 값은 Basler에 의해 미리 설정되어 있으며 변경할 수 없습니다. 공급업체 이름은 VisualApplets 그래픽 사용자 인터페이스에 표시됩니다. (예제 HW 설명 파일에는 이 위치에 DEMO가 표시됩니다.)

    • ID: 런타임 시스템을 통해 읽어올 수 있는 하드웨어 플랫폼의 4자리 1진 식별 번호를 입력합니다. 여기에 원하는 값을 자유롭게 입력할 수 있습니다. 이 값은 VisualApplets 사용자가 하드웨어를 식별하기 위한 것입니다. 예: 0xabcd

    • Version: 하드웨어 제품의 버전을 입력합니다. 여기에 원하는 값을 자유롭게 입력할 수 있습니다. 이 값은 VisualApplets 사용자가 HW 버전을 식별하기 위한 것입니다.

    • Performance Class: 선택한 XML 템플릿의 성능 클래스가 여기에 표시됩니다. 사용 가능한 성능 클래스에 대한 자세한 내용은 성능 클래스(Performance Classes) 섹션을 참조하십시오.

    • Icon File (선택 사항): 나중에 VisualApplets에서 하드웨어 플랫폼 이름과 함께 표시될 작은 그래픽 파일의 경로를 여기에 입력할 수 있습니다.

FPGA 세부 정보 입력

  1. FPGA 탭으로 이동합니다.

  2. IP 코드를 통합하려는 FPGA에 대한 정보를 Type Information for FPGA Device 아래에 입력합니다:

    Vendor: FPGA 공급업체 이름(예: XILINX).

    Architecture: FPGA 시리즈 및 FPGA 모델(예: ZYNQ7000).

    Device: FPGA의 디바이스 이름(FPGA 유형, 속도 등급 및 패키지 세부 정보 제외)(예: xc7z020).

    Speedgrade: FPGA의 속도 등급(예: -1)

    Package: FPGA의 패키지 식별 정보(예: clg484)

  3. VisualApplets Design Clock Settings에서 iDesignClk의 속성을 지정합니다:

    Min. design clock freq.: Visual Applets Core 디자인의 최소 주파수.

    Max. design clock freq.: Visual Applets Core 디자인의 최대 주파수.

    Default design clock freq.: Visual Applets Core 디자인의 기본 주파수.

    Design clock freq. step: Visual Applets Core의 주파수를 조정할 수 있는 단계 크기.

    여기에 주파수 범위를 지정하면(상위 세 필드에 모두 동일한 값을 입력하는 대신), VisualApplets 사용자가 특정 디자인의 디자인 클럭을 해당 값 범위 내의 값으로 설정할 수 있습니다. 클럭 시스템에 대한 일반적인 정보는 'Clock Interface'를 참조하십시오.

    [참고] 주변 FPGA 디자인이 정의된 주파수를 지원해야 함

    주변 FPGA 디자인이 IP 코어 디자인에 대해 여기에 정의한 주파수를 제공하는지 확인하십시오. VisualApplets 사용자가 디자인 클럭을 조정할 수 있도록 허용하는 경우(세 필드 모두에 동일한 값을 입력하는 대신 여기에 주파수 범위를 지정하여), 다음 사항을 확인해야 합니다.

    • 주변 FPGA 디자인이 입력을 iDesignClk에 맞게 유연하게 조정할 수 있어야 하며,

    • FPGA 디자인이 지정된 값 범위 내의 모든 주파수를 제공할 수 있어야 합니다.

  4. FPGA Resources Available for VisualApplets 아래에서 이미지 처리 애플리케이션(VA IP 코어 내)이 사용할 수 있도록 허용할 최대 FPGA 리소스를 입력합니다:

    Max. number of LUTs: Visual Applets 디자인에서 사용할 수 있는 FPGA LUT의 최대 개수.

    Max. number of Registers: Visual Applets 디자인에서 사용할 수 있는 FPGA 레지스터의 최대 개수.

    최대 Block RAM 수: Visual Applets 디자인에서 사용할 수 있는 FPGA의 최대 블록 RAM 수입니다.

    최대 임베디드 ALU 수: Visual Applets 디자인에서 사용할 수 있는 FPGA의 최대 임베디드 ALU 수입니다.

필수 ImgIn 인터페이스 설명 입력

eVA IP 정의의 ImgIn 인터페이스

이미지 스트리밍 포트 ImgIn은 주변 FPGA 로직에서 VA IP 코어로 이미지 데이터를 쓰기 위한 범용 이미지 통신 인터페이스입니다. ImgIn 포트는 단순한 FIFO 인터페이스와 추가적인 파라미터 포트로 구성됩니다. 인터페이스 포트는 철저하게 파라미터화되어 있습니다. 기존 파라미터 외에도, 연결된 FPGA 로직으로 파라미터를 전달하기 위한 추가 레지스터를 정의할 수 있습니다.

이미지 데이터는 ImgIn 유형의 인터페이스 포트를 통해 VA IP 코어로 입력됩니다. 여러 클래스의 ImgIn 포트를 정의할 수 있으며, 각 클래스마다 여러 인스턴스가 존재할 수 있습니다.

이미지 입력 인터페이스의 포트 레이아웃

그림 194. 이미지 입력 인터페이스의 포트 레이아웃


다음 표는 인터페이스 신호에 대해 설명합니다. 여기서 PORTID는 해당 이미지 입력 포트 클래스의 이름이고, X는 동일 클래스의 여러 포트를 구분하기 위한 포트 번호입니다.

포트

방향

Width

설명

iPORTIDXClk

에서

1

FIFO 쓰기용 클럭. 포트가 동기식 통신으로 설정된 경우 이 입력은 무시됩니다. ImgIn 인터페이스 설정은 ''ImgIn' 인터페이스 클래스 정의'에 설명되어 있습니다.

ivPORTIDXData

에서

PORTID 너비

쓰기 데이터(픽셀 데이터, 또는 라인 끝 및 프레임 끝 플래그로 해석됨)

iPORTIDXValid

에서

1

쓰기 액세스 수행

iPORTIDXEndOfLine

에서

1

현재 쓰기 액세스를 라인 끝(end-of-line) 알림으로 신호화합니다. 이 경우 쓰기 데이터는 픽셀 데이터로 해석되지 않습니다.

iPORTIDXEndOfFrame

에서

1

프레임 끝을 신호화합니다. 이 플래그가 활성화되면 데이터에 픽셀 값이 포함되지 않습니다. 프레임 끝 신호는 라인 끝 신호와 일치해야 합니다.

oPORTIDXFIFOFull

Out

1

입력 FIFO가 가득 차서 더 이상 데이터를 수락하지 않습니다.

ovPORTIDXFIFOCnt

Out

Ceil Log2(PORTIDFIFODepth). Ceil Log2는 값을 표현하는 데 필요한 비트 수입니다.

입력 FIFO의 워드 수입니다. 이 신호는 Almost Full과 같은 FIFO 플래그를 생성하는 데 사용할 수 있습니다.

oPORTIDXReset

Out

1

프로세스의 리셋 신호

oPORTIDXEnable

Out

1

프로세스의 인에이블 신호

ovPORTIDX_PARNAME_D

Out

S

파라미터 PARNAME의 데이터입니다. S는 선택된 Bit Width에 따라 다릅니다. 이 신호는 정의된 각 파라미터마다 생성됩니다.

oPORTIDX_PARNAME_Upd

Out

1

런타임 소프트웨어에서 파라미터 PARNAME이(가) 업데이트될 때 이 신호는 한 클럭 사이클 동안 '1'로 설정됩니다. 이 신호는 정의된 각 파라미터마다 생성됩니다.

ovPORTIDX_FID_D

Out

Ceil Log2(N). Ceil Log2 (N)은 (N-1) 값을 표현하는 데 필요한 비트 수입니다.

현재 이미지 데이터 포맷을 알리는 사전 정의된 파라미터입니다. N은 이 포맷에 지정된 이미지 포맷의 수입니다.

다음 그림은 32비트 그레이 픽셀 값 3개로 구성된 두 개의 라인을 가진 프레임이 전송되는 간단한 예에 대해 ImgIn 인터페이스를 통한 이미지 통신 타이밍을 보여줍니다. 파형에서 이름 부분 PORTIDX는 imgin(으)로 대체되었습니다.

이미지 입력 포트의 프로토콜을 보여주는 파형

그림 195. 이미지 입력 포트의 프로토콜을 보여주는 파형


지원되는 ImageIn 포맷

단일 ImgIn 포트를 통해 다양한 프로토콜을 구동할 수 있습니다. VisualApplets는 다음과 같은 이미지 포맷을 지원합니다.

  • grayXxP: 픽셀당 X비트 및 Parallelism P를 갖는 그레이 이미지

  • rgbYxP: 컬러 구성 요소(빨강, 초록, 파랑)당 Y/3비트 및 Parallelism P를 갖는 컬러 이미지

  • hsiYxP: 컬러 구성 요소당 Y/3비트(HSI 컬러 모델) 및 Parallelism P를 갖는 컬러 이미지

  • hslYxP: 컬러 구성 요소당 Y/3비트(HSL 컬러 모델) 및 Parallelism P를 갖는 컬러 이미지

  • hsvYxP: 컬러 구성 요소당 Y/3비트(HSV 컬러 모델) 및 Parallelism P를 갖는 컬러 이미지

  • yuvYxP: 컬러 구성 요소당 Y/3비트(YUV 컬러 모델) 및 Parallelism P를 갖는 컬러 이미지

  • ycrcbYxP: 컬러 구성 요소당 Y/3비트(YCrCb 컬러 모델) 및 Parallelism P를 갖는 컬러 이미지

  • labYxP: 컬러 구성 요소당 Y/3비트(LAB 컬러 모델) 및 Parallelism P를 갖는 컬러 이미지

  • xyzYxP: 컬러 구성 요소당 Y/3비트(XYZ 컬러 모델) 및 Parallelism P를 갖는 컬러 이미지

VA IP 코어를 둘러싼 플랫폼 디자인이 적절한 이미지 통신 채널 구성을 지원하는 경우, 이러한 포맷의 모든 조합을 지원하도록 ImgIn 인터페이스 클래스를 정의할 수 있습니다.

픽셀 구성 요소가 부호 있는(signed) 데이터로 해석되는지 혹은 부호 없는(unsigned) 데이터로 해석되는지 지정할 수 있습니다.

ImgIn 인터페이스 클래스 정의하기

다양한 클래스의 ImgIn 인터페이스를 정의할 수 있습니다. 이러한 인터페이스 클래스는 지원되는 이미지 프로토콜의 수와 종류, 지원되는 데이터 폭, 사용되는 클럭 신호 및 기타 여러 측면에서 다를 수 있습니다. 각 ImgIn 인터페이스 클래스는 VA IP Core에서 둘 이상 존재할 수 있습니다.

eVA IP Core 예시

그림 196. eVA IP Core 예시


위 그림의 예시 IP Core는 두 개의 ImgIn 클래스와 두 개의 ImgOut 클래스를 보여줍니다. 두 클래스 모두 여러 인스턴스를 사용할 수 있습니다. 이 VA IP Core는 ImgIn 클래스 ImgIn_A의 ImgIn 포트 7개, ImgIn 클래스 ImgIn_B의 ImgIn 포트 5개, ImgOut 클래스 ImgOut_a의 ImgOut 포트 2개, 그리고 ImgOut 클래스 ImgOut_b의 ImgOut 포트 5개를 제공합니다.

[참고] VisualApplets의 관련 오퍼레이터

정의된 각 ImgIn 클래스에 대해, 나중에 하나 이상의 플랫폼별 VisualApplets ImgIn 오퍼레이터가 생성될 수 있습니다(자세한 내용은 '하드웨어별 오퍼레이터 정의하기' 참조). 이러한 오퍼레이터는 (IP Core 통합 후) VisualApplets 내에서 인스턴스화되어 인터페이스를 구현할 수 있습니다.

구성이(클래스가) 동일한 인터페이스 포트가 둘 이상 존재하는 경우, 해당 오퍼레이터의 인스턴스는 VisualApplets의 자원 관리에 의해 제어되어 그중 어느 포트에나 연결될 수 있습니다.

VisualApplets의 자원 관리: VisualApplets에서는 각 ImgIn 클래스에 대해 동일한 이름의 자원이 설정됩니다. VisualApplets의 이 자원 대화 상자에서 할당을 정의할 수 있습니다.

ImgIn 포트 설정하기

eVA IP Core로의 이미지 스트리밍을 허용하는 포트를 정의하려면 다음을 수행하십시오.

  1. ImgIn 탭으로 이동합니다.

  2. 더하기 아이콘을 클릭합니다.

  3. Base Name 필드에 정의하려는 ImgIn 인터페이스 클래스의 이름을 입력합니다. 필드를 더블클릭하여 작성할 수 있습니다.

  4. Multiplicity 필드에서 VA IP Core에 가질 이 클래스의 ImgIn 인터페이스 수를 정의합니다. 필드를 더블클릭하여 작성할 수 있습니다.

    정의된 ImgIn 포트(예시에서는 ImgInGray 클래스의 인터페이스 3개)가 IP Core의 그래픽 표현에 즉시 표시됩니다.

  5. ImgIn 인터페이스 클래스의 추가 속성을 정의합니다.

    Flow control: 이 파라미터는 VisualApplets 애플리케이션이 들어오는 이미지 데이터 흐름을 일시적으로 중지하는 것을 허용할지 여부를 결정합니다. YES로 설정하면 입력 데이터를 일시 중지하기 위한 내부 흐름 제어 메커니즘이 구현됩니다. NO로 설정하면 흐름 제어 메커니즘이 구현되지 않습니다. ImgIn 포트에 일시 중지 가능한 이미지 소스가 연결되어 있는 경우 흐름 제어 메커니즘을 구현하는 것이 유용합니다. 일시 중지할 수 없는 소스를 사용하는 경우 NO를 선택하십시오.

    • Yes: 입력 데이터를 일시 중지하기 위한 흐름 제어 메커니즘이 구현됩니다.

    • NO: 입력 데이터를 일시 중지하기 위한 흐름 제어 메커니즘이 구현되지 않습니다.

    Sync. mode: 이 파라미터는 이미지 인터페이스 클럭(ImgIn 포트의 iPORTIDXClk)과 디자인 클럭(IP Core의 iDesignClk) 간의 관계를 나타냅니다. 다음과 같은 값들을 사용할 수 있습니다.

    • SyncToDesignClk – 인터페이스 포트가 iDesignClk와 동기화됩니다. 이미지 인터페이스 포트의 외부 클럭 입력은 무시됩니다.

    • SyncToDesignClk2x – 인터페이스 포트가 iDesignClk2x와 동기화됩니다. ImgIn 포트의 외부 클럭 입력은 무시됩니다.

    [참고] 이중 픽셀 심도 사용 가능

    ImgIn 포트에 iDesignClk2x를 사용하는 경우, 포트 iv..Data에 정의한 것의 두 배에 달하는 비트 심도를 가진 이미지 프로토콜을 정의할 수 있습니다(즉, Bit Width와 Parallelism의 곱이 두 배 크기가 될 수 있습니다). 이 경우 시스템에 의해 인수가 2인 자동 병렬 업(parallel-up)이 수행됩니다.

    • Async – 비동기 인터페이스: 인터페이스 포트는 ImgIn 인터페이스의 외부 클럭 입력과 동기화됩니다.

    Async를 선택하는 경우 다음을 수행해야 합니다.

    • ImgIn 인터페이스의 iImgInClk 포트에 클럭 신호를 제공하고

    • 합성 제약 조건(제약 조건 파일)에 클럭 도메인 전환 제약 조건을 정의해야 합니다.

    [참고] 이중 픽셀 심도 사용 가능

    iDesignClk보다 훨씬 높은 클럭 신호 주파수를 iImgInClk 포트에 제공하는 경우, 포트 iv..Data에 정의한 비트 심도의 두 배에 달하는 이미지 프로토콜을 정의할 수 있습니다(즉, Bit Width와 Parallelism의 곱이 두 배 크기가 될 수 있습니다). 이 경우 시스템에 의해 인수가 2인 자동 병렬 업이 수행됩니다.

    [참고] iDesignClk 또는 iDesignClk2x 사용

    Basler는 가능하면 동기화를 위해 iDesignClk 또는 iDesignClk2x를 사용할 것을 권장합니다.

    Fifo depth: 연결된 VisualApplets 인터페이스 오퍼레이터가 최소한으로 구현해야 하는 입력 데이터용 버퍼 FIFO의 깊이를 여기에 정의합니다. 값은 15에서 1023 사이의 2의 거듭제곱에서 1을 뺀 값이어야 합니다.

    Port width: 이미지 데이터 포트의 너비를 여기에 정의합니다.

ImgIn 인터페이스 클래스에 대한 이미지 프로토콜 정의

이 ImgIn 인터페이스 클래스가 지원하도록 할 이미지 프로토콜을 정의해야 합니다. 지정하려는 모든 프로토콜이 완료될 때까지 프로토콜을 하나씩 차례대로 정의하십시오.

[참고] VisualApplets의 관련 오퍼레이터

VA IP 코드를 FPGA 디자인에 통합한 후, 이미지 처리 응용 프로그램 개발자는 VisualApplets에서 ImgIn 오퍼레이터를 인스턴스화하고, 주어진 응용 프로그램에서 이 오퍼레이터 인스턴스에 의해 구현되는 ImgIn 인터페이스(및 오퍼레이터 자체)가 지원하는 프로토콜 중 어떤 프로토콜이 구현되는지 정의합니다.

  1. Format 열의 화살표를 클릭하고 형식 목록에서 원하는 형식을 선택하십시오.

    지원되는 이미지 형식에 대한 자세한 설명은 '지원되는 ImageIn 형식(Supported ImageIn Formats)'에서 확인하십시오.

  2. Pix.Width 열의 필드를 두 번 클릭합니다.

    필요한 픽셀 데이터 Bit Width를 입력합니다(값 범위: [1..64]).

    픽셀 데이터 너비는 64비트로 제한됩니다. 모든 비그레이 컬러 형식의 픽셀 데이터 너비는 3의 배수여야 하며 63비트로 제한됩니다.

  3. Parall 열의 필드를 두 번 클릭합니다. 필요한 Parallelism를 입력합니다.

    The parallelism P defines the number of pixels which are contained in a single data word at the interface port. It must be chosen from the following set of allowed values: P = {1, 2, 4, 8, 16, 32, 64}. Packing of image data into words of a given interface width N (Port width, see above) must follow certain rules:

    • 모든 P 픽셀의 데이터는 길이가 N인 단일 워드에 맞아야 합니다. 데이터는 LSB 정렬되어 저장됩니다. 즉, 픽셀 너비 Z(그레이의 경우 Z=X, 컬러의 경우 Z=Y)에 대해 데이터는 다음과 같이 분배됩니다: Pixel[0]->Bits[0..Z-1] .. Pixel[P-1]->Bits[(P-1)*Z..P*Z-1].

    • RGB 이미지의 경우 세 가지 색상 성분이 LSB 정렬되어 다음 순서로 서브 워드 [0..Y-1]에 패킹됩니다. 빨간색은 비트 [0..Y/3-1 ]을, 초록색은 비트 [Y/3..2*Y/3-1]을, 파란색은 비트 [2*Y/3..3*Y/3-1]을 사용합니다.

    • HSI 컬러 이미지의 경우 H가 빨간색, S가 초록색, I가 파란색의 역할을 한다는 점을 제외하면 RGB와 동일한 규칙이 적용됩니다.

    • HSL 컬러 이미지의 경우 H가 빨간색, S가 초록색, L이 파란색의 역할을 한다는 점을 제외하면 RGB와 동일한 규칙이 적용됩니다.

    • HSV 컬러 이미지의 경우 H가 빨간색, S가 초록색, V가 파란색의 역할을 한다는 점을 제외하면 RGB와 동일한 규칙이 적용됩니다.

    • YUV 컬러 이미지의 경우 RGB와 동일한 규칙이 적용되며, 여기서 Y는 빨강, U는 초록, V는 파랑의 역할을 합니다.

    • YCrCb 컬러 이미지의 경우 RGB와 동일한 규칙이 적용되며, 여기서 Y는 빨강, Cr은 초록, Cb는 파랑의 역할을 합니다.

    • LAB 컬러 이미지의 경우 RGB와 동일한 규칙이 적용되며, 여기서 L은 빨강, A는 초록, B는 파랑의 역할을 합니다.

    • XYZ 컬러 이미지의 경우 RGB와 동일한 규칙이 적용되며, 여기서 X는 빨강, Y는 초록, Z는 파랑의 역할을 합니다.

  4. Dimension 열의 화살표를 클릭하여 정의 중인 프로토콜의 이미지 차원을 선택합니다.

    차원의 의미는 다음과 같습니다.

    • Area(기본값): 이미지는 라인 끝 및 프레임 끝 마커에 의해 구조화됩니다. VisualApplets에서 이미지 차원 Area는 2D로 명명됩니다. 영역 카메라는 2D 이미지 소스가 될 수 있습니다.

    • Line: 이미지는 라인 끝 마커에 의해 구조화됩니다. 들어오는 라인을 프레임으로 나누는 프레임 끝 마커가 없습니다. VisualApplets에서 이미지 차원 Line은 1D로 명명됩니다. 라인 카메라는 1D 이미지 소스가 될 수 있습니다.

    • Raw: 들어오는 이미지 데이터를 라인과 프레임으로 나누는 라인 끝 및 프레임 끝 마커가 없습니다. 이미지 입력 스트림은 픽셀 너비가 1인 끝없는 픽셀 스트림으로 구성됩니다. VisualApplets에서 이미지 차원 Raw는 0D로 명명됩니다.

  5. Signedness 열의 화살표를 클릭하고 정의 중인 프로토콜의 이미지 차원을 선택합니다.

    • Unsigned(기본값): 픽셀 데이터가 부호 없는 픽셀 컴포넌트로 해석됩니다.

    • Signed: 픽셀 데이터가 부호 있는 픽셀 컴포넌트로 해석됩니다.

  6. 이미지 클래스가 지원하도록 할 모든 이미지 프로토콜을 정의할 때까지 1~5단계를 반복합니다.

[참고] 이미지 프로토콜 정의를 위한 내부 ID

커널 크기는 암시적으로 1x1로 가정됩니다. 나열된 각 프로토콜에는 번호가 매겨지며, 목록은 0부터 시작합니다. 이 번호들은 지정된 ImgIn 클래스의 프로토콜 ID를 구성합니다. ID는 GUI에 표시되지 않습니다. 따라서 정의하는 각 ImgIn 클래스에는 사용자가 정의한 이미지 프로토콜의 내부 ID 목록이 있습니다.

다음 단계 중 하나에서, 인스턴스가 정의된 ImgIn 클래스에 연결될 수 있는 하나 이상의 VisualApplets ImgIn 연산자를 정의할 수 있습니다(연산자 정의 방법에 대한 자세한 내용은 '하드웨어 전용 연산자 정의하기'에서 확인할 수 있습니다). 이러한 각 연산자에 대해 해당 이미지 포트에 대해 지정한 모든 이미지 프로토콜 또는 그 하위 집합을 할당할 수 있습니다.

VisualApplets에서 ImgIn 연산자는 VisualApplets 사용자가 옵션 목록에서 이미지 포맷을 선택할 수 있는 파라미터를 제공합니다. 선택에 따라 해당 ID가 관련 IP 코어 ImgIn 포트(ov..FID_D)에 할당됩니다. 이를 통해 연결된 글루 로직(glue logic)은 선택한 포맷에 따라 동작을 조정할 수 있습니다.

ImgIn 인터페이스 클래스에 대한 추가 파라미터 정의

ImgIn 인터페이스 클래스에 지정할 추가 파라미터를 정의할 수 있습니다. 이러한 (동적) 파라미터는 런타임 중에 설정할 수 있습니다. 런타임 인터페이스를 통해 액세스할 수 있습니다('런타임 소프트웨어 인터페이스' 참조).

이러한 파라미터는 VA IP 코어의 레지스터 슬레이브 인터페이스('레지스터 슬레이브 인터페이스' 참조)를 통해 통신됩니다.

ovPORTIDX_PARNAME_D: 파라미터 PARNAME의 데이터. 방향: Out. Bit width를 정의할 수 있습니다. 이 신호는 정의된 각 파라미터에 대해 생성됩니다.

oPORTIDX_PARNAME_Upd: 방향: Out. Bit width: 1. 이 신호는 런타임 소프트웨어에서 파라미터 PARNAME이(가) 업데이트될 때 한 클럭 주기 동안 '1'로 설정됩니다. 이 신호는 정의된 각 파라미터에 대해 생성됩니다.

ImgIn 인터페이스 클래스에 대한 추가 파라미터를 정의하려면:

  1. 프로그램 창의 Parameter ports 영역으로 이동합니다.

  2. 더하기 아이콘을 클릭합니다.

  3. Name 필드에 정의하려는 파라미터의 이름을 입력합니다. 필드를 더블클릭하여 작성합니다.

  4. Width 필드에서 파라미터 포트의 너비 {1,64}를 정의합니다. 필드를 더블클릭하여 작성합니다.

    [참고] 슬레이브 인터페이스 데이터 폭과 실제 레지스터 폭 간의 매핑

    레지스터 인터페이스를 통해 액세스되는 레지스터는 1에서 64 사이의 모든 폭을 가질 수 있습니다. 슬레이브 인터페이스 데이터 폭과 VisualApplets 파라미터의 실제 레지스터 폭 간의 매핑은 자동으로 수행됩니다. 레지스터 폭이 레지스터 인터페이스 폭보다 큰 경우 런타임 소프트웨어가 자동으로 액세스를 분할합니다. 이 경우 단일 파라미터가 둘 이상의 레지스터 주소를 소비하게 됩니다.

  5. 이미지 클래스에서 지원하려는 모든 파라미터를 정의할 때까지 2~4단계를 반복합니다.

    'ImgIn 포트 설정', 'ImgIn 인터페이스 클래스에 대한 이미지 프로토콜 정의' 및 'ImgIn 인터페이스 클래스에 대한 추가 파라미터 정의'에 설명된 모든 단계를 수행한 후 첫 번째 ImgIn 인터페이스 클래스가 설정됩니다.

  6. 더 많은 ImgIn 인터페이스 클래스가 필요한 경우, 'ImgOut 포트 설정'부터 다시 시작하여 다음 ImgIn 인터페이스 클래스를 정의합니다.

[참고] 필요한 만큼 ImgIn 인터페이스 클래스 정의하기

필요한 만큼 인터페이스 클래스를 정의할 수 있습니다. 다음 ImgIn 인터페이스 클래스를 설정하려면 'ImgIn 포트 설정' 섹션에 설명된 단계부터 다시 시작하십시오.

필요한 ImgOut 인터페이스 설명 입력

VA IP 코어의 ImgOut 인터페이스

이미지 스트리밍 포트 ImgOut은 VA IP 코어에서 주변 FPGA 로직으로 이미지 데이터를 쓰기 위한 범용 이미지 통신 인터페이스입니다. ImgOut 포트는 단순한 FIFO 인터페이스와 추가 파라미터 포트로 구성됩니다. 인터페이스 포트는 철저하게 파라미터화되어 있습니다. 기존 파라미터 외에도 연결된 FPGA 로직으로 파라미터를 전달하기 위한 추가 레지스터를 정의할 수 있습니다.

이미지 데이터는 ImgOut 유형의 인터페이스 포트를 통해 VA IP 코어를 떠납니다. 여러 클래스의 ImgOut 포트를 정의할 수 있으며 각각에 대해 여러 인스턴스가 가능합니다.

이미지 출력 인터페이스의 포트 레이아웃
이미지 출력 인터페이스의 포트 레이아웃

그림 197. 이미지 출력 인터페이스의 포트 레이아웃


다음 표는 인터페이스 신호에 대해 설명합니다. 여기서 PORTID는 해당 이미지 입력 포트 클래스의 이름이고, X는 동일 클래스의 여러 포트를 구분하기 위한 포트 번호입니다.

포트

방향

Width

설명

iPORTIDXClk 에서 1 FIFO에서 읽기 위한 클럭입니다. 포트가 동기 통신용으로 구성된 경우 이 입력은 무시됩니다. (ImgOut 인터페이스 구성은 'ImgOut 인터페이스 클래스 정의'에 설명되어 있습니다.)
ivPORTIDXData Out PORTID 너비 사용자 정의 읽기를 위한 데이터
iPORTIDXRead 에서 1

읽기 액세스 수행

iPORTIDXEndOfLine Out 1 라인의 끝을 신호로 알립니다. 이 플래그가 활성화되면 데이터에 픽셀 값이 포함되지 않습니다.
iPORTIDXEndOfFrame Out 1 프레임의 끝을 신호로 알립니다. 이 플래그가 활성화되면 데이터에 픽셀 값이 포함되지 않습니다. 프레임 끝 신호는 라인 끝 신호와 일치해야 합니다.
oPORTIDXFIFOEmpty Out 1 출력 FIFO가 비어 있습니다.
ovPORTIDXFIFOCnt Out

Ceil Log2(

PORTIDFIFODepth

)

출력 FIFO의 워드 수입니다. 이 신호는 "Almost Empty"와 같은 FIFO 플래그를 생성하는 데 사용할 수 있습니다.
oPORTIDXReset Out 1 프로세스의 리셋 신호
oPORTIDXEnable Out 1 프로세스의 인에이블 신호
ovPORTIDX_PARNAME_D Out S 파라미터 PARNAME의 데이터입니다. S는 선택된 bit width에 따라 달라집니다. 이 신호는 정의된 각 파라미터에 대해 생성됩니다.
oPORTIDX_PARNAME_Upd Out 1 이 신호는 런타임 소프트웨어에서 파라미터 PARNAME이(가) 업데이트될 때 한 클럭 주기 동안 '1'로 설정됩니다. 이 신호는 정의된 각 파라미터에 대해 생성됩니다.
ovPORTIDX_FID_D Out Ceil Log2(N). Ceil Log2(N)은 (N-1) 값을 표현하는 데 필요한 비트 수입니다. 현재 이미지 데이터 포맷을 알리는 미리 정의된 파라미터입니다. N은 이 포맷에 지정된 이미지 프로토콜의 수입니다.

다음 도표는 간단한 예를 통해 ImgOut 인터페이스를 통한 이미지 통신 타이밍을 보여줍니다. 32비트 그레이 픽셀 값 3개로 구성된 2개 라인의 프레임이 전송됩니다. 파형에서 이름 부분 PORTIDX는 imgout(으)로 대체되었습니다.

이미지 출력 포트의 프로토콜을 보여주는 파형

그림 198. 이미지 출력 포트의 프로토콜을 보여주는 파형


지원되는 ImgOut 포맷

단일 ImgOut 포트를 통해 다양한 프로토콜을 구동할 수 있습니다. VisualApplets는 다음과 같은 이미지 포맷을 지원합니다.

  • grayXxP: 픽셀당 X비트 및 Parallelism P를 갖는 그레이 이미지

  • rgbYxP: 컬러 구성 요소(빨강, 초록, 파랑)당 Y/3비트 및 Parallelism P를 갖는 컬러 이미지

  • hsiYxP: 컬러 구성 요소당 Y/3비트(HSI 컬러 모델) 및 Parallelism P를 갖는 컬러 이미지

  • hslYxP: 컬러 구성 요소당 Y/3비트(HSL 컬러 모델) 및 Parallelism P를 갖는 컬러 이미지

  • hsvYxP: 컬러 구성 요소당 Y/3비트(HSV 컬러 모델) 및 Parallelism P를 갖는 컬러 이미지

  • yuvYxP: 컬러 구성 요소당 Y/3비트(YUV 컬러 모델) 및 Parallelism P를 갖는 컬러 이미지

  • ycrcbYxP: 컬러 구성 요소당 Y/3비트(YCrCb 컬러 모델) 및 Parallelism P를 갖는 컬러 이미지

  • labYxP: 컬러 구성 요소당 Y/3비트(LAB 컬러 모델) 및 Parallelism P를 갖는 컬러 이미지

  • xyzYxP: 컬러 구성 요소당 Y/3비트(XYZ 컬러 모델) 및 Parallelism P를 갖는 컬러 이미지

VA IP 코드를 둘러싼 플랫폼 설계가 적절한 이미지 통신 채널 구성을 지원하는 경우, 이러한 포맷의 조합을 지원하도록 ImgOut 인터페이스 클래스를 정의할 수 있습니다.

ImgOut 인터페이스 클래스 정의

다양한 클래스의 ImgOut 인터페이스를 정의할 수 있습니다. 이러한 인터페이스 클래스는 지원되는 이미지 프로토콜의 수와 종류, 지원되는 데이터 폭, 사용되는 클럭 신호 및 기타 여러 측면에서 다를 수 있습니다. 각 ImgOut 인터페이스 클래스는 VA IP 코어에서 둘 이상 존재할 수 있습니다.

eVA IP Core 예시

그림 199. eVA IP 코어 예시


위 그림의 예시는 두 개의 ImgIn 클래스와 두 개의 ImgOut 클래스를 보여줍니다. 두 클래스의 여러 인스턴스를 사용할 수 있습니다. 이 VA IP 코어는 ImgIn 클래스 ImgIn_A의 ImgIn 포트 7개, ImgIn 클래스 ImgIn_B의 ImgIn 포트 5개, ImgOut 클래스 ImgOut_a의 ImgOut 포트 2개, 그리고 ImgOut 클래스 ImgOut_b의 ImgOut 포트 5개를 제공합니다.

[참고] VisualApplets의 관련 오퍼레이터

정의된 각 ImgOut 클래스에 대해 나중에 하나 이상의 플랫폼별 VisualApplets ImgOut 오퍼레이터를 정의할 수 있습니다(자세한 내용은 '하드웨어별 오퍼레이터 정의' 참조). 이러한 오퍼레이터는 (IP 코어 통합 후) VisualApplets 내에서 인스턴스화되어 인터페이스를 구현할 수 있습니다. 동일한 구성(클래스)의 인터페이스 포트가 둘 이상 존재하는 경우, 해당 오퍼레이터의 인스턴스는 VisualApplets의 리소스 관리에 의해 제어되어 그중 어느 포트에나 연결될 수 있습니다.

ImgOut 포트 설정

VA IP 코어에서 주변 FPGA 디자인으로의 이미지 스트리밍을 허용하는 포트를 정의하려면 다음을 수행하십시오.

  1. ImgOut 탭으로 이동합니다.

  2. 더하기 아이콘을 클릭합니다.

  3. Base Name 필드에 정의하려는 ImgOut 인터페이스 클래스의 이름을 입력합니다. 작성하려면 필드를 더블클릭하십시오.

  4. Multiplicity 필드에서 VA IP 코어에 이 클래스의 ImgOut 인터페이스를 몇 개 둘 것인지 정의합니다. 작성하려면 필드를 더블클릭하십시오.

    정의된 ImgOut 포트(이 예시에서는 ImgOutGray 클래스의 인터페이스 3개)가 IP 코어의 그래픽 표현에 즉시 표시됩니다.

  5. ImgOut 인터페이스 클래스의 추가 속성을 정의합니다.

    Flow control {Yes,No}:

    • Yes: 예(Yes)를 선택하면 출력 데이터 일시 중지를 위한 흐름 제어 메커니즘이 구현됩니다. 예(Yes) 값을 사용하면 VisualApplets 디자인이 임의의 기간 동안 출력 FIFO에서 읽는 것을 차단할 수 있습니다. FIFO 포화 신호는 더 이상 데이터를 쓸 수 없음을 알립니다.

    • NO: No을 선택하면 출력 데이터 차단을 위한 흐름 제어 메커니즘이 구현되지 않습니다.

    Sync. mode: 이 파라미터는 이미지 인터페이스 클럭(ImgOut 포트의 iPORTIDXClk)과 디자인 클럭(IP 코어의 iDesignClk) 간의 관계를 나타냅니다. 다음과 같은 값들을 사용할 수 있습니다:

    • SyncToDesignClk – 인터페이스 포트가 iDesignClk와 동기화됩니다. ImgOut 포트의 외부 클럭 입력은 무시됩니다.

    • SyncToDesignClk2x – 인터페이스 포트가 iDesignClk2x와 동기화됩니다. ImgOut 포트의 외부 클럭 입력은 무시됩니다.

    [참고] 이중 픽셀 심도 사용 가능

    ImgOut 포트에 iDesignClk2x를 사용하는 경우, 포트 ov..Data에 정의한 비트 심도의 두 배에 해당하는 이미지 프로토콜을 정의할 수 있습니다(즉, bit width와 Parallelism의 곱을 두 배 크기로 지정할 수 있음). 이 경우 시스템에 의해 팩터 2의 자동 parallel-up이 수행됩니다.

    • Async – 비동기 인터페이스: 인터페이스 포트가 ImgOut 인터페이스의 외부 클럭 입력에 동기화됩니다.

    Async를 선택하는 경우 다음을 수행해야 합니다.

    • ImgOut 인터페이스의 iPortIDXClk 포트에 클럭 신호를 제공하며,

    • 합성 제약 조건(제약 조건 파일)에 클럭 도메인 전환 제약 조건을 정의해야 합니다.

    [참고] 이중 픽셀 심도 사용 가능

    ImgOut 포트에 iDesignClk2x를 사용하는 경우, 포트 ov..Data에 정의한 비트 심도의 두 배에 해당하는 이미지 프로토콜을 정의할 수 있습니다(즉, bit width와 parallelism의 곱을 두 배 크기로 지정할 수 있음). 이 경우 시스템에 의해 팩터 2의 자동 parallel-up이 수행됩니다.

    [참고] iDesignClk 또는 iDesignClk2x 사용

    Basler는 가능하면 동기화를 위해 iDesignClk 또는 iDesignClk2x를 사용할 것을 권장합니다.

    Fifo depth: 연결된 Visual Applets 인터페이스 오퍼레이터가 최소한으로 구현해야 하는 출력 데이터용 버퍼 FIFO의 깊이를 여기서 정의합니다. 값은 15에서 1023 사이의 '2의 거듭제곱에서 1을 뺀 값'이어야 합니다.

    Port width: 이미지 데이터 포트의 너비를 여기에 정의합니다.

ImgOut 인터페이스 클래스에 대한 이미지 프로토콜 정의

이 ImgOut 인터페이스 클래스가 지원할 이미지 프로토콜을 정의해야 합니다. 지정하려는 모든 프로토콜이 완료될 때까지 프로토콜을 하나씩 차례대로 정의합니다.

[참고] VisualApplets의 관련 오퍼레이터

VA IP 코드를 FPGA 디자인에 통합한 후, 이미지 처리 애플리케이션 개발자는 VisualApplets에서 ImgOut 오퍼레이터를 인스턴스화하고, 특정 애플리케이션에서 ImgOut 인터페이스(및 오퍼레이터 자체)가 지원하는 프로토콜 중 어떤 프로토콜이 이 오퍼레이터 인스턴스에 의해 구현되는지 정의합니다.

  1. Format 열의 화살표를 클릭하고 형식 목록에서 원하는 형식을 선택하십시오.

    지원되는 이미지 포맷에 대한 자세한 설명은 'Supported ImageOut Formats'에서 확인할 수 있습니다.

  2. Pix.Width 열의 필드를 두 번 클릭합니다.

    필요한 픽셀 데이터 Bit Width를 입력합니다(값 범위: [1..64]).

    픽셀 데이터 너비는 64비트로 제한됩니다. 모든 비그레이 컬러 형식의 픽셀 데이터 너비는 3의 배수여야 하며 63비트로 제한됩니다.

  3. Parall 열의 필드를 두 번 클릭합니다. 필요한 Parallelism를 입력합니다.

    The parallelism P defines the number of pixels which are contained in a single data word at the interface port. It must be chosen from the following set of allowed values: P = {1, 2, 4, 8, 16, 32, 64}. Packing of image data into words of a given interface width N (Port width, see above) must follow certain rules:

    • 모든 P 픽셀의 데이터는 길이가 N인 단일 워드에 맞아야 합니다. 데이터는 LSB 정렬되어 저장됩니다. 즉, 픽셀 너비 Z(그레이의 경우 Z=X, 컬러의 경우 Z=Y)에 대해 데이터는 다음과 같이 분배됩니다: Pixel[0]->Bits[0..Z-1] .. Pixel[P-1]->Bits[(P-1)*Z..P*Z-1].

    • RGB 이미지의 경우 세 가지 색상 성분이 LSB 정렬되어 다음 순서로 서브 워드 [0..Y-1]에 패킹됩니다. 빨간색은 비트 [0..Y/3-1 ]을, 초록색은 비트 [Y/3..2*Y/3-1]을, 파란색은 비트 [2*Y/3..3*Y/3-1]을 사용합니다.

    • HSI 컬러 이미지의 경우 H가 빨간색, S가 초록색, I가 파란색의 역할을 한다는 점을 제외하면 RGB와 동일한 규칙이 적용됩니다.

    • HSL 컬러 이미지의 경우 H가 빨간색, S가 초록색, L이 파란색의 역할을 한다는 점을 제외하면 RGB와 동일한 규칙이 적용됩니다.

    • HSV 컬러 이미지의 경우 H가 빨간색, S가 초록색, V가 파란색의 역할을 한다는 점을 제외하면 RGB와 동일한 규칙이 적용됩니다.

    • YUV 컬러 이미지의 경우 RGB와 동일한 규칙이 적용되며, 여기서 Y는 빨강, U는 초록, V는 파랑의 역할을 합니다.

    • YCrCb 컬러 이미지의 경우 RGB와 동일한 규칙이 적용되며, 여기서 Y는 빨강, Cr은 초록, Cb는 파랑의 역할을 합니다.

    • LAB 컬러 이미지의 경우 RGB와 동일한 규칙이 적용되며, 여기서 L은 빨강, A는 초록, B는 파랑의 역할을 합니다.

    • XYZ 컬러 이미지의 경우 RGB와 동일한 규칙이 적용되며, 여기서 X는 빨강, Y는 초록, Z는 파랑의 역할을 합니다.

  4. Dimension 열의 화살표를 클릭하여 정의 중인 프로토콜의 이미지 차원을 선택합니다.

    차원의 의미는 다음과 같습니다.

    • Area (기본값): 이미지가 라인 끝(end-of-line) 및 프레임 끝(end-of-frame) 마커로 구조화됩니다. VisualApplets에서 이미지 차원 Area는 "2D"로 명명됩니다.

    • Line: 이미지가 라인 끝 마커로 구조화됩니다. 수신되는 라인을 프레임으로 나누는 프레임 끝 마커가 없습니다. VisualApplets에서 이미지 차원 Line은 "1D"로 명명됩니다.

    • Raw: 수신되는 이미지 데이터를 라인과 프레임으로 나누는 라인 끝 및 프레임 끝 마커가 없습니다. 이미지 입력 스트림은 픽셀 너비가 1인 끝없는 픽셀 스트림으로 구성됩니다. VisualApplets에서 이미지 차원 Raw는 "0D"로 명명됩니다. 라인 카메라는 0D 이미지 소스가 될 수 있습니다.

  5. Signedness 열의 화살표를 클릭하고 정의 중인 프로토콜의 이미지 차원을 선택합니다.

    • Unsigned (기본값): 픽셀 데이터가 부호 없는(unsigned) 픽셀 컴포넌트로 패킹됩니다.

    • Signed: 픽셀 데이터가 부호 있는(signed) 픽셀 컴포넌트로 패킹됩니다.

  6. 이미지 클래스가 지원하도록 할 모든 이미지 프로토콜을 정의할 때까지 1~5단계를 반복합니다.

[참고] 이미지 프로토콜 정의를 위한 내부 ID

커널 크기는 암시적으로 1x1로 가정됩니다. 나열된 각 프로토콜에는 번호가 지정되며 목록은 0부터 시작합니다. 이 번호들은 주어진 ImgOut 클래스의 프로토콜 ID를 구성합니다. ID는 GUI에 표시되지 않습니다. 따라서 정의하는 각 ImgOut 클래스에는 사용자가 정의한 이미지 프로토콜의 내부 ID 목록이 포함됩니다.

다음 단계 중 하나에서 VisualApplets ImgOut 오퍼레이터를 정의할 수 있습니다. 이 오퍼레이터의 인스턴스는 정의된 ImgOut 클래스에 연결될 수 있습니다(오퍼레이터 정의 방법은 'Defining Hardware-Specific Operators'에서 확인할 수 있습니다). 각 ImgOut 오퍼레이터에 대해 해당 이미지 포트에 지정한 모든 이미지 프로토콜 또는 그 하위 집합을 할당할 수 있습니다.

VisualApplets에서 ImgOut 오퍼레이터는 VisualApplets 사용자가 목록 옵션 중에서 이미지 포맷을 선택할 수 있는 파라미터를 제공합니다. 선택에 따라 해당 ID가 관련 IP 코어 ImgOut 인터페이스 포트(ov..FID_D)에 할당됩니다. 이를 통해 연결된 글루 로직(glue logic)이 선택된 포맷에 따라 동작을 조정할 수 있습니다.

ImgOut 인터페이스 클래스에 대한 추가 파라미터 정의

ImgOut 인터페이스 클래스에 포함할 추가 파라미터를 정의할 수 있습니다. 이러한 (동적) 파라미터는 런타임 중에 설정 및 재설정할 수 있으며, 런타임 인터페이스를 통해 액세스할 수 있습니다('Runtime Software Interface' 참조).

런타임 중에는 VA IP 코드의 레지스터 슬레이브 인터페이스('Register Slave Interface' 참조)를 통해 통신됩니다.

ovPORTIDX_PARNAME_D: 파라미터 PARNAME의 데이터. 방향: 출력(Out). 아래 설명된 대로 bit width를 정의할 수 있습니다. 이 신호는 정의된 각 파라미터에 대해 생성됩니다.

oPORTIDX_PARNAME_Upd: 방향: Out. Bit width: 1. 이 신호는 런타임 소프트웨어에서 파라미터 PARNAME이(가) 업데이트될 때 한 클럭 주기 동안 '1'로 설정됩니다. 이 신호는 정의된 각 파라미터에 대해 생성됩니다.

ImgOut 인터페이스 클래스에 대한 추가 매개변수를 정의하려면:

  1. 프로그램 창의 Parameter ports 영역으로 이동합니다.

  2. 더하기 아이콘을 클릭합니다.

  3. Name 필드에 정의하려는 파라미터의 이름을 입력합니다. 필드를 더블클릭하여 작성합니다.

  4. Width 필드에서 파라미터 포트의 너비 {1,64}를 정의합니다. 필드를 더블클릭하여 작성합니다.

    [참고] 슬레이브 인터페이스 데이터 폭과 실제 레지스터 폭 간의 매핑

    레지스터 인터페이스를 통해 액세스되는 레지스터는 1에서 64 사이의 모든 폭을 가질 수 있습니다. 슬레이브 인터페이스 데이터 폭과 VisualApplets 파라미터의 실제 레지스터 폭 간의 매핑은 자동으로 수행됩니다. 레지스터 폭이 레지스터 인터페이스 폭보다 큰 경우 런타임 소프트웨어가 자동으로 액세스를 분할합니다. 이 경우 단일 파라미터가 둘 이상의 레지스터 주소를 소비하게 됩니다.

  5. 이미지 클래스에서 지원하려는 모든 파라미터를 정의할 때까지 2~4단계를 반복합니다.

    'Setting up ImgOut Ports', 'Defining Image Protocols for an ImgOut Interface Class', 및 'Defining Additional Parameters for an ImgOut Interface Class'에 설명된 모든 단계를 수행한 후 첫 번째 ImgOut 인터페이스 클래스 설정이 완료됩니다.

  6. 더 많은 ImgOut 인터페이스 클래스가 필요한 경우 'Setting up ImgOut Ports'부터 다시 시작하여 다음 ImgOut 인터페이스 클래스를 정의하세요.

[참고] 필요한 만큼 ImgOut 인터페이스 클래스 정의하기

필요한 만큼 인터페이스 클래스를 정의할 수 있습니다. 다음 ImgOut 인터페이스 클래스를 설정하려면 'Setting up ImgOut Ports'에 설명된 단계부터 다시 시작하세요.

GPIO 정의 입력

범용 입력 신호(GPI) 및 범용 출력 신호(GPO)가 VA IP Core로 들어오거나 나갈 수 있습니다. 이러한 신호는 트리거 및 공정 제어에 사용할 수 있습니다.

아래에 설명된 대로 GPI 및 GPO 신호의 수를 구성할 수 있습니다.

eVA 플랫폼 설명에 정의된 모든 GPI 또는 GPO 신호에는 VA IP Core에 해당하는 입력 또는 출력 포트가 있습니다. NAME이 VisualApplets에 표시되는 GPI 또는 GPO 신호의 이름인 경우 신호 포트의 이름은 다음과 같습니다.

  • 너비가 1인 입력 신호의 경우 iSig_NAME

  • 너비가 1인 출력 신호의 경우 oSig_NAME

모든 전용 I/O 신호는 iDesignClk 클럭과 동기화됩니다.

포트 방향 Width 설명
iSig_NAME 에서 1 GPI 포트의 입력 신호
oSig_NAME Out 1 GPO 포트의 출력 신호

VA IP Core의 GPI 포트를 정의하려면:

  1. GPIO 탭으로 이동합니다.

  2. 다음 파라미터 블록에서 범용 입력 신호 영역에서 더지폐 아이콘을 클릭합니다. 아이콘을 클릭합니다.

  3. 이제 사용할 수 있는 필드에 정의하려는 GPI 포트의 이름을 입력합니다. 입력하려면 필드를 두 번 클릭하세요.

  4. VA IP Core에서 사용할 수 있도록 하려는 모든 GPI 포트를 정의할 때까지 3단계와 4단계를 반복합니다.

  5. General Purpose Output Signals 영역으로 이동합니다.

  6. 더하기 아이콘을 클릭합니다.

  7. 이제 사용할 수 있는 필드에 정의하려는 GPO 포트의 이름을 입력합니다. 입력하려면 필드를 두 번 클릭하세요.

  8. VA IP Core에서 사용할 수 있도록 설정하려는 모든 GPO 포트를 정의할 때까지 7단계와 8단계를 반복합니다.

    정의된 GPI 및 GPO 포트는 IP Core의 그래픽 표현에 즉시 표시됩니다.

[참고] VisualApplets의 관련 오퍼레이터

GPI 및 GPO 신호의 경우, 나중에 하나 이상의 플랫폼별 VisualApplets GPIO 연산자를 정의할 수 있습니다(자세한 내용은 '하드웨어별 연산자 정의' 참조). 이러한 연산자는 하나 이상의 GPIO 리소스에 대한 커넥터로 구성됩니다.

(IP Core 통합 후) 이러한 연산자를 VisualApplets 내에서 인스턴스화하여 IP Core의 하나 이상 GPI 및/또는 GPO 포트에 대한 액세스를 구현할 수 있습니다. VisualApplets 환경은 리소스 충돌을 확인합니다(동일한 입력/출력 핀을 두 개의 연산자 인스턴스에서 사용할 수 없음).

필요한 Memory 인터페이스 정의

추상화된 메모리 인터페이스를 통해 VA IP Core를 외부 메모리에 연결할 수 있습니다. 단일 인터페이스 메커니즘을 통해 모든 종류의 메모리를 연결할 수 있으며, 사용하는 메모리 컨트롤러에 맞게 글루 로직(glue logic)을 통해 eVA 메모리 인터페이스 프로토콜만 조정하면 됩니다.

VA IP Core에서 사용할 수 있는 메모리 인터페이스 포트의 개수를 구성할 수 있습니다. 각 포트에 대해 인터페이스 속성(즉, 주소 및 데이터 너비)을 개별적으로 정의할 수 있습니다.

eVA IP 코어의 Memory 인터페이스

이미지 버퍼 연산자를 사용할 때 VisualApplets은 외부 메모리에 액세스해야 합니다. 대부분의 경우 이는 여러 개의 RAM 뱅크가 됩니다. 메모리 인터페이스 포트는 VisualApplets 디자인 엔트리 내에서 표시되지 않습니다. 그러나 외부 메모리를 사용하는 연산자(예: ImageBuffer)는 VisualApplets의 리소스 관리에서 처리하는 RAM이라는 추상화된 리소스를 소비합니다.

eVA 메모리 인터페이스는 단일 인터페이스 메커니즘을 통해 다양한 메모리 아키텍처를 연결할 수 있도록 설계되었습니다. 추상화된 인터페이스는 기본적으로 외부 메모리 컨트롤러가 액세스를 마스터하는 슬레이브 인터페이스입니다. 슬레이브는 쓰기 및 읽기 명령을 위한 독립적인 FIFO 인터페이스를 통해 쓰기 또는 읽기 액세스를 요구합니다. 연결된 마스터는 명령 가져오기를 확인해야 하며 언제든지 액세스를 수행할 수 있습니다. 플래그 인터페이스를 통해 슬레이브는 요청된 액세스가 수행된 시점을 인식할 수 있습니다. 대기 중인 명령 수와 같은 추가 정보를 위한 선택적 신호가 있습니다. 이러한 신호는 메모리 컨트롤러 마스터가 메모리 액세스를 최적화하는 데 도움이 될 수 있습니다.

eVA 프레임워크는 여러 메모리 포트로 작동할 수 있습니다. 결과 VA IP Core의 I/O 포트에는 접미사 X가 붙으며, 여기서 X는 메모리 인터페이스 채널의 번호입니다.

X가 인터페이스 포트의 색인인 메모리 인터페이스의 포트 레이아웃

그림 200. X가 인터페이스 포트의 색인인 메모리 인터페이스의 포트 레이아웃


  • 비동기 인터페이스가 지정된 경우 모든 I/O는 외부에서 공급되는 클럭 iMemClkX와 동기화됩니다. 또는 동기화 모드를 모든 I/O가 iDesignClk과 동기화되는 SyncToDesignClk으로 설정하거나, I/O가 iDesignClk2x와 동기화되는 SyncToDesignClk2x로 설정할 수 있습니다.

[참고] iDesignClk2x 권장 사항

Basler는 메모리 포트에서 iDesignClk2x 클럭 신호를 사용할 것을 권장합니다.

  • 쓰기 및 읽기 요청이 동시에 발생할 수 있으며, 메모리로 향하는 쓰기 및 읽기 데이터 경로는 완전히 분리되어 있습니다.

  • 쓰기 액세스는 포트 ovMemWrDataX, ovMemWrAddrX, ovMemWrFlagX 및 oMemWrReqX(이하 쓰기 명령이라고 함)를 사용하여 요청됩니다.

  • 읽기 액세스는 포트 ovMemRdAddrX, ovMemRdFlagX, oMemRdReqX(이하 읽기 명령이라고 함)를 사용하여 요청됩니다.

  • 컨트롤러는 액세스 명령을 가져왔음을 확인합니다. 확인(쓰기의 경우 iMemWrAckX, 읽기의 경우 iMemRdAckX) 후 다음 클럭 틱에서 다음 명령이 제공될 수 있습니다. 명령은 해당 요청 포트(oMemWrReqX(쓰기), oMemRdReqX(읽기))를 통해 신호로 전달됩니다.

  • 일부 VA 연산자는 액세스에 플래그(ovMemWrFlagX, ovMemRdFlagX)가 태그로 지정되어야 합니다. 액세스가 수행된 후 컨트롤러는 이 플래그를 메모리 인터페이스(ivMemWrFlagX, ivMemRdFlagX)로 반환해야 합니다. 제공되어야 하는 태그의 최소 너비가 존재합니다.

    • MemWrFlagWidth >= 4

    • MemRdFlagWidth >= 8

다음 표에서는 X가 여러 메모리 포트를 구별하기 위한 포트 번호인 메모리 인터페이스 포트에 대한 자세한 설명을 제공합니다.

포트

방향

Width

설명

iMemClkX

에서

1

메모리 인터페이스 클럭. 포트가 동기 통신용으로 구성된 경우 이 입력은 무시됩니다.

ovMemWrDataX

Out

MemDataWidthX

메모리 컨트롤러로의 쓰기 데이터 출력

ovMemWrAddrX

Out

MemAddrWidthX

쓰기 주소

ovMemWrFlagX

Out

MemWrFlagWidthX

쓰기 플래그 출력

oMemWrReqX

Out

1

Write Request

iMemWrAckX

에서

1

메모리 컨트롤러가 쓰기 데이터를 수신했음을 알리는 Acknowledge입니다.

oMemWrAlmostEmptyX

Out

1

단일 쓰기 명령만 사용 가능합니다.

ovMemWrCntX

Out

MemWrCntWidthX

사용 가능한 쓰기 명령 수

ivMemWrFlagX

에서

MemWrFlagWidthX

컨트롤러의 쓰기 플래그 출력

iMemWrFlagValidX

에서

1

쓰기 플래그 입력 유효 – iMemWrFlagX가 유효함을 나타내며, 이는 해당하는 oMemWrFlagX로 표시된 쓰기 액세스가 실행되었음을 의미합니다.

ovMemRdAddrX

Out

MemAddrWidthX

읽기 주소 출력

ovMemRdFlagX

Out

MemRdFlagWidthX

읽기 플래그 출력

oMemRdReqX

Out

1

Read Request

iMemRdAckX

에서

1

읽기 주소가 메모리 컨트롤러에 의해 수락되었음을 확인합니다.

oMemRdAlmostEmptyX

Out

1

단일 읽기 주소만 사용 가능합니다.

ovMemRdCntX

Out

MemRdCntWidthX

사용 가능한 읽기 주소 수

ivMemRdFlagX

에서

MemRdFlagWidthX

읽기 플래그 입력 – iMemRdDataValidX가 어서트(assert)된 경우에만 유효합니다.

ivMemRdDataX

에서

MemDataWidthX

Read 데이터 입력

iMemRdDataValidX

에서

1

Read 데이터 유효

다음 그림은 두 액세스가 겹치는 쓰기 및 읽기 액세스용 인터페이스 프로토콜을 보여줍니다. 단순화를 위해, 2클록 주기의 고정된 읽기 지연 시간을 가진 메모리 컨트롤러를 가정했습니다.

메모리 인터페이스 프로토콜을 보여주는 파형

그림 201. 메모리 인터페이스 프로토콜을 보여주는 파형


메모리 인터페이스 정의

다양한 클래스의 메모리 인터페이스를 정의할 수 있습니다. 이러한 인터페이스 클래스는 지원되는 데이터 폭, 주소, 사용되는 클록 신호 및 기타 여러 측면에서 다를 수 있습니다. 각 메모리 인터페이스 클래스는 VA IP Core에서 둘 이상 존재할 수 있습니다.

VA IP Core의 예

그림 202. VA IP Core의 예


(위 그림의) 예시 VA IP Core는 두 개의 메모리 인터페이스 클래스를 보여줍니다. 두 클래스의 여러 인스턴스를 사용할 수 있습니다. 이 VA IP Core는 MemIF_A 인터페이스 클래스의 메모리 인터페이스 1개와 MemIF_B 인터페이스 클래스의 메모리 인터페이스 3개를 제공합니다.

VA IP Core의 메모리 인터페이스를 정의하려면:

  1. Memory 탭으로 이동합니다.

  2. 더하기 아이콘을 클릭합니다.

  3. Memory Type 필드에 정의하려는 메모리 인터페이스 클래스의 이름을 입력합니다. 입력하려면 해당 필드를 더블클릭합니다.

  4. Multiplicity 필드에서 VA IP Core에 이 클래스의 메모리 인터페이스를 몇 개 가질 것인지 정의합니다. 입력하려면 해당 필드를 더블클릭합니다.

    정의된 메모리 인터페이스(예시에서는 MemIF_A 클래스의 인터페이스 6개)가 IP Core의 그래픽 표현에 즉시 표시됩니다.

  5. 메모리 인터페이스 클래스의 추가 속성을 정의합니다:

    Data width: 메모리 인터페이스 클래스의 데이터 폭을 입력합니다.

    Address width: 여기에 주소 폭을 입력합니다.

    Write flags count: ovMemWrFlagX의 너비를 여기에 입력합니다(최소 너비: 4).

    Read flags count: ovMemRdFlagX의 너비를 여기에 입력합니다(최소 너비: 8).

    일부 VisualApplets 오퍼레이터는 플래그를 통해 액세스에 태그를 지정해야 합니다(<em wg-3="">ovMemWrFlagX</em>, <em wg-3="">ovMemRdFlagX</em>). 액세스가 수행된 후, 컨트롤러는 이 플래그를 메모리 인터페이스로 반환해야 합니다(<em wg-3="">ivMemWrFlagX</em>, <em wg-3="">ivMemRdFlagX</em>). 제공해야 하는 태그의 최소 너비가 존재합니다: MemWrFlagWidth >= 4, MemRdFlagWidth >= 8

    Sync. mode: 이 파라미터는 메모리 인터페이스 클럭(메모리 인터페이스의 iMemClkX)과 디자인 클럭(IP Core의 iDesignClk) 간의 관계를 나타냅니다. 다음과 같은 값들을 사용할 수 있습니다:

    • SyncToDesignClk – 인터페이스 포트가 iDesignClk과 동기화되어 작동합니다. 인터페이스 클럭 포트에 대한 외부 클럭 입력은 무시됩니다.

    • SyncToDesignClk2x – 인터페이스 포트가 iDesignClk2x와 동기화됩니다. 인터페이스 클럭 포트에 대한 외부 클럭 입력은 무시됩니다.

    [참고] iDesignClk2x 권장 사항

    Basler는 메모리 포트에서 iDesignClk2x 클럭 신호를 사용할 것을 권장합니다.

    • Async – 비동기 인터페이스: 인터페이스 포트가 클럭 포트 iMemClkX의 외부 클럭 입력에 동기화됩니다.

      Async를 선택하는 경우,

      • 메모리 인터페이스의 iMemClkX 포트에 클럭 신호를 제공해야 하며,

      • 합성 제약 조건(제약 조건 파일)에서 클럭 도메인 스위치를 정의해야 합니다.

    Max. pending read transfers: 코어 외부의 읽기 파이프라인에 있는 최대 데이터 워드 수를 여기에 입력합니다. 이 값은 들어오는 읽기 데이터의 최소 버퍼 깊이를 계산하는 데 관련이 있습니다.

  6. 필요한 모든 메모리 인터페이스 클래스를 정의하려면 2~5단계를 반복합니다.

하드웨어 전용 오퍼레이터 정의

VisualApplets은 이미지 처리 어플리케이션을 정의하기 위한 다양한 오퍼레이터 라이브러리를 제공합니다. 하나를 제외한 모든 라이브러리는 하드웨어 독립적이므로, 포함된 오퍼레이터를 대상 하드웨어와 상관없이 모든 디자인에서 사용할 수 있습니다.

유일한 예외는 VA IP Core 주변의 하드웨어에 직접 연결되는 오퍼레이터입니다: ImgIn 인터페이스, ImgOut 인터페이스, 그리고 메모리 인터페이스가 이에 해당합니다. 이들은 하드웨어 종속적 오퍼레이터이며 IP Core 자체와 함께 설계되어야 합니다.

ImgIn 오퍼레이터 정의

대상 하드웨어용 ImgIn 오퍼레이터를 정의하려면:

  1. VisualApplets Operators 탭으로 이동합니다.

  2. ImgIn Operators 탭으로 이동합니다.

    ImgIn Operators 탭 아래에서 이전에 정의한 ImgIn 인터페이스 클래스 목록을 확인할 수 있습니다.

    (본 예제에서는 ImgIn_A 및 ImgIn_B에 해당합니다.)

  3. 연결할 ImgIn 오퍼레이터를 정의하려는 ImgIn 인터페이스 클래스를 클릭합니다.

  4. 더하기 아이콘을 클릭합니다.

    이제 해당 ImgIn 인터페이스 클래스의 오퍼레이터를 정의하기 위한 옵션이 표시됩니다:

  5. Operator 필드에 정의하려는 오퍼레이터의 이름을 입력합니다. 작성하려면 필드를 더블 클릭합니다.

  6. Icon file 필드에서, VisualApplets의 오퍼레이터 그래픽 표현에 표시될 아이콘 파일의 경로를 정의합니다. VisualApplets에서 전체 그래픽 표현이 어떻게 표시되는지는 프로그램 창의 오른쪽 상단 패널에서 확인할 수 있습니다.

  7. 필드에 도움말 파일에서 연산자와 해당 매개변수를 설명하는 HTML 도움말 파일의 경로를 지정합니다. 더 플러스 아이콘을 클릭하여 파일 시스템에서 파일을 선택하십시오. 시작 이름은 *.html 파일 이름은 반드시 <nameofOperator>.html 이어야 하며 첫 번째 위치에 배치해야 합니다. 다른 파일은 이미지, CSS 파일 등이 될 수 있습니다.

  8. 이 연산자에 대한 정보가 포함된 파일을 두 개 이상 추가하려면 7단계를 반복하십시오. 여러 파일(예: 그래픽 파일이 포함된 HTML 파일 시스템)을 한 번에 일괄 로드할 수 있습니다. 여기에 나열된 첫 번째 HTML 파일이 메인 도움말 파일(도움말 파일 시스템의 시작점)로 간주됩니다.

    메인 도움말 파일은 사용자가 연산자를 인스턴스화하고 디자인 창에서 연산자 인스턴스를 클릭한 다음 F1을 누르는 즉시 VisualApplets 도움말 패널에 표시됩니다.

    Image protocol selection 패널에는 선택한 인터페이스 클래스에 연결된 이미지 프로토콜이 표시됩니다.

  9. 이 연산자가 지원할 이미지 프로토콜을 여기서 선택하십시오.

  10. 필요한 경우 마지막 두 열에서 선택한 이미지 프로토콜의 최대 이미지 너비와 최대 이미지 높이를 지정합니다.

  11. 4~10단계를 반복하여 선택한 인터페이스 클래스에 연결할 수 있는 추가 연산자를 정의합니다.

  12. 3~10단계를 반복하여 다른 인터페이스 클래스의 연산자를 정의합니다.

ImgOut 연산자 정의하기

타겟 하드웨어용 ImgOut 연산자를 정의하려면:

  1. VisualApplets Operators 탭으로 이동합니다.

  2. ImgOut Operators 탭으로 이동합니다.

    ImgOut Operators 탭에서 이전에 정의한 ImgOut 인터페이스 클래스 목록을 확인할 수 있습니다(예시에서는 ImgOut_a 및 ImgOut_b).

  3. 연결할 ImgOut 연산자를 정의할 ImgOut 인터페이스 클래스를 클릭합니다.

  4. 더하기 아이콘을 클릭합니다.

    이제 이 ImgOut 인터페이스 클래스에 대한 연산자를 정의하는 옵션이 표시됩니다.

  5. Operator 필드에 정의하려는 오퍼레이터의 이름을 입력합니다. 작성하려면 필드를 더블 클릭합니다.

  6. Icon file 필드에서 VisualApplets의 연산자 그래픽 표현에 표시될 아이콘 파일의 경로를 지정합니다. VisualApplets에서 전체 그래픽 표현이 어떻게 표시되는지는 프로그램 창의 오른쪽 상단 패널에서 확인할 수 있습니다.

  7. Help file 필드에서 연산자와 해당 매개변수를 설명하는 HTML 도움말 파일의 경로를 지정합니다. 더하기 아이콘을 클릭하여 파일 시스템에서 파일을 선택하십시오.

  8. 이 연산자에 대한 정보가 포함된 파일을 두 개 이상 추가하려면 7단계를 반복하십시오. 여러 파일(예: 그래픽 파일이 포함된 HTML 파일 시스템)을 한 번에 일괄 로드할 수 있습니다. 여기에 나열된 첫 번째 HTML 파일이 메인 도움말 파일(도움말 파일 시스템의 시작점)로 간주됩니다.

    메인 도움말 파일은 사용자가 연산자를 인스턴스화하고 디자인 창에서 연산자 인스턴스를 클릭한 다음 F1을 누르는 즉시 VisualApplets 도움말 패널에 표시됩니다.

    Image protocol selection 패널에는 선택한 인터페이스 클래스에 연결된 이미지 프로토콜이 표시됩니다.

  9. 이 연산자가 지원할 이미지 프로토콜을 여기서 선택하십시오.

  10. 필요한 경우 마지막 두 열에서 선택한 이미지 프로토콜의 최대 이미지 너비와 최대 이미지 높이를 지정합니다.

  11. 4~10단계를 반복하여 선택한 인터페이스 클래스에 연결할 수 있는 추가 연산자를 정의합니다.

  12. 3~10단계를 반복하여 다른 인터페이스 클래스의 연산자를 정의합니다.

GPIO 오퍼레이터 정의

설정 가능한 수의 GPI 및 GPO 포트를 제공하는 GPIO 연산자를 정의할 수 있습니다. 이미지 처리 응용 프로그램을 디자인할 때 사용자는 이러한 포트를 eVA IP Core의 실제 GPI 및 GPO 포트에 연결할 수 있습니다.

타겟 하드웨어용 GPIO 연산자를 정의하려면:

  1. VisualApplets Operators 탭으로 이동합니다.

  2. GPIO Operators 탭으로 이동합니다.

  3. 더하기 아이콘을 클릭합니다.

  4. 열리는 필드에 정의하려는 오퍼레이터의 이름을 입력합니다. 작성하려면 필드를 더블 클릭하세요.

  5. Icon file 필드에서 VisualApplets의 오퍼레이터 그래픽 표현에 표시될 아이콘 파일의 경로를 정의합니다. VisualApplets에서 전체 그래픽 표현이 어떻게 표시되는지는 프로그램 창의 오른쪽 상단 패널에서 확인할 수 있습니다.

  6. Help file 필드에서 연산자와 해당 매개변수를 설명하는 HTML 도움말 파일의 경로를 지정합니다. 더하기 아이콘을 클릭하여 파일 시스템에서 파일을 선택하십시오.

  7. 이 오퍼레이터에 대한 정보가 포함된 파일을 두 개 이상 추가하려면 6단계를 반복합니다. 일련의 파일(예: 그래픽 파일이 포함된 HTML 파일 시스템)을 한 번에 로드할 수 있습니다. 여기에 나열하는 첫 번째 HTML 파일은 기본 도움말 파일(도움말 파일 시스템의 시작점)로 간주됩니다.

    메인 도움말 파일은 사용자가 연산자를 인스턴스화하고 디자인 창에서 연산자 인스턴스를 클릭한 다음 F1을 누르는 즉시 VisualApplets 도움말 패널에 표시됩니다.

    GPIO port selection 패널에는 eVA IP Core에 대해 정의한 GPI 및 GPO 인터페이스가 표시됩니다.

  8. 이 오퍼레이터가 연결할 수 있도록 지정할 IP 코어의 GPI 및 GPO 포트를 여기서 선택합니다.

  9. IP 코어의 GPI 및 GPO 포트에 연결할 수 있는 추가 오퍼레이터를 정의하려면 3~8단계를 반복합니다.

IP 코어용 VHDL 코드 생성

'Common Interfaces for all Platforms'부터 'Defining Hardware-Specific Operators' 섹션에 설명된 대로 IP Core 블랙 박스를 정의한 후 IP Core 블랙 박스(VHDL)를 빌드할 수 있습니다. 'Embedding and Simulating the IP core'에서는 이 블랙 박스를 FPGA 디자인에 통합하는 방법을 설명합니다.

IP Core 블랙 박스와 함께 eVA Designer는 사용자가 정의한 개별 인터페이스를 위한 시뮬레이션 환경과 이에 상응하는 테스트 벤치를 자동으로 생성합니다. 'Embedding and Simulating the IP core' 섹션에서는 이를 사용하는 방법에 대해 자세히 설명합니다.

IP 코어 블랙 박스를 생성하기 위해 빌드 흐름 세부 정보를 지정할 필요는 없습니다. 나중에 정의할 수 있는 하드웨어 전용 오퍼레이터도 마찬가지입니다.

IP Core 블랙 박스를 생성하려면:

  1. 'Common Interfaces for all Platforms'부터 'Defining Hardware-Specific Operators' 섹션에 설명된 대로 타겟 하드웨어 및 필수 IP Core 인터페이스와 관련된 모든 정보를 입력합니다.

  2. 하드웨어 및 코어 인터페이스 설명이 포함된 XML 또는 *.eva 파일을 엽니다.

  3. Tools 메뉴에서 Generate VHDL …을 선택합니다.

  4. 생성된 파일을 저장할 전용 디렉터리를 만듭니다.

  5. Select Directory를 클릭합니다. 이제 관련 파일이 모두 자동으로 생성됩니다. 선택한 디렉터리에서 확인할 수 있습니다.

  6. 'Embedding and Simulating the IP core' 섹션의 지침을 따르세요. 다음 내용을 확인할 수 있습니다.

    1. (방금 생성한) IP 코어 블랙 박스를 FPGA 디자인(VHDL)에 통합하는 방법,

    2. VHDL 통합 과정에서 도움이 되는 자극(stimuli) 및 시뮬레이션 파일 사용 방법.