Menu
Coddy logo textTech

Unsized Numbers

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

크기가 지정되지 않은 수는 몇 비트인지 지정하지 않고 작성한 수입니다. 크기 접두사 없이 수를 작성하면 Verilog는 기본적으로 이를 32비트로 간주합니다.

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

Unsized 숫자는 형식과 값만 사용합니다: [format][value]

  • <strong>format</strong>: 숫자의 진수입니다. b는 binary, d는 decimal, h는 hexadecimal, o는 8진수를 나타냅니다.
  • <strong>value</strong>: 실제 숫자입니다(예: 1010)

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

  • 'b1010: 32비트 binary 1010
  • 'd255: 32비트 decimal 255
  • 'hFF: 32비트 hex FF
  • 'b1: 32비트 binary 1 (앞에 31개의 0이 추가됨)

코드 예제:

reg [7:0] data;

initial begin
  data = 1010;      // Unsized: 32비트 값 (경고를 유발할 수 있음)
  data = 'd255;     // Unsized: 32-bit decimal 255
  data = 'hFF;      // Unsized: 32비트 16진수 FF
end

Unsized와 Sized

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

잠재적인 문제

Unsized 숫자를 더 작은 레지스터에 할당하면 예기치 않은 동작이 발생할 수 있습니다:

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

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

Unsized 숫자를 사용할 때

Unsized 숫자는 다음과 같은 경우에 편리합니다:

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

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

challenge icon

챌린지

아래 코드에서 일부 숫자는 크기가 지정되지 않았습니다. 경고를 피하려면 크기가 지정된 숫자(8비트)로 변경하세요.

해야 할 일:

  1. a를 1010에 해당하는 8비트 binary 숫자로 변경하세요
  2. b를 255에 해당하는 8비트 decimal 숫자로 변경하세요
  3. c를 FF에 해당하는 8비트 hex 숫자로 변경하세요

직접 해보기

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 컴파일러