Menu
Coddy logo textTech

배열

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

배열을 사용하면 하나의 변수에 여러 값을 저장할 수 있습니다. 배열의 각 요소는 인덱스를 사용하여 액세스할 수 있습니다.

참고: 배열은 별도의 데이터 형식이 아닙니다. 배열은 wire, reg, integer 또는 real 형식의 모음입니다.

배열 선언

구문: <data_type> <name> [<size>];

reg [7:0] memory [0:255];   // 256바이트의 메모리 (각각 8비트)
reg data [0:7];              // 8개의 단일 비트 레지스터
wire [3:0] bus [0:3];       // 4개의 버스, 각각 4비트 폭
integer counters [0:9];      // 10개의 정수

대괄호 안의 숫자 [ ]는 비트 폭이 아니라 배열 크기입니다.

배열 요소에 접근하기

reg [7:0] memory [0:3];
memory[0] = 165;        // 10진수 165
memory[1] = 90;         // 10진수 90
memory[2] = memory[0] + memory[1];
$display("%d", memory[2]);  // 출력: 255

배열은 테스트벤치에서 테스트 데이터를 저장하는 데 매우 유용합니다.

다차원 배열

여러 차원의 배열을 만들 수 있습니다:

reg [7:0] matrix [0:3][0:3];   // 8비트 값의 4x4 배열
matrix[0][0] = 255;            // 8'hFF = 255 십진수
matrix[2][1] = 85;             // 8'h55 = 85 십진수

배열과 벡터 비교

 벡터배열
무엇인가다중 비트 와이어 또는 reg여러 값의 모음
구문[MSB:LSB][size]
예제reg [7:0] data;reg [7:0] mem [0:255];
접근data[3] (비트 3)mem[3] (요소 3)

벡터는 여러 비트를 가진 하나의 값입니다.
배열은 각각 고유한 비트를 가진 여러 값입니다.

중요 참고 사항

  • 많은 도구에서 큰 크기로 사용되는 배열은 합성할 수 없습니다
  • 배열은 주로 테스트벤치에서 사용됩니다
  • 하드웨어 메모리에는 특수 메모리 프리미티브를 사용하세요
challenge icon

챌린지

테스트 값 4개를 저장하는 배열을 만들도록 아래 코드를 완성하세요.

할 일: 

  1. 다음 이름의 배열을 선언하세요: test_data
    1. reg 데이터 형식을 사용하세요(테스트벤치에서 값을 저장하기 때문입니다).
    2. 각 요소의 너비는 8비트여야 합니다([7:0]).
    3. 배열에는 4개의 요소가 있어야 합니다([0:3]).

직접 해보기

module arrays;
  
  // test_data라는 배열을 선언
  // 4개의 요소를 가지며, 각각 8비트 너비여야 함
  // reg 데이터 타입을 사용 (테스트벤치에서 값을 저장하기 때문)

  
  integer i;
  
  initial begin
    test_data[0] = 170;   
    test_data[1] = 240;    
    test_data[2] = 204;    
    test_data[3] = 15;   
    
    for (i = 0; i < 4; i = i + 1) begin
      $display("test_data[%0d] = %b", i, test_data[i]);
    end
    $finish;
  end
  
endmodule
quiz icon실력 점검

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

기초의 모든 레슨

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