Transmitter Design
Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası. Ders 89 / 90.
Görev
Bu derste, yalnızca sabit 'A' harfini değil, herhangi bir byte'ı göndermek için shift register ekleyerek UART vericisini tamamlayacaksın.
shift register, tam çerçeveyi (Stop bit + 8 data bits + Start bit) yükler ve bunu her seferinde bir bit olacak şekilde dışarı kaydırır.
Çerçeve Biçimi
| Stop (1) | Data (8 bits) | Start (0) |
|---|---|---|
| 1 | data_in | 0 |
Örneğin, data_in = 8'b01000001 ('A' harfi) ise shift register şu hâle gelir: 1 01000001 0
Görevin
Önceki dersteki state machine sana veriliyor (sabit byte gönderir). Bunu, data_in girişinden herhangi bir byte gönderecek şekilde değiştirmen gerekiyor.
Yapılacaklar:
- port list içine (parantezlerin arasına)
data_inadlı birinput [7:0]ekle - Parantezlerin dışına (modül gövdesinin içine, çünkü dahili bir signal'dır)
shift_regadlı 10 bitlik birregekle cnt == 0vestart == 1olduğunda:shift_regdeğerini{1'b1, data_in, 1'b0}ile yükle
cnt1 ile 8 arasındayken:tx <= shift_reg[0]gönder- Sağa kaydır:
shift_reg <= shift_reg >> 1
cnt == 9olduğunda:tx <= shift_reg[0]gönder- Sağa kaydır:
shift_reg <= shift_reg >> 1
Kendin dene
module uart_tx (
input clk,
input start, // NEW: iletimi başlatmak için start sinyali
output reg tx, // NEW: seri çıkış hattı
output reg [3:0] cnt // Test için output olarak tut
);
initial begin
cnt = 0;
tx = 1; // NEW: tx'i HIGH yap (boşta durumu)
end
always @(posedge clk) begin
// NEW: start koşulu ile sayaç mantığı
if (cnt == 0 && start) begin // NEW: iletime başla
cnt <= 1;
end
else if (cnt > 0 && cnt < 9) begin // NEW: iletim sırasında say
cnt <= cnt + 1;
end
else if (cnt == 9) begin // NEW: son bitten sonra sıfırla
cnt <= 0;
end
end
endmoduleTemeller 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