저번 포스팅에서는 베릴로그의 구성 요소에 대해서 간략히 알아보았다.
이번 포스팅에서는 베릴로그 기본 데이타 타입에 대해서 알아 보도록 하겠다.
💻 Identifiers and Keywords
Keywords는 구조를 정의하기 위한 특수한 식별자다.
Identifiers는 객체에게 주어진 이름이라고 보면 된다.
reg value; // reg is keyword; value is an identifier
input clk; // input is keyword, clk is an identifier
reg, input 은 keyword 이고, value,clk는 identifier이다.
c언어와 구조가 똑같다.
💻 Nets
Nets는 하드웨어 구성요소 간의 물리적인 연결을 표현해준다.
주로, 키워드 wire로 선언된다.
wire a;
wire d = 1'b0;
💻 Registers
레지스터는 데이터 저장요소를 표현한다. 그리고 값을 가지고 있다.
레지스터들은 키워드 reg로 선언된다.
Verilog 안의 용어인 Register와 하드웨어 Register(FFs)들을 헷갈릴 수 있으니 유의해야 한다.
reg reset; // declare a variable reset that can hold its value
initial // this construct will be discussed later
begin
reset = 1'bl; //initialize reset to 1 to reset the digital circuit
#100 reset = 1'b0; // after 100 time units reset is deasserted.
end
💻 Vectors
Vector란 n비트 폭을 가진 하나의 원소를 말한다.
Nets 나 reg 데이타 타입들이 벡터로 선언될 수 있다.
Vectors는 [ high# : low# ] 나 [ low# : high# ]와 같이 선언될 수 있다.
여기서 high#는 높은 수, low#는 낮은 수를 의미한다.
항상 왼쪽에 있는 것이 MSB (최상위 비트) 를 나타낸다.
wire [31:0] wire_test; // 32비트 wire_test 선언
wire [7:0] wire_t1, wire_t2, wire_t3; // 3개의 wire_t1~3을 각각 8비트로 선언
reg [0:15] reg_test; // 16비트 폭을 가진 벡터 레지스터
💻 Arrays
배열은 reg,integer, time, real 등 데이타 타입을 가지는 여러 원소들을 모아 둔것이다.
<데이타 타입> <벡터 데이터 비트 폭> <배열 이름>으로 선언한다.
다차원 배열은 c에서는 됬겠지만, 여기선 안된다.
integer count[0:7]; // 8칸짜리 정수 배열
reg bool[31;0]; // 32칸짜리 1bit 레지스터 배열
time chk_point[1:100]; // 100칸짜리 time 배열
reg [4:0] port_id [0:7]; // 8칸짜리 배열인데 각각은 5bit다.
💻 Parameter
모듈 내에서 상수(constant)를 정의하는 키워드이다. c언어에서 #define과 비슷한 표현이다.
변수로는 사용이 안되며, 파라미터의 값들은 컴파일 할때 자동적으로 매칭시켜준다.
가독성이 높아지며 값 편집이 용이해진다는 장점이 있다.
parameter rebas = 7; // rebas를 7의 값을 가진 상수로 정의
parameter index_number = 10; // index_number를 10의 값을 가진 상수로 정의
reg[index_number:0] arr; // == reg[10:0] arr;
'2-2 > 디지털 설계 및 실험' 카테고리의 다른 글
[디지털 설계 및 실험] Verilog 외전 (1) | 2022.10.15 |
---|---|
[디지털 설계 및 실험] Verilog 기본 vol.5 Gate-Level Modeling (0) | 2022.10.12 |
[디지털 설계 및 실험] Verilog 기본 vol4.-모듈과 포트 (1) | 2022.09.25 |
[디지털 설계 및 실험] Verilog 기본 vol.3 - System Tasks (2) | 2022.09.23 |
[디지털 설계 및 실험] Verilog 기초 vol.1 - 구성 요소 (0) | 2022.09.23 |