안녕하세요. Verilog에서는 조건문을 사용하여 회로의 동작을 제어할 수 있습니다. 그중 if문과 case문은 조건에 따라 신호를 설정하는 데 사용됩니다. 이번 포스트에서는 이 두 가지 문법의 형태와 사용 방법에 대해 간단하게 알아보겠습니다. ※1. if문 – 조건에 따라 동작 제어▶1. 정의 if문은 특정 조건이 참일 때 실행되는 블록입니다. 조합 논리 및 순차 논리 모두에 사용될 수 있습니다. ▶2. 기본 형태 if (조건식) begin // 조건식이 참일 때 실행할 코드end else begin // 조건식이 거짓일 때 실행할 코드end ▶3. 예제 always @(*) begin if (a > b) begin y = a; // a가 b보다 클 때 y에 a..
안녕하세요. Verilog는 하드웨어 설계 언어(HDL)로, 신호의 흐름을 정의하는 여러 가지 문법이 존재합니다. 그중에서 assign, initial, always는 매우 중요한 역할을 합니다.하지만 각각의 목적과 동작 방식이 다르므로, 올바르게 이해하고 사용해야 합니다. ※1. assign 문 – 조합 논리 회로(Combinational Logic) 설계▶1. 정의 assign 문은 연속할당문(Continuous Assignment)을 정의하며,wire 타입의 변수에만 사용됩니다.입력이 변하면 즉시 출력도 변합니다. ▶2. 특징 ✔ 항상 활성화되어 입력 신호가 변하면 즉시 반영됨✔ wire 타입 변수만 사용 가능 (reg 타입 불가)✔ 조합 논리(Combinational Logic) 구현에 적합✔ ..
안녕하세요. Verilog에서 값을 할당하는 방식은 크게 연속할당문(Continuous Assignment)과 절차할당문(Procedural Assignment)으로 나뉩니다.이 두 개념을 제대로 이해해야 Verilog 코드가 의도한 대로 동작하게 만들 수 있습니다. ※1. 연속할당문 (Continuous Assignment) ▶1. 개념 조합 논리(Combinational Logic) 회로를 표현할 때 사용assign 키워드를 이용하여 항상 즉시 값이 반영됨wire 타입 변수에만 사용 가능 ▶2. 예제wire a, b, y;assign y = a & b; // y는 항상 a와 b의 AND 연산 결과를 반영 ▶3. 특징- assign을 사용하여 항상 즉시 반영됨- wire 타입 변수만 사용 가능 ..
![[Verilog] "="(blocking)과 "<="(non-blocking) 할당의 차이](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmcRTA%2FbtsMsO0sdLk%2FBlJkDRkiPG2g8YapsGNN01%2Fimg.png)
안녕하세요.Verilog에서는 값을 할당할 때 =(blocking assignment)과 이 둘의 차이를 잘 이해하지 못하면 예상치 못한 버그가 발생할 수 있으므로, 개념과 차이점을 확실히 정리해보겠습니다.※1. = (Blocking Assignment) 🔹 순차적으로 실행됨 (이전 연산이 완료된 후 다음 연산 실행)🔹 조합 논리 또는 초기화에 사용 always @(posedge clk) begin a = b; // b의 값을 a에 즉시 할당 c = a; // a의 현재 값을 c에 즉시 할당end [ 실행 과정 ]b의 값이 a에 복사됨a가 변경된 후 c = a;가 실행됨따라서, c는 변경된 a 값을 받음➡ 즉, =는 한 줄씩 순차적으로 실행되기 때문에 예상한 값과 다를 수 있음 ※2..