Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

State Machine

جزء من قسم الأساسيات في رحلة Verilog على Coddy. الدرس 88 من 90.

challenge icon

التحدي

آلة الحالات هي دائرة يمكن أن تكون في واحدة من عدة حالات. بالنسبة إلى UART، لدينا حالات مختلفة لكل bit: idle وstart وdata bits من 0 إلى 7 وstop. يخبرنا عدّاد bit (cnt) بالحالة التي نحن فيها. وبناءً على cnt، نحدد القيمة التي يجب إرسالها على خط tx.

لديك عدّاد bit من الدرس السابق. تحتاج إلى تعديله ليعمل كمرسل UART.

قيم bit المطلوب إرسالها (للحرف 'A')

cntقيمة tx
01
10
21
30
40
50
60
70
81
90
101

ما يجب فعله

  1. أضف input باسم start
  2. أضف output reg باسم tx
  3. في كتلة initial، عيّن tx = 1 (حالة idle عالية)
  4. غيّر منطق العدّاد:
    • عندما يكون cnt == 0 وstart == 1، عيّن cnt <= 1 (ابدأ الإرسال)
    • عندما تكون قيمة cnt بين 1 و9، زِدها: cnt <= cnt + 1
    • عندما يكون cnt == 10، أعد الضبط إلى 0

جرّب بنفسك

module uart_tx (
  input clk,
  output reg [3:0] cnt
);

  initial begin
    cnt = 0;
  end

  always @(posedge clk) begin
      cnt <= cnt + 1;
  end

endmodule

جميع دروس الأساسيات

تدرّب بنفسك: مترجم Verilog عبر الإنترنت