[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는 시뮬레이션을 종료한다.
반응형
'(System)Verilog 시스템 베릴로그' 카테고리의 다른 글
[SystemVerilog] 다이나믹 캐스팅 (dynamic casting) 이란? | $cast(), 캐스팅 반환 값 (0) | 2024.05.30 |
---|---|
[SystemVerilog] 시스템베릴로그의 Queue : 동적 데이터 구조 이해하기 | push_back, push_front, pop_back, pop_front | queue와 FIFO (0) | 2024.05.30 |
[SystemVerilog] 시스템 베릴로그의 할당 연산자, 산술 시프트 (<<<=, >>>=) (0) | 2024.05.13 |
[SystemVerilog] 변수 타입, 데이터 타입 | 2state, 4state (0) | 2024.05.11 |
[SystemVerilog] 시스템 베릴로그의 시간 단위 (0) | 2024.05.11 |