[Verilog/SystemVerilog] 베릴로그 기초 | 베릴로그의 기본 문법과 예제

2024. 5. 28. 20:25(System)Verilog 시스템 베릴로그

반응형

 

모든 베릴로그 설계는 모듈(Module)로 시작하며, 모듈은 하드웨어의 기본 단위로, 입력과 출력 포트를 포함한다.

 

기본 모듈의 예시)

module module_name (
    input wire input1,
    input wire input2,
    output wire output1);

	// 모듈 내부 내용
    
endmodule

 

 

데이터 타입 (Data Type)

  • wire : 조합 논리 신호 (지속적으로 구동되어야하는 조건)
  • reg :  레지스터 신호 (동기식 논리, 변수와 같은 값을 유지) 
wire my_wire;
reg my_reg;

 

 

 

연산자

  • 논리 연산자 :  & (AND), | (OR), ~ (NOT)
  • 비교 연산자 : == (같음), != 다름
  • 산술 연산자 : + (덧셈), - (뺄셈), * (곱셈), / (나눗셈)

 

 

assign 문

  • 연속 할당을 할 때 assign 키워드를 사용하여 조합논리 정의한다
assign output1 = input1 & input2;

 

 

always 문

  • always 블록은 특정 조건이 만족 될때마다 실행된다.
reg clock;

always @(posedge clk) 
	#5 clock <= ~clock;

 

 

initial 문

  • initial 블록은 시뮬레이션 시작시 한번 실행된다.
  • initial begin - end 안의 구문들은 절차적으로 진행한다.
reg A, B, Sel;

initial begin
    #0 Sel = 0; A=0; B=0;
    #10 A = 1;
    #10 Sel = 1;
    #10 B = 1;
end

 

 

ETC

  • 여러문이 있으면 begin ... end 로 묶는다
  • initial 문은 0ns 시뮬레이션 시작에 실행된다.
  • # 기호는 시간 지연을 나타낸다 (#10 Clk = ~Clk 은 10 delay 마다 토글)
  • $finish는 시뮬레이션을 종료한다.

반응형