728x90
벡터와 배열
벡터
- 자료형 선언에서 범위를 지정하지 않았을 경우, 해당 자료형은 1비트 벡터(vector)로 취급
- 비트 수가 2이상인 논리 값 또는 신호 값의 사용을 위해서는 다중 비트 선언 필요
- 다중 비트 선언을 하기 위해서는 자료형 선언 시 네트 또는 레지스터 이름 앞에 [msb : lsb]를 추가하여 범위를 지정
배열
- 배열(array)은 벡터들의 묶음
- 배열이 하나의 벡터로 구성되었다면 이 배열과 벡터는 동일
- 2개 이상의 벡터들로 구성되는 배열을 사용하기 위해서는 네트 또는 레지스터 이름 뒤에 [first_index : last_index]를 추가
- 다차원 배열을 구성하기 위해서는 네트 또는 레지스터 이름 뒤에 [first_index : last_index]를 원하는 차원 수만큼 추가
벡터와 배열
- 벡터와 배열은 특정 자료형의 요소들을 묶어 하나의 객체(object)로 취급하기 위해 사용
- 벡터는 각 비트의 값을 단일 할당문으로 한 번에 할당
- 배열의 값은 배열 전체 또는 일부분을 단일 할당문을 통해 값을 할당하거나 수식을 사용할 수 없음
- 5비트 벡터 = 1개의 5비트 레지스터 변수의 1차원 배열 : reg [4:0] reg_a;
- 256개의 5비트 레지스터 변수의 2차원 배열 : reg [4:0] mem [0:255]
- 256개의 5비트 레지스터 변수의 3차원 배열 : reg [4:0] mem_2D [0:255][0:2]
벡터와 배열의 사용 예
- 표현 형식
벡터 : 자료형_이름 [msb:lsb] 이름;
배열 : 자료형_이름 [msb:lsb] 이름 [first_index:last_index]...;
- 사용 예
wire [7:0] bus_a, bus_b; //8비트 bus_a와 bus_b(벡터)
reg [15:0] address; // 16비트 address(벡터)
address [3] = 0; // 16비트 address의 4번째 요소 1비트에 0 할당
reg [7:0] mem [0:255]; // 8비트 레지스터 256개로 구성된 메모리mem(배열)
mem [5] = 0; // mem 5번째 요소 8비트에 0000_0000을 할당
[7:0] mem [1:5] = 1; // 문법 오류, mem의 2~6번째 요소를 동시에 할당 불가
reg w_array [0:7][0:15]; //1비트 레지스터가 8x16 크기로 구성된 다차원 배열
- address [3] = 0;
- mem [5] =0;
이 글은 "따라하면서 배우는 디지털 시스템 설계 및 응용 with Verilog HDL"을 기반으로 작성했음을 알립니다.
'verilog > 이론' 카테고리의 다른 글
[verilog] verilog의 연산자(2)(비트단항 논리연산자, 관계 연산자, 시프트 연산자, 조건 연산자, 결합 연산자, 반복 연산자) (2) | 2023.11.21 |
---|---|
[verilog] verilog의 연산자(1)(산술연산자, 논리연산자, 비트단위 논리연산자) (2) | 2023.11.15 |
[verilog] verilog의 자료형 (0) | 2023.11.11 |
[verilog] verilog의 어휘요소(여백, 주석, 연산자, 식별어, 예약어) (0) | 2023.11.06 |
[verilog] 모듈(module)과 테스트 벤치(testbench) (0) | 2023.11.02 |