5. 기초 구문
1) for문
0> 규칙
loop command (for, repeat, while, forever)는 기본적으로 순차회로(always문, initial문)내에서만 사용
1> 문법
for (초기값 ; 조건식 ; 오퍼레이션)
처리문 or 블록 처리문
for문의 index는 integer로 선언한다.
2줄 이상이 되는 경우 block (begin, end)로 묶어준다.
2> 예시
integer count;
initial begin
for (count = 0; count <128; count = count +1)
$display(“count = %d”, count);
end
=> 0에서부터 127까지 증가시키고 출력
2) if문
1> 문법
if (조건식)
처리문 or 블록 처리문
else
처리문 or 블록 처리문
2줄 이상이 되는 경우 block (begin, end)로 묶어준다.
2> 예시
if (enable ==1'b1) begin
data = 10; //Decimal assigned
address = 16'hDEAD; // Hexadecimal
wr_enable = 1'b1; // Binary
end
else begin
data = 32'b0;
wr_enable =1'b0;
address = address +1;
end
3) while 문
1> 문법
while ( 조건문 )
처리문 or 블록 처리문
조건문이 false가 될 때까지 수행한다.
2> 예시
integer count;
initial
begin
count = 0;
while (count < 128)
begin
$display(“count = %d”, count);
count = count +1;
end
end
=> 0부터 127까지 출력
4) case 문
1> 문법
case (판정식)
항1 : 처리문1 ; // 판정식이 항1과 같으면, 처리문1을 실행
항2 : 처리문2 ; // 판정식이 항2와 같으면, 처리문2을 실행
:
항N : 처리문N ; // 판정식이 항N과 같으면, 처리문N을 실행
default : 처리문 N+1 ; // 판정식이 항N까지 일치하지 않으면 처리문 N+1을 실행
endcase
판정식이 해당하는 항에 가서 처리문을 실행한다.
물론 일치하는 항이 없다면 default의 처리문을 실행한다.
case로 시작해서 endcase로 닫아주어야 한다.
2> 예시
case(address)
0: $display("num is 0");
1: $display("num is 1");
2: $display("num is 2");
default : $display ("num is not 0, 1 and 2");
endcase
3> C언어와의 유사성
- 판정식과 일치하는 처리문을 실행하는 구조가 유사하다.
4> C언어와의 차별성
- C언어처럼 switch라는 keyword가 아닌 case라는 keyword에 판정식을 넣는다.
- C언어의 switch와 달리 break로 닫지 않아도 된다.
- endcase로 해당 구문을 닫아주어야 한다.
6. Net형 자료형
1) 설명
1> 정의
device(gate or module) 간의 물리적 연결을 나타낸다.
값(신호)이 저장되는 것이 아니다.
net 값이 변할 때 자동으로 net에 새로운 값이 전달된다.
2> 특징
크기를 정하는 vector를 지정하지 않으면 1bit net이다. (default)
keyword인 wire, trireg, tri, wand, wor, triand, trior 등으로 선언된다. (wire를 주로 쓴다.)
2) 사용
1> 기본 문법
네트 형 [범위] [지연] 네트 이름, …, 네트 이름;
범위 : vector 혹은 bit로 지정한다.
지연 : simulation에서 사용
2> 예시
wire a; // net a를 정의
wire b, c; // net b, c를 정의
wire d = 1’b0; // net d는 논리값 0으로 선언
'디지털 회로 실습' 카테고리의 다른 글
2-4강 - vivado 실행 (0) | 2020.09.09 |
---|---|
2-2강 - Verilog 기초 2 (기초 문법, 절차형 할당문) (1) | 2020.09.08 |
2-1강 - Verilog 기초 1 (module, 기초 문법) (0) | 2020.09.07 |
1강 - FPGA (Verilog, VHDL) (0) | 2020.09.03 |