Menu
Coddy logo textTech

크기가 지정된 숫자

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

Verilog에서 특정 크기를 가진 숫자를 선언하는 방법이 있습니다. 이를 sized number라고 합니다. 이는 숫자가 몇 비트를 가졌는지에 대한 혼동을 방지하고 하드웨어가 예상한 대로 정확하게 동작하도록 보장하기 때문에 유용합니다.

크기가 지정된 숫자는 다음 형식을 따릅니다: [bits]'[format][value]

  • <strong>bits</strong> — 비트 수 (예: 8)
  • <strong>'</strong> — 크기와 형식을 구분하는 아포스트로피 (필수)
  • <strong>format</strong> — 숫자의 진법: 이진수의 경우 b, 십진수의 경우 d, 십육진수의 경우 h, 또는 팔진수의 경우 o
  • <strong>value</strong> — 실제 숫자 (예: 1010)

예를 들어:

  • 4'b1010 — 4비트, 이진수 1010 (십진수 10)
  • 8'd255 — 8비트, 십진수 255 (이진수 11111111)
  • 16'hFF — 16비트, 16진수 FF (이진수 0000000011111111)
  • 3'b1 — 3비트, 이진수 001 (왼쪽 비트는 0으로 채워짐)

코드 예제:

reg [7:0] data;

data = 8'b10101010;   // 8비트, 이진수 10101010
data = 8'd170;        // 8비트, 십진수 170
data = 8'hAA;         // 8비트, 16진수 AA

세 가지 예제 모두 data에 동일한 값을 할당합니다.

크기가 중요한 이유

크기 지정이 없는 경우:

reg [7:0] data;
data = 1;        // 이것은 무엇을 의미할까요? 1비트? 8비트?

Verilog는 기본적으로 작은 숫자를 32비트로 가정하며, 이는 문제를 일으킬 수 있습니다.

크기 지정 시:

reg [7:0] data;
data = 8'b00000001;   // 명확함: 8비트 값 1

제로 패딩

더 작은 값을 더 큰 벡터에 할당할 때, Verilog는 왼쪽 비트를 0으로 채웁니다:

reg [7:0] data;
data = 4'b1010;    // 8'b00001010이 됩니다
challenge icon

챌린지

올바른 크기의 숫자를 작성하여 코드를 완성하세요.

수행할 작업:

  1. a를 십진수 170(이진수 10101010)에 해당하는 8비트 이진수로 설정하세요.
  2. b를 십진수 12(이진수 1100)에 해당하는 4비트 이진수로 설정하세요.
  3. c를 십진수 255(16진수 FF)에 해당하는 16비트 16진수로 설정하세요.

치트 시트

Verilog에서 크기가 지정된 숫자는 다음 형식을 따릅니다: [bits]'[format][value]

  • bits — 비트 수
  • ' — 필수 아포스트로피 구분 기호
  • formatb (2진수), d (10진수), h (16진수), o (8진수)
  • value — 실제 숫자
reg [7:0] data;

data = 8'b10101010;   // 8비트, 2진수
data = 8'd170;        // 8비트, 10진수
data = 8'hAA;         // 8비트, 16진수 (세 가지 모두 동일함)

크기를 지정하지 않으면 Verilog는 기본적으로 32비트로 설정되며, 이는 예기치 않은 동작을 유발할 수 있습니다. 값이 선언된 크기보다 작으면 왼쪽 비트는 0으로 채워집니다:

reg [7:0] data;
data = 4'b1010;    // 8'b00001010이 됨

직접 해보기

module sized_challenge;
  reg [7:0] a;
  reg [3:0] b;
  reg [15:0] c;
  
  initial begin
    a = ______;   // 170에 대한 8비트 이진수 (10101010)
    b = ______;   // 12에 대한 4비트 이진수 (1100)
    c = ______;   // 255에 대한 16비트 16진수 (FF)
    
    $display("a = %b", a);
    $display("b = %b", b);
    $display("c = %h", c);
    $finish;
  end
endmodule
quiz icon실력 점검

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

기초의 모든 레슨