전체 글 45

[Verification 00] 시작하기 전에 - Verilog 코드를 읽는 법

이 연재는 SystemVerilog 검증을 다룹니다그런데 첫 글부터 코드가 나옵니다8'd3 이나 @(posedge clk) 같은 것들입니다이런 표기를 처음 보면 내용이 아니라 글자에서 먼저 막힙니다그래서 이 글을 앞에 둡니다여기서는 검증 이야기를 하지 않습니다뒤 글에 나올 코드를 읽을 수 있게 만드는 것이 목적입니다이미 Verilog 를 다뤄 보셨다면 건너뛰셔도 됩니다숫자 쓰는 법Verilog 의 숫자는 좀 특이하게 생겼습니다8'd3이 하나를 세 조각으로 나눠 읽습니다8 — 비트 폭입니다. 이 값이 8비트라는 뜻입니다'd — 진법입니다. d 는 십진수(decimal)입니다3 — 값입니다즉 8'd3 은 8비트 폭의 십진수 3 입니다진법은 네 가지를 씁니다8'd10 // 십진수 108'b1010 ..

Verification 2026.09.04

[Verification 04] Driver 와 Monitor - 최소 testbench 를 직접 짠다

앞의 두 글에서 재료를 모았습니다class 로 트랜잭션을 만들고, mailbox 로 주고받는 법까지 봤습니다이제 그 재료로 실제로 도는 testbench 하나를 짜 보겠습니다DUT 는 아주 작은 것으로 두겠습니다구조를 보는 것이 목적이지 회로를 보는 것이 목적이 아니기 때문입니다8'd3 이나 @(posedge clk) 같은 표기가 낯설다면「시작하기 전에 - Verilog 코드를 읽는 법」을 먼저 보시는 편이 좋습니다무엇을 만들 것인가먼저 완성될 모습입니다부품은 다섯 개입니다DUT — 검사받는 회로interface — DUT 와 testbench 를 잇는 신호 묶음generator — 넣을 값을 만듭니다driver — 그 값을 실제 신호로 흔듭니다monitor — DUT 가 내놓은 것을 읽습니다scoreb..

Verification 2026.09.04

[Verification 03] SystemVerilog queue 와 mailbox - 검증 데이터를 담고 주고받는 그릇

앞 글에서 class 로 트랜잭션 하나를 만드는 법을 봤습니다그런데 검증은 트랜잭션 하나로 끝나지 않습니다만들어 놓고, 줄 세우고, 하나씩 꺼내 쓰고, 결과와 맞춰 봐야 합니다이 글은 그 그릇을 다룹니다queue 와 mailbox 입니다8'd3 이나 @(posedge clk) 같은 표기가 낯설다면「시작하기 전에 - Verilog 코드를 읽는 법」을 먼저 보시는 편이 좋습니다고정 배열Verilog 에도 배열은 있습니다bit [31:0] buf [0:99]; // 100칸짜리 배열이 배열은 크기가 100 으로 고정입니다컴파일할 때 정해지고 실행 중에 바뀌지 않습니다회로에서는 이게 맞습니다메모리 100칸을 만들었으면 100칸인 것입니다그런데 testbench 에서는 곤란합니다트랜잭션을 몇 개 만들지 모릅..

Verification 2026.09.04

[Verification 02] SystemVerilog class 와 OOP - 상속과 다형성이 검증에서 왜 필요한가

앞 글에서 SystemVerilog 가 검증을 위해 무엇을 더했는지 훑었습니다그중 class 는 한 줄로 넘어가기에는 비중이 너무 큽니다testbench 를 계층으로 나누는 것도, 프로토콜을 하나씩 늘려가는 것도전부 class 위에서 이루어지기 때문입니다이 글은 class 를 처음 보는 분을 기준으로 씁니다문법을 나열하지 않고 왜 이것이 필요한가부터 하나씩 짚겠습니다8'd3 이나 @(posedge clk) 같은 표기가 낯설다면「시작하기 전에 - Verilog 코드를 읽는 법」을 먼저 보시는 편이 좋습니다module먼저 익숙한 쪽부터 보겠습니다Verilog 에서 회로를 만드는 단위는 module 입니다module adder ( input [7:0] a, input [7:0] b, output [8..

Verification 2026.09.04

[Verification 01] SystemVerilog 검증 - Verilog와 무엇이 다른가

Verilog 로 회로를 만들고 나면 그 다음은 검증입니다그런데 막상 검증을 해보면 Verilog 라는 언어가 검증에는 잘 맞지 않는다는 것을 알게 됩니다SystemVerilog 는 Verilog 를 버리고 새로 만든 언어가 아닙니다Verilog 를 그대로 품고, 설계에는 안전장치를 검증에는 없던 기능을 더한 확장입니다이 글은 Verilog 기초와 하나씩 대조하면서 SV 가 왜 필요한지를 정리합니다8'd3 이나 @(posedge clk) 같은 표기가 낯설다면앞 글 「시작하기 전에 - Verilog 코드를 읽는 법」을 먼저 보시는 편이 좋습니다여기서는 그 표기를 안다고 보고 진행합니다Verilog Testbench회로는 혼자서는 아무것도 하지 않습니다클럭이 들어와야 움직이고 입력 핀에 값이 들어와야 계산합..

Verification 2026.09.04

[디지털회로설계 02] 타이밍 위반 (Setup / Hold / Skew / Jitter) 과 해결법

디지털 회로를 설계할 때 가장 자주 만나는 벽이 타이밍입니다합성은 통과했는데 실제 보드에서 이상하게 동작하는 경우가 대부분 여기서 나옵니다Setup / Hold / Skew / Jitter 를 파형으로 하나씩 보고, 해결법까지 정리하겠습니다마지막에는 제가 실제로 겪은 타이밍 위반 사례를 붙였습니다D Flip-Flop 복습먼저 기준을 맞추고 가겠습니다D Flip-Flop 은 클럭의 rising edge 에서 D 를 잡아 Q 로 내보냅니다D 가 바뀌자마자 Q 가 바뀌는 것이 아닙니다edge 가 온 뒤에 얼마간의 지연을 두고 Q 가 따라옵니다이 지연을 \(t_{pcq}\) 라고 합니다Clock to Q, 즉 클럭이 온 뒤 Q 가 나오기까지의 시간입니다경로와 기호타이밍 이야기는 항상 F/F 두 개 사이를 봅니다..

[ISP 02] Bayer Pattern 과 Demosaic

지난 글에서 YCbCr을 다루면서 Bayer Pattern 이야기를 하고 넘어갔습니다G 비율이 왜 더 높은지, 그리고 Bayer에서 컬러 이미지를 어떻게 만드는지 정리하겠습니다Bayer Pattern센서의 화소는 색을 구분하지 못합니다빛의 세기만 셀 수 있는 소자입니다그래서 화소 위에 R, G, B 중 하나의 컬러 필터를 덮습니다이 필터를 격자로 배열한 것이 Bayer Pattern입니다이와같이 2x2가 한 단위입니다R 하나, G 둘, B 하나가 들어갑니다왼쪽 위부터 R-G-G-B 순서라 RGGB라고 부릅니다여기서 중요한 것은 한 화소가 한 채널의 값만 가진다는 점입니다센서가 내보내는 것은 오른쪽 그림처럼 1채널 평면 한 장입니다RGB 3채널이 아닙니다G가 두 개인 이유R은 하나, B도 하나인데 G만 둘..

ISP 2026.09.02

[ISP 01] Image Signal Processing / RGB / YUV / YCbCr

RGB빛의 3원색인 R,G,B를 바탕으로 이미지를 나타낼 수 있습니다 RGB는 주로 3개의 채널로 이루어져있는데 3채널은 독립적인 영역이라고 생각하면 됩니다 이런식으로 각 채널이 이루어져있고, 해당 채널들값의 관계성으로 하나의 픽셀값을 만들어 내게 됩니다3개의 Channel은 8bit 로 이루어져있어 0-255의 값을 가지며,R G B가 모두 255인경우에는 흰색이 만들어지고, 0인경우이는 검정색이 만들어지게 됩니다 이렇게 되니 3개의 채널 모두 밝기 정보를 보유하고 있게 됩니다. 즉 색의 정보와 밝기를 각채널마다 모두 가지고있는 형태입니다사람의 눈은 밝기에 민감하고, 색에는 둔감한데 RGB는 이런 부분을 활용하지 못합니다 YUV YUV는 Y, U , V로 분할되어 이미지를 표현합니다 이때 Y는 (L..

ISP 2026.04.29

[디지털회로설계 01] D Flip Flop 과 SR Latch

오늘 포스팅할 내용은 D Flip Flop입니다! 해당 Flip Flop은 전자과에서 항상 자주등장하고 기초적인 내용인데 제 기억상 논리회로설계/디지털회로설계/디지털집적회로설계에서 모두 등장하는 내용입니다!따라서 디지털 레벨과 트렌지스터 레벨로 나누어서 설명하도록 하겠습니다 오늘 설명은 디지털 레벨에서 설명하도록하겠습니다! D Flip Flop이란 ? 정말 학교다니면서 수도없이 봐온 Symbol에 해당하는데 D Flip Flop은 1비트의 데이터를 저장하는 가장 기본적인 순차 회로(Sequential Circuit/현재 입력 뿐만 아니라 과거의 상태에도 출력이 의존하는 회로, 조합회로(Combinational Circuit)와 반대) 소자입니다 이렇게 D Flip Flop을 여러개 붙여서 3-stage..

[Zynq]PS & PL, Zynq Vivado Setting

요즘 Notion에 공부한거 정리하고있어서.,,.,. 오랜만에 사이드 프로젝트 Zynq 보드로 프로젝트 한번 해보겠습니다 저는 이 Zybo z7보드 이용중입니다 우선 먼저 PS PL이 뭘까..? PS :Program SystemPL :Program Logic에 해당됩니다 그게 그래서 뭔데..?우리가 학부때 흔하게 배우는 RTL 설계 Verilog를 이용하는게 주로 PL 파트입니다 FPGA를 이용해서 RTL을 설계하고 가속기도 설계하고 Block design만들어서 막 만지작 해보기도하고 Bitstream해서 뭐 FPGA에 포팅해보기도하고 그렇지만 실제로, PS 도 필요합니다 쉽게말해서 PS는 CPU같은거입니다 C코드를 이용해서 CPU에 코딩을하고 FPGA를 이용해서 적재적소한곳에 어느곳에는 고..

Zynq 2026.03.20