크기가 지정된 숫자
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이 됩니다챌린지
올바른 크기의 숫자를 작성하여 코드를 완성하세요.
수행할 작업:
a를 십진수 170(이진수 10101010)에 해당하는 8비트 이진수로 설정하세요.b를 십진수 12(이진수 1100)에 해당하는 4비트 이진수로 설정하세요.c를 십진수 255(16진수 FF)에 해당하는 16비트 16진수로 설정하세요.
치트 시트
Verilog에서 크기가 지정된 숫자는 다음 형식을 따릅니다: [bits]'[format][value]
bits— 비트 수'— 필수 아포스트로피 구분 기호format—b(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이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.