Verilog HDL: เครื่องสถานะซิงโครนัส

author-image

โดย

นี่เป็นตัวอย่าง Verilog ที่แสดงการปรับใช้เครื่องสถานะ คําสั่ง CASE แรกจะกําหนดเอาต์พุตที่ขึ้นอยู่กับค่าของสถานะตัวแปรเครื่องสถานะ คําแถลงของ CASE ที่สองเป็นตัวกําหนดการเปลี่ยนแปลงของ State Machine และเงื่อนไขที่ควบคุม

สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้ตัวอย่างนี้ในโครงการของคุณ โปรดดูที่ ส่วน วิธีใช้ตัวอย่าง Verilog HDL ในหน้าเว็บ Verilog


statem.v

module statem (clk, in, รีเซ็ต, ขาออก);

clk อินพุต, เข้า, รีเซ็ต;
เอาต์พุต [3:0] ออก;

reg [3:0] out;
สถานะ reg [1:0]

parameter zero=0, one=1, two=2, three=3;

เสมอ @(state) 
     start
          case (state)
               ศูนย์: out =
                    4'b0000;
               หนึ่ง:
                    ออก = 4'b0001;
               two:
                    out = 4'b0010;
               สาม:
                    ออก = 4'b0100;
               ค่าเริ่มต้น:
                    ออก = 4'b0000;
          endcase
     end

always @(posedge clk หรือ posedge reset)
     เริ่มต้นถ้า
          (รีเซ็ต)
               สถานะ = ศูนย์;
               เช่น กรณี (รัฐ)
                    ศูนย์: สถานะ =
                         หนึ่ง;
                    หนึ่ง:
                         ถ้า (in)
                              สถานะ = ศูนย์;
                         สถานะอื่น
                              = สอง;
                    สอง:
                         สถานะ = สาม;
                    สาม:
                         สถานะ = ศูนย์;
     Endcase

endmodule

เนื้อหาในหน้านี้เป็นการผสมผสานระหว่างการแปลเนื้อหาต้นฉบับภาษาอังกฤษโดยมนุษย์และคอมพิวเตอร์ เนื้อหานี้จัดทำขึ้นเพื่อความสะดวกของคุณและเพื่อเป็นข้อมูลทั่วไปเท่านั้นและไม่ควรอ้างอิงว่าสมบูรณ์หรือถูกต้อง หากมีความขัดแย้งใด ๆ ระหว่างเวอร์ชันภาษาอังกฤษของหน้านี้กับคำแปล เวอร์ชันภาษาอังกฤษจะมีผลเหนือกว่าและควบคุม ดูเวอร์ชันภาษาอังกฤษของหน้านี้