Menu
CoddyTech

크기가 지정되지 않은 수

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

크기가 지정되지 않은 수는 비트 수를 지정하지 않고 작성한 수입니다. 크기 접두사를 붙이지 않고 수를 작성하면 Verilog는 기본적으로 해당 수가 32비트라고 가정합니다.

a = 'b1010;        // Unsized: Verilog treats this as 32 bits
a = 32'b1010;    // 위와 같지만 명시적으로 표현함

크기가 지정되지 않은 숫자는 형식과 값만 사용합니다: [format][value]

  • format: 숫자의 진법입니다. 이진수는 b, 십진수는 d, 16진수는 h, 8진수는 o를 사용합니다.
  • value: 실제 숫자입니다(예: 1010).

형식 문자 앞에는 아포스트로피 '가 여전히 필요하지만, 그 앞에 비트 수는 없습니다.

  • 'b1010: 32비트 이진수 1010
  • 'd255: 32비트 십진수 255
  • 'hFF: 32비트 16진수 FF
  • 'b1: 32비트 이진수 1 (앞에 0이 31개 있음)

코드 예시:

reg [7:0] data;

initial begin
  data = 1010;      // 크기 미지정: 32-bit 값 (경고가 발생할 수 있음)
  data = 'd255;     // Unsized: 32-bit decimal 255
  data = 'hFF;      // 크기 미지정: 32-bit 16진수 FF
end

크기 미지정 vs 크기 지정

 크기 미지정크기 지정
예시1010 또는 'd2558'b1010 또는 8'd255
비트 폭32비트(기본값)명시적(지정한 대로)
아포스트로피형식과 함께 필요필요
사용 시기간단한 테스트벤치 코드하드웨어 할당

잠재적 문제

크기가 지정되지 않은 숫자를 더 작은 레지스터에 할당하면 예상치 못한 동작이 발생할 수 있습니다.

reg [3:0] small_reg;
small_reg = 'b1111;   // 32-bit value, but fits in 4 bits (fine)
small_reg = 'b10000;  // 32비트 값이지만 너무 큽니다! (경고)

두 번째 예제는 32비트 값 10000을 4비트 레지스터에 할당합니다. 하위 4비트(0000)만 유지되므로, 예상과 다를 수 있습니다.

크기가 지정되지 않은 숫자를 사용하는 경우

크기가 지정되지 않은 숫자는 다음과 같은 경우에 편리합니다.

  • 테스트벤치의 간단한 숫자
  • 루프 카운터
  • $display 문

실제 하드웨어 과제에서는 명확하게 표현하고 경고를 피하기 위해 크기를 지정한 숫자를 사용하세요.

challenge icon

챌린지

아래 코드에서 일부 숫자에는 크기가 지정되어 있지 않습니다. 경고를 방지하려면 8비트 크기의 숫자로 바꾸세요.

할 일:

  1. a를 1010을 나타내는 8비트 이진수로 바꾸세요
  2. b를 255를 나타내는 8비트 십진수로 바꾸세요
  3. c를 FF를 나타내는 8비트 16진수로 바꾸세요

직접 해보기

module unsized_challenge;
  reg [7:0] a, b, c;
  
  initial begin
    a = 'b1010;      // Change to sized (8-bit binary)
    b = 'd255;     // 크기가 지정된 형식(8비트 십진수)으로 변경
    c = 'hFF;      // Change to sized (8-bit hex)
    
    $display("a = %b", a);
    $display("b = %b", b);
    $display("c = %b", c);
    $finish;
  end
endmodule
quiz icon실력 점검

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

기초의 모든 레슨

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

변환 결과 확인하기: 진법 변환기