Video Course Review - 05. CDC (Clock Domain Crossing)
·
AI SOC COURSE/영상 처리
1. TitleClock Domain Crossing 2. Category"Video Processing" 3. Key Concepts Clock Domain Crossing, FIFO, Frame Buffer, Metastable 4. SetupOV7670, Basys-3로 구성된 시스템의 블록 다이어그램을 다시한번 살펴보자. Frame Buffr의 가운데 부분이 붉은 선으로 나눠져 있는데, 이는 Clock Domain Crossing (CDC) 이 발생하는 경계를 의미한다. OV7670 카메라 모듈과 VGA 컨트롤러 (Basys-3 내부) 는 서로 다른 클록 도메인에서 동작하기 때문에 데이터 손실이나 메타스테이블 문제 없이 안정적으로 데이터를 넘겨주기 위해 CDC 처리가 필수적이다.  자료구조 (Ar..
Video Course Review - 04. OV7670 SCCB
·
AI SOC COURSE/영상 처리
1. TitleOV7670 SCCB를 통한 레지스터 설정2. Category"Video Processing" 3. Key Concepts OV7670을 사용하기 위한 인터페이스 (SCCB)를 구현한다. 4. Setup이전 게시글에 이어서 안정적인 클럭을 생성하는 방법, 그리고 SCCB 설정에 대해 알아보자.Vivado에서는 클럭 생성을 위한 Clock Wizard IP를 제공하고 있다. 해당 IP에 대한 설정을 마치게 되면, clk_wiz_0.veo에 서 해당 IP를 Instance할 수 있는 코드 템플릿을 가져와 사용하면 된다.//----------------------------------------------------------------------------// Output Output..
Video Course Review - 03. Up Scaling, OV7670
·
AI SOC COURSE/영상 처리
1. TitleUpscaling Image, OV76702. Category"Video Processing" 3. Key Concepts320 x 240 size의 QVGA를 업스케일링 하여 VGA 화면에 맞게 출력하고, OV7670을 사용하기 위한 인터페이스 (SCCB)를 구현한다. 4. Setup QVGA(320x240)를 VGA(640x480)로 업스케일링하는 방식은 두 가지 접근을 고려할 수 있다.양쪽 픽셀 평균 내는 방식 (Bilinear Interpolation)픽셀 사이사이의 값을 좌/우 인접 픽셀의 평균으로 삽입단순 복사QVGA(320x240) → VGA(640x480)는 정확히 가로, 세로 2배씩 크기 차이가 난다. 그래서 각 QVGA 픽셀을 X, Y 방향으로 각각 2배로 복사해주면 VG..
Video Course Review - 02. Display Image (Lenna)
·
AI SOC COURSE/영상 처리
1. TitleDisplay Image file Using VGA Port in Basys-32. Category"Video Processing" 3. Key Concepts이미지에서 RGB 값을 추출하고, 이를 이용하여 Lenna 이미지를 Display한다. 4. SetupVideo Processing 분야에서 가장 자주 등장하는 Lenna 이미지다. 이번 글에서는 Lenna 이미지를 VGA로 출력하는 방법을 단계별로 정리해본다.Lenna 이미지를 VGA 해상도(320x240)에 맞게 변환 이미지를 BMP 포맷으로 저장후, 각 픽셀의 값을 확보 ROM에 이미지를 저장하고, VGA 컨트롤러를 통해 화면에 출력 Basys-3 보드는 RGB 4-4-4 포맷을 지원한다. 이는 5-6-5 포맷에서 상위 4비트를..
Video Course Review - 01. VGA Port
·
AI SOC COURSE/영상 처리
1. TitleUsing VGA Port in Basys-32. Category"Video Processing" 3. Key ConceptsH-Sync, V-Sync, RGB 4. Setup VGA로 화면을 구성할 때, 수평(Horizontal) 방향으로 한 줄씩 스캔한 뒤, 한 줄이 끝나면 수직(Vertical) 방향으로 한 칸 이동하여 다음 라인을 스캔하는 방식을 사용한다. (즉, 한 화면은 왼쪽 위에서 오른쪽 아래로 순차적으로 그려진다) 이를 바탕으로 전체 화면이 어떻게 그려지는지 알아보자. 실질적으로 화면이 출력되는 시간은 Display Time 동안에만 그려지게 된다. 한 라인을 그리게 되면 다음 라인(혹은 다음 프레임)을 그리기 전에 준비하는 시간이 필요한데, 이 시간을 포치 시간이라고 한다...