If - Else
Coddy Verilog 여정의 기초 섹션에 포함된 레슨. 90개 중 53번째.
if-else 문을 사용하면 condition에 따라 서로 다른 두 가지 동작 중 하나를 선택할 수 있습니다. condition이 true이면 한 블록이 실행됩니다. false이면 다른 블록이 실행됩니다.
if-else 문은 코드에 의사 결정 지점을 제공합니다. condition이 true이면 한 가지 작업을 수행하고, condition이 false이면 다른 작업을 수행합니다.
구문:
if (condition) begin
// condition이 true(1)일 때 실행됩니다
end else begin
// condition이 false(0)일 때 실행됩니다
end간단한 예제
if (reset) begin
count = 0;
end else begin
count = count + 1;
endreset이 1이면 →count는 0이 됩니다reset이 0이면 →count가 1씩 증가합니다
여러 문
문이 둘 이상인 경우 begin과 end를 사용합니다:
if (enable) begin
out = data_in;
valid = 1;
end else begin
out = 0;
valid = 0;
end여러 조건을 사용하는 If-Else
if-else 문을 연결할 수 있습니다:
if (a > b) begin
max = a;
end else if (b > a) begin
max = b;
end else begin
max = a; // a와 b는 같다
end중요한 규칙
| 규칙 | 설명 |
|---|---|
else는 선택 사항입니다 | else 없이 if를 사용할 수 있습니다 |
else는 가장 가까운 if에 속합니다 | 중첩에 주의하세요 |
여러 문장에는 begin/end를 사용하세요 | 두 줄 이상인 경우 필요합니다 |
챌린지
해야 할 일:
- 누락된
if-elsestatement를 Add하여 이 작업이 작동하도록 하세요. enable이 1일 때,out은a & b와 equal해야 합니다.enable이 0일 때,out은a | b와 equal해야 합니다.
직접 해보기
module ifelse_challenge;
reg a, b, enable;
reg out;
initial begin
a = 1;
b = 0;
enable = 1;
// TODO: if-else 문 추가
// enable이 1이면: out = a & b
// 그렇지 않으면: out = a | b
$display("out = %d (should be 0 because 1&0=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 컴파일러