산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> verilog

Verilog 연산자 총정리: 산술·관계·등가·논리·비트와이즈·시프트

디지털 회로에서 데이터 처리는 필수입니다. 합성 도구가 적절한 하드웨어로 매핑할 수 있는 Verilog 연산자들을 카테고리별로 정리합니다.

산술 연산자 (Arithmetic)

연산자설명비고
a + b덧셈
a - b뺄셈
a * b곱셈DSP 블록 매핑 가능
a / b나눗셈b=0 시 결과 x, 합성 비용 큼
a % b나머지b=0 시 x
a ** b거듭제곱피연산자 중 실수 있으면 결과 실수, b=0 시 1
module des;
    reg [7:0] d1, d2;
    initial begin
        d1 = 45; d2 = 9;
        $display("Add=%d Sub=%d Mul=%d Div=%d Mod=%d Pow=%d",
                 d1+d2, d1-d2, d1*d2, d1/d2, d1%d2, d2**2);
    end
endmodule
// 출력: Add=54 Sub=36 Mul=149 Div=5 Mod=0 Pow=81

관계 연산자 (Relational)

결과: 참=1, 거짓=0. 피연산자에 x/z 포함 시 x. 산술 연산자보다 우선순위 낮음.

연산자설명
a < ba가 b보다 작음
a > ba가 b보다 큼
a <= ba가 b 이하
a >= ba가 b 이상

등가 연산자 (Equality)

관계 연산자보다 우선순위 낮음. 논리 등가(==, !=)는 x/z 포함 시 x 반환. 케이스 등가(===, !==)는 x/z도 비트 단위 비교해 항상 0/1 반환.

연산자설명특징
a === b케이스 등가x/z 포함 비교, 항상 알려진 값
a !== b케이스 부등가x/z 포함 비교, 항상 알려진 값
a == b논리 등가x/z 시 결과 x
a != b논리 부등가x/z 시 결과 x
data1 = 'b101x; data2 = 'b1011;  data1 === data2 → 0
data1 = 'b101x; data2 = 'b101x;  data1 === data2 → 1
data1 = 'b101z; data2 = 'b1z00;  data1 !== data2 → 1

논리 연산자 (Logical)

피연산자 0이 아니면 참(1), 0이면 거짓(0). x 포함 시 결과 x (단, 0 && x → 0, 1 || x → 1 단락 평가 아님 — Verilog는 항상 평가).

연산자설명
a && b논리 AND (둘 다 참이면 1)
a || b논리 OR (둘 중 하나 참이면 1)
!a논리 NOT (0↔1 변환, x는 x 유지)
data1=0, data2=4:  data1 && data2 → 0
data1=x, data2=3:  data1 && data2 → x
data1=z, data2=5:  data1 && data2 → 1  (z는 비제로로 취급)
!4 → 0, !0 → 1

비트와이즈 연산자 (Bitwise)

비트 단위 연산. 합성 시 게이트 레벨로 직접 매핑.

& (AND)01xz
00000
101xx
x0xxx
z0xxx
| (OR)01xz
001xx
11111
xx1xx
zx1xx

기타: ^ (XOR), ~^/^~ (XNOR), ~ (NOT).

시프트 연산자 (Shift)

종류연산자동작
논리 시프트<<, >>빈 자리에 0 채움
산술 시프트<<<, >>부호 비트 확장 (signed 타입일 때)
data = 8'h80 (1000_0000);
data >> 1  = 0100_0000 (논리)
data >>> 1 = 1100_0000 (산술, 부호 비트 1 확장)
Verilog-2001부터 >>는 피연산자가 signed면 산술 시프트, unsigned면 논리 시프트로 동작. 명시적 >> 사용 권장.

연산자 우선순위 (높은 → 낮은)

  1. + - ! ~ (단항)
  2. * / %
  3. + - (이항)
  4. << >> <<< >>>
  5. < <= > >=
  6. == != === !==
  7. & (비트 AND)
  8. ^ ^~ ~^ (XOR/XNOR)
  9. | (비트 OR)
  10. && (논리 AND)
  11. || (논리 OR)
  12. ?: (조건)

복잡한 표현식엔 괄호로 명시적 그룹화 권장.

verilog

  1. C# 연산자 – C# 연산자 종합 가이드
  2. 버릴로그(Verilog) 입문: 디지털 회로 설계를 위한 하드웨어 기술 언어
  3. Verilog 결합(Concatenation) & 복제(Replication) 연산자 실전 가이드
  4. Verilog 할당문 이해: 유형, 문법, 모범 사례
  5. Verilog 차단 vs 비차단 할당: 핵심 차이점 완벽 이해
  6. Verilog 함수 마스터하기: 효율적인 RTL 설계를 위한 활용법
  7. Verilog 태스크 이해: 함수와의 차이점, 문법, 활용법
  8. Verilog 클럭 생성기: 설계 및 구현 가이드
  9. Verilog 수학 함수 마스터하기: 효율적인 하드웨어 설계를 위한 활용
  10. Verilog $timeformat 마스터하기: 정밀도 및 표시 제어