Casex And Casez
Coddy Verilog 여정의 기초 섹션에 포함된 레슨. 90개 중 56번째.
때로는 값에서 특정 비트에만 관심이 있고, 다른 비트는 무시할 수 있습니다. 예를 들어 우선순위 인코더에서는 다른 비트와 관계없이 첫 번째 1 비트를 찾고자 합니다.
일반적인 case statement에서는 don't-care 비트의 가능한 모든 조합을 나열해야 하므로, 폭이 넓은 버스에서는 불가능합니다.
<strong>casez</strong>와 <strong>casex</strong>는 ?, z 또는 x를 사용하여 특정 비트를 "don't care"로 표시할 수 있도록 함으로써 이 문제를 해결합니다.
Casez vs Casex vs 일반 Case
| 문 | 무관 비트 | 가장 적합한 용도 |
|---|---|---|
case | 없음 | 정확한 일치 |
casez | z 또는 ? | 우선순위 인코더 (권장) |
casex | x, z 또는 ? | 피할 것 (버그를 숨김) |
<strong>casez</strong>는z또는?인 비트를 무시합니다(권장).<strong>casex</strong>는x비트도 무시하므로 시뮬레이션 오류를 숨길 수 있습니다.
항상 <strong>casez</strong>를 사용하고, <strong>casex</strong>는 사용하지 마세요. casex가 먼저 만들어졌지만, 엔지니어들은 이것이 위험하다는 사실을 깨달았습니다. x 값을 무시하기 때문입니다(이 값은 초기화되지 않은 레지스터나 시뮬레이션 오류를 나타내는 경우가 많습니다). 더 안전한 대안으로 casez가 도입되었습니다.
예제
casez (data)
4'b???1: out = 0; // Bit0 must be 1, others don't matter
4'b??1?: out = 1; // Bit1 must be 1, others don't matter
4'b?1??: out = 2; // Bit2 must be 1, others don't matter
4'b1???: out = 3; // Bit3 must be 1, others don't matter
endcase?는 "don’t care"를 의미합니다. 해당 비트는 0, 1 또는 무엇이든 될 수 있습니다.
챌린지
할 일:
이 decoder가 작동하도록 누락된 casez statement를 Add하세요.
작동 방식:
input = 4'b???1→out = 4'b0001input = 4'b??1?→out = 4'b0010input = 4'b?1??→out = 4'b0100input = 4'b1???→out = 4'b1000- Default →
out = 4'b0000
직접 해보기
module decoder (
input [3:0] in,
output reg [3:0] out
);
always @(*) begin
// TODO: casez 구문 추가
// in = 4'b???1 -> out = 4'b0001
// in = 4'b??1? -> out = 4'b0010
// in = 4'b?1?? -> out = 4'b0100
// in = 4'b1??? -> out = 4'b1000
// default -> out = 4'b0000
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 컴파일러