If Statement
Coddy Verilog 여정의 기초 섹션에 포함된 레슨. 90개 중 52번째.
if 문은 조건이 참일 때만 코드를 실행하는 의사 결정 블록입니다. if 문은 조건을 확인합니다.
condition이 true (1)이면 내부의 코드가 executes. condition이 false (0)이면 코드를 건너뜁니다.
구문:
if (condition) begin
// condition이 true일 때 코드가 실행됩니다
end간단한 예제
if (reset) begin
count = 0;
end이 예제에서는 다음과 같습니다:
begin과end는 코드 블록의 시작과 끝을 표시하는 데 사용됩니다
reset이 1(참)이면,begin과end내부의 코드가 executes →count가 0이 됩니다reset이 0(거짓)이면, 내부의 코드를 건너뜁니다 → 아무 일도 일어나지 않습니다
begin과 end는 다른 프로그래밍 언어의 중괄호 { }와 같은 역할을 합니다. 이들은 명령문을 함께 묶어 Verilog가 어떤 코드가 if 조건에 속하는지 알 수 있도록 합니다. 여기에는 명령문이 하나뿐이지만, 일관성을 위해 begin과 end를 사용하는 것은 여전히 좋은 습관입니다.
Always 블록의 If 문
always @(posedge clk) begin
if (reset)
count <= 0;
end참고: 단일 문장의 경우 begin과 end는 선택 사항입니다. 예를 들어, 위의 always 블록에는 문장이 하나뿐이므로 if 뒤에 begin/end가 필요하지 않습니다.
조건은 어떤 표현식이든 될 수 있습니다
if (a > b) begin
max = a;
end
if (a && b) begin
out = 1;
end
if (data == 8'hFF) begin
match = 1;
end중요한 규칙
| 규칙 | 설명 |
|---|---|
| Condition은 어떤 표현식이든 될 수 있음 | 0이 아닌 (그리고 알려진) 값은 true로, 0은 false로 처리됨 |
여러 statement에는 begin / end가 필요함 | 다른 언어의 { }와 같음 |
begin/end가 없으면 하나의 statement만 뒤따름 | 바로 다음 줄만 해당됨 |
챌린지
수행할 작업:
- 누락된
ifstatement를 Add하여 이것이 작동하도록 하세요.
enable이1일 때,out은a & b와 같아야 합니다.enable이0일 때,out은0으로 유지되어야 합니다(변경되지 않음).
시작 코드에서는 out = 0을 초기화하고 두 경우를 모두 테스트합니다.
직접 해보기
module if_challenge;
reg a, b, enable;
reg out = 0;
initial begin
a = 1;
b = 1;
// 테스트 케이스 1: enable = 1
enable = 1;
// TODO: if 문 추가 (out = a & b)
$display("enable=1: out = %d (should be 1)", out);
// 테스트 케이스 2: enable = 0
enable = 0;
out = 0;
// TODO: out은 0으로 유지되어야 함
$display("enable=0: out = %d (should be 0)", out);
$finish;
end
endmodule이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
기초의 모든 레슨
4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine Logic직접 연습해 보세요: 온라인 Verilog 컴파일러