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

آلة الحالة

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

challenge icon

التحدي

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

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

قيم البتات المراد إرسالها (لحرف 'A')

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

ما يجب عليك فعله

  1. أضف دخلًا (input) باسم start
  2. أضف خرجًا من نوع reg باسم tx
  3. في كتلة initial، اضبط tx = 1 (يكون idle على HIGH)
  4. قم بتغيير منطق العداد (counter logic):
    • عندما يكون cnt == 0 و start == 1، اضبط cnt <= 1 (ابدأ الإرسال - transmitting)
    • عندما تكون قيمة cnt بين 1 و 9، قم بالزيادة: cnt <= cnt + 1
    • عندما يكون cnt == 10، أعد الضبط (reset) إلى 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

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