안녕하세요. Verilog는 하드웨어 설계 언어(HDL)로, 신호의 흐름을 정의하는 여러 가지 문법이 존재합니다. 그중에서 assign, initial, always는 매우 중요한 역할을 합니다.하지만 각각의 목적과 동작 방식이 다르므로, 올바르게 이해하고 사용해야 합니다. ※1. assign 문 – 조합 논리 회로(Combinational Logic) 설계▶1. 정의 assign 문은 연속할당문(Continuous Assignment)을 정의하며,wire 타입의 변수에만 사용됩니다.입력이 변하면 즉시 출력도 변합니다. ▶2. 특징 ✔ 항상 활성화되어 입력 신호가 변하면 즉시 반영됨✔ wire 타입 변수만 사용 가능 (reg 타입 불가)✔ 조합 논리(Combinational Logic) 구현에 적합✔ ..
![[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..