Menu
Coddy logo textTech

Vectors

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

벡터는 여러 비트로 이루어진 wire 또는 reg입니다. 단일 비트 대신 벡터를 사용하면 data 버스로 작업할 수 있습니다. 이는 함께 그룹화된 bits의 모음입니다.

참고: vector는 별도의 data type이 아닙니다. 이는 단순히 wire 또는 reg의 다중 비트 버전입니다.

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

벡터를 선언하려면 [MSB:LSB] 구문을 사용합니다. 여기서 MSB는 최상위 비트이고 LSB는 최하위 비트입니다.

wire [3:0] a;       // 4비트 wire 벡터
reg [7:0] data;     // 8비트 reg 벡터
wire [15:0] addr;   // 16비트 wire 벡터

bits에 접근하기

vector의 개별 bits 또는 슬라이스에 접근할 때는 bit 위치(인덱스)에 십진수를 사용하고, 할당에는 binary 값(0 또는 1)을 사용합니다.

이는 bit 위치가 (주소와 같은) 위치이며 일반적으로 10진수로 표현되는 반면, 해당 bit에 저장된 값은 0 또는 1, 즉 binary 선택일 수밖에 없기 때문입니다.

예를 들어, data[0]은 "bit number zero"를 의미하고, = 1은 "높은 상태로 설정"을 의미합니다. 단일 bit에 75와 같은 10진수를 할당해도 75가 저장되지는 않습니다. Verilog는 가장 낮은 bit만 자동으로 유지하므로, 항상 0 또는 1을 명시적으로 작성하세요.

reg [7:0] data;

data = 170;  
data[0] = 1;             // LSB를 1로 설정
data[7] = 0;             // MSB를 0으로 설정
data[3:1] = 3'b101;      // Set bits 3,2,1 to 101 (binary remains)

비트 순서

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

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;     // Assign a slice 
challenge icon

챌린지

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

해야 할 일: 

  1. 각 input과 output을 8비트 vector로 변경하세요.

직접 해보기

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실력 점검

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

기초의 모든 레슨

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