Blocking Assignment
Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası. Ders 49 / 90.
Verilog'da iki tür prosedürel assignment vardır: bloklayan (=) ve bloklamayan (<=). Bu derste bloklayan assignment konusuna odaklanıyoruz.
Blocking assignment uses = operatörünü kullanır. Buna "engelleyici" denir çünkü mevcut assignment tamamlanana kadar sonraki ifadenin yürütülmesini engeller. Kod, step by step, sırayla çalışır.
Sözdizimi:
variable = expression;Blocking assignment Ne Zaman Kullanılır
Blocking assignment (=), kombinasyonel mantık için kullanılır: girişler değiştiğinde çıkışların hemen değiştiği, saat sinyali ve bellek olmayan devreler.
Kombinasyonel mantık örnekleri:
- AND / OR / XOR kapıları
- Toplayıcılar ve çıkarıcılar
- Çoklayıcılar
- Kod çözücüler
Verilog örneği:
always @(*) begin
sum = a + b; // Bloklayan atama
carry = a & b; // Bloklayan atama
endAlways Bloklarında Blocking (Kombinasyonel Mantık)
always @(*) begin
temp = a & b; // Adım 1
out = temp | c; // Adım 2 (temp'i adım 1'den kullanır)
endSıra önemlidir. Bu, birleşimsel mantık için uygundur.
Blocking ve Non-Blocking
Blocking (=) | Non-blocking (<=) | |
|---|---|---|
| Yürütme | Birbiri ardına | Hepsi aynı anda |
| Sonraki satır bekler mi? | Evet | Hayır |
| Uses | Kombinasyonel mantık | Sıralı mantık (flip-flop'lar) |
Önemli: Flip-Flop'lar için Blocking Kullanmayın
Görev
x ve y değerlerini geçici bir değişken kullanarak değiştirmek için eksik blocking assignment ifadelerini ekleyin.
Yapılacaklar:
xdeğerinitemp'e Assign edin (x'i temp'e kaydedin)ydeğerinix'e Assign edin (y'yi x'e taşıyın)tempdeğeriniy'ye Assign edin (kaydedilmiş x'i y'ye taşıyın)
Kendin dene
module swap;
reg x, y;
reg temp;
initial begin
x = 1;
y = 0;
$display("Before swap: x=%d, y=%d", x, y);
// TODO: Adım 1 - x'i temp'e ata
// TODO: Adım 2 - y'yi x'e ata
// TODO: Adım 3 - temp'i y'ye ata
$display("After swap: x=%d, y=%d", x, y);
$finish;
end
endmoduleBu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Temeller bölümündeki tüm dersler
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 LogicKendi başına pratik yap: Online Verilog derleyicisi