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

آلة الحالة

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

challenge icon

التحدي

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

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

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

cntقيمة tx
01
10
21
30
40
50
60
70
80
91
101

ما يجب فعله

  1. أضف مدخلاً يسمى start
  2. أضف مخرجاً من نوع reg يسمى tx
  3. في كتلة initial، اضبط tx = 1 (حالة الخمول العالية)
  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

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