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
endUnsized와 Sized
| Unsized | Sized | |
|---|---|---|
| 예시 | 1010 또는 'd255 | 8'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문
실제 하드웨어 할당에서는 명확하게 표현하고 경고를 피하기 위해 크기가 지정된 숫자를 사용하세요.
챌린지
아래 코드에서 일부 숫자는 크기가 지정되지 않았습니다. 경고를 피하려면 크기가 지정된 숫자(8비트)로 변경하세요.
해야 할 일:
a를 1010에 해당하는 8비트 binary 숫자로 변경하세요b를 255에 해당하는 8비트 decimal 숫자로 변경하세요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이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
기초의 모든 레슨
4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine Logic직접 연습해 보세요: 온라인 Verilog 컴파일러