Menu
Coddy logo textTech

벡터

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

벡터는 여러 비트로 구성된 wire 또는 reg입니다. 단일 비트 대신, 벡터를 사용하면 데이터 버스를 다룰 수 있습니다. 이것은 함께 그룹화된 비트들의 집합입니다.

참고: 벡터는 별도의 데이터 타입이 아닙니다. 이것은 단순히 wire 또는 reg의 멀티 비트 버전입니다.

wire single;        // 단일 비트
wire [7:0] bus;     // 8비트 벡터 (비트 7에서 0까지)

벡터를 선언하기 위해서는 [MSB:LSB] 구문을 사용하며, 여기서 MSB는 최상위 비트(most significant bit)를, LSB는 최하위 비트(least significant bit)를 의미합니다.

wire [3:0] a;       // 4-bit wire vector
reg [7:0] data;     // 8-bit reg vector
wire [15:0] addr;   // 16-bit wire vector

비트 액세스

벡터의 개별 비트나 슬라이스에 액세스할 때는 비트 위치(인덱스)에는 십진수를 사용하고, 할당에는 이진 값(0 또는 1)을 사용합니다.

이는 비트 위치가 (주소와 같이) 위치를 나타내며 자연스럽게 십진수로 표현되는 반면, 해당 비트에 저장된 값은 0 또는 1만 가능하기 때문입니다 — 이는 이진 선택입니다.

예를 들어, data[0]은 "비트 번호 0"을 의미하며, = 1은 "하이(high)로 설정"을 의미합니다. 비트에는 0 또는 1 이외의 값을 저장할 공간이 없으므로 단일 비트에 75와 같은 10진수를 할당할 수 없습니다.

reg [7:0] data;

data = 170;  
data[0] = 1;             // LSB를 1로 설정
data[7] = 0;             // MSB를 0으로 설정
data[3:1] = 3'b101;      // 비트 3,2,1을 101로 설정 (이진수 유지)

비트 순서

비트의 순서가 중요합니다:

wire [3:0] a;     // a[3]는 MSB, a[0]는 LSB입니다
wire [0:3] b;     // b[0]는 MSB, b[3]는 LSB입니다 (덜 일반적임)

대부분의 설계자들은 MSB가 왼쪽에 오는 [MSB:LSB] 형식을 사용합니다.

값 할당하기

reg [3:0] a;

a = 10;       
a = 5;         
a = 3;        

벡터 슬라이스

비트 범위를 지정하여 접근할 수 있습니다:

reg [15:0] word;

word[15:8] = 255;        // 상위 바이트 할당 (8'hFF = 255)
word[7:0]  = 0;          // 하위 바이트 할당 (8'h00 = 0)
word[3:1]  = 3'b101;     // 슬라이스 할당 
challenge icon

챌린지

아래 모듈에는 벡터 선언이 필요합니다. 

수행할 작업: 

  1. 각 입력과 출력을 8비트 벡터로 변경하세요.

치트 시트

벡터(vector)[MSB:LSB] 구문을 사용하여 선언된 멀티 비트 wire 또는 reg입니다:

wire [7:0] bus;     // 8비트 wire 벡터
reg [15:0] addr;    // 16비트 reg 벡터

개별 비트 및 슬라이스 액세스:

reg [7:0] data;

data[0] = 1;          // LSB를 1로 설정
data[7] = 0;          // MSB를 0으로 설정
data[3:1] = 3'b101;   // 2진수를 사용하여 비트 3,2,1을 설정

비트 순서: [MSB:LSB]가 표준 관례입니다 (예: [7:0]은 비트 7이 MSB, 비트 0이 LSB임을 의미합니다).

직접 해보기

module vector_example(
  input a,          // 8비트 벡터 [7:0]로 변경
  input b,          // 8비트 벡터 [7:0]로 변경
  output c          // 8비트 벡터 [7:0]로 변경
);
  
  assign c = a & b;
  
endmodule
quiz icon실력 점검

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

기초의 모든 레슨