[Verilog] array
Array(배열)
배열은 Verilog에서 여러 개의 데이터를 저장하고 접근하는 데 사용되는 중요한 개념입니다. 배열은 동일한 데이터 유형을 가진 요소들의 모음으로 구성되며, 각 요소는 고유한 인덱스를 가지고 있습니다.
선언
Verilog에서 배열은 다음과 같은 구문으로 선언됩니다:
<data_type> <array_name> [lower_index:upper_index];
<data_type>: 배열 내 요소들의 데이터 유형을 지정합니다.
<array_name>: 배열의 이름을 지정합니다.
lower_index:upper_index: 배열 인덱스의 범위를 지정합니다. 인덱스는 정수로 지정되며, lower_index와 upper_index는 배열 요소의 유효한 범위를 결정합니다.
예시
reg [7:0] mema[0:255]; // 256개의 8비트 레지스터로 구성된 메모리 배열
reg x[11:0]; // 스칼라(reg) 타입의 12개 요소를 가진 배열
integer inta[1:64]; // 64개의 정수(integer) 값으로 구성된 배열
위의 예시에서 mema 배열은 256개의 8비트 레지스터로 구성된 메모리를 나타냅니다.
x 배열은 12개의 스칼라(reg) 요소를 가지며, inta 배열은 64개의 정수(integer) 값으로 구성됩니다.
reg arrayb[7:0][0:255]; // 1비트 레지스터로 구성된 2차원 배열
위의 예시에서 arrayb 배열은 8비트 너비의 1비트 레지스터로 구성된 2차원 배열을 나타냅니다. 이 배열은 첫 번째 인덱스 범위가 7부터 0이고, 두 번째 인덱스 범위가 0부터 255입니다.
wire [7:0] w_array[5:0]; // 8비트 너비의 벡터(wire) 요소로 구성된 배열
위의 예시에서 w_array 배열은 8비트 너비의 벡터(wire) 요소로 구성된 배열입니다. 이 배열은 첫 번째 인덱스 범위가 5부터 0이며, 두 번째 인덱스는 생략되었기 때문에 기본값으로 0부터 시작합니다.
integer inta[1:64]; // 64개의 정수(integer) 값으로 구성된 배열
위의 예시에서 inta 배열은 64개의 정수(integer) 값으로 구성된 배열입니다. 인덱스 범위는 1부터 64까지입니다.
time chng_hist[1:1000]; // 1000개의 시간(time) 값으로 구성된 배열
위의 예시에서 chng_hist 배열은 1000개의 시간(time) 값으로 구성된 배열입니다. 인덱스 범위는 1부터 1000까지입니다.
결론
Verilog에서 배열은 여러 개의 데이터를 효율적으로 관리하고 접근하기 위한 중요한 도구입니다. 이 글에서는 배열을 선언하는 구문과 다양한 예시를 소개했습니다. 배열을 활용하여 다양한 회로를 모델링하고 디지털 회로 설계를 더욱 효과적으로 수행할 수 있습니다.