Menu
CoddyTech

음수

Coddy Verilog 여정의 기초 섹션에 포함된 레슨. 90개 중 16번째.

Verilog에서 음수는 2의 보수 형식으로 표현됩니다. 2의 보수는 양수와 음수를 모두 이진수로 표현하는 방법입니다. 최상위 비트(MSB)는 부호를 나타냅니다:

  • 0 = 양수
  • 1 = 음수

2의 보수를 계산하는 방법

어떤 수의 2의 보수를 구하려면:

  1. 양수를 2진수로 씁니다
  2. 모든 비트를 반전합니다(0은 1이 되고, 1은 0이 됩니다)
  3. 1을 더합니다

예: 4비트로 -5 표현하기

단계연산결과
1이진수로 양수 50101
2모든 비트 반전1010
31을 더하기1011

4비트 2의 보수에서 -5는 4'b1011

Verilog에서 음수 쓰기

10진수 형식을 사용해 음수를 직접 쓸 수 있습니다.

reg signed [3:0] a;
a = -5;        // Verilog는 자동으로 2의 보수를 사용합니다

크기가 지정된 이진수의 경우 2의 보수 값을 써야 합니다:

a = 4'b1011;   // This is -5 in 4-bit two's complement

부호 있음과 부호 없음

기본적으로 reg 및 wire 신호는 부호가 없습니다. 음수를 사용하려면 신호를 signed로 선언하세요:

reg signed [3:0] negative;   // -8부터 7까지 저장할 수 있음
reg [3:0] positive;          // 0부터 15까지 저장할 수 있음

부호 있는 수의 범위

N비트의 경우, 부호 있는 수는 다음을 나타낼 수 있습니다.

  • 최솟값: -2^(N-1)
  • 최댓값: 2^(N-1) - 1
비트범위
4비트-8부터 7까지
8비트-128부터 127까지
16비트-32768부터 32767까지

중요 참고 사항

  • 음수를 처리하려면 signed 키워드를 사용하세요
  • signed가 없으면 reg 또는 wire는 모든 값을 양수로 처리합니다
  • signed를 사용하면 2의 보수 산술이 자동으로 적용됩니다.
  • MSB가 부호를 결정합니다. 1 = 음수, 0 = 양수
challenge icon

챌린지

올바른 2의 보수 값을 작성하여 코드를 완성하세요.

해야 할 일:

  1. a를 4비트 2의 보수 이진수로 -3으로 설정하세요.
  2. b를 4비트 2의 보수 이진수로 -8로 설정하세요.
  3. c를 4비트 2의 보수 이진수로 -1로 설정하세요.

직접 해보기

module negative_challenge;
  reg signed [3:0] a, b, c;
  
  initial begin
    a = 4'b______;   // -3 in 4-bit two's complement
    b = 4'b______;   // -8 in 4-bit two's complement
    c = 4'b______;   // -1 in 4-bit two's complement
    
    $display("a = %d", a);
    $display("b = %d", b);
    $display("c = %d", c);
    $finish;
  end
endmodule
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

기초의 모든 레슨

직접 연습해 보세요: 온라인 Verilog 컴파일러