Jika mesin status didefinisikan sehingga satu atau beberapa bit status tidak nol dalam status reset, maka Anda harus secara eksplisit mengatur ulang mesin state menggunakan sinyal reset (lihat di bawah). Jika mesin status tidak secara eksplisit mengatur ulang dalam kasus ini, mesin status dapat menyala menjadi keadaan yang tidak terdefinisi, dan MAX PLUS® II akan memberikan pesan berikut:
Info: '<name>' mesin status harus diatur ulang untuk menjamin pengoperasian yang tepat
Untuk mengatasi masalah ini, mesin status harus secara eksplisit mengatur ulang. Contoh untuk format entri desain AHDL, VHDL, dan HDL Verilog ditampilkan di bawah ini.
Untuk AHDL, sinyal reset harus dinyatakan dan ditegaskan.
SUBDESIGN statemachine ( clk, reset, ena, d : INPUT; q : OUTPUT; ) VARIABLE ss: MACHINE WITH STATES (s0=1, s1=0); -- reset state is s0, state register is non-zero BEGIN ss.reset = reset; -- assert this signal to properly reset the state machine
Untuk VHDL, status awal dapat didefinisikan oleh IF
pernyataan dan sinyal reset.
ENTITY statemachine IS PORT( clk : IN STD_LOGIC; input : IN STD_LOGIC; reset : IN STD_LOGIC; output : OUT STD_LOGIC); END statemachine; ARCHITECTURE a OF statemachine IS TYPE STATE_TYPE IS (s1, s2); -- reset state is s1 ATTRIBUTE ENUM_ENCODING : STRING; ATTRIBUTE ENUM_ENCODING OF STATE_TYPE : TYPE IS "1 0"; -- state register for s1 is non-zero SIGNAL state : STATE_TYPE; BEGIN PROCESS (clk) BEGIN IF reset = '1' THEN state <= s2; -- causes state machine to power up in state s2 IF (clk'EVENT AND clk = '1') THEN CASE state IS
Untuk HDL Verilog, status awal harus didefinisikan oleh pernyataan IF
dan
reset signal, yaitu
module statemachine (clk, in, reset, out); input clk, in, reset; output out; reg out; reg state; parameter s1 = 1, s2 = 0; always @ (state) begin case (state) -- define outputs s1: out = 0; always @ (posedge clk or posedge reset) begin if (reset) state = s1; -- causes state machine to power up in state s1 else case (state) -- define state transitions s1: if (in) state = s2;
Untuk semua format HDL, jika Anda tidak mendefinisikan status awal mesin status menjadi semua nol, mengatur ulang mesin status secara eksplisit, karena mesin status akan meningkatkan daya rendah.
Lihat bagian HDL AHDL, VHDL, dan Verilog dari Bantuan MAX PLUS II untuk informasi lengkap tentang menerapkan mesin status di MAX PLUS II.