ID บทความ: 000080719 ประเภทข้อมูล: การแก้ไขปัญหา การตรวจสอบครั้งล่าสุด: 11/09/2012

สถานะเริ่มต้นของเครื่องสถานะที่เครื่องเปิดเครื่องอยู่คืออะไร

สิ่งแวดล้อม

BUILT IN - ARTICLE INTRO SECOND COMPONENT
คำอธิบาย เมื่อทําการสังเคราะห์ State Machine สําหรับอุปกรณ์Altera® คุณต้องตรวจสอบให้แน่ใจว่าเครื่องสถานะถูกรีเซ็ตอย่างถูกต้อง การลงทะเบียนทั้งหมดในอุปกรณ์ Altera จะทํางานในสถานะต่ํา เว้นแต่จะใช้ Not-Gate-Push-Back หรือมีการตั้งค่าตัวเลือกระดับสูงในการเปิดเครื่องไว้ในการลงทะเบียน อุปกรณ์Alteraทั้งหมดรองรับไม่ผ่าน Gate-Push-Back

หากมีการกําหนด State Machine เพื่อให้บิตสถานะหนึ่งตัวขึ้นไปมีสถานะไม่อยู่ในสถานะรีเซ็ต คุณควรรีเซ็ตเครื่องสถานะอย่างชัดแจ้งโดยใช้สัญญาณรีเซ็ต (ดูด้านล่าง) หากไม่ได้รีเซ็ตเครื่องสถานะอย่างชัดแจ้งในกรณีนี้ เครื่องแสดงสถานะอาจทํางานเป็นสถานะที่ไม่ได้กําหนด และ MAX PLUS® II จะส่งข้อความต่อไปนี้:

ข้อมูล: ต้องรีเซ็ตเครื่องสถานะ '<name>' เพื่อรับประกันการทํางานที่เหมาะสม

เพื่อแก้ไขปัญหานี้ ควรรีเซ็ตเครื่องสถานะอย่างชัดแจ้ง ตัวอย่างรูปแบบรายการออกแบบ AHDL, VHDL และ Verilog HDL มีแสดงอยู่ด้านล่าง

สําหรับ AHDL ควรประกาศและรับรองสัญญาณรีเซ็ต

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



สําหรับ VHDL สถานะเริ่มต้นอาจถูกกําหนดโดย IF คําสั่งและสัญญาณรีเซ็ต

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







สําหรับ Verilog HDL ต้องกําหนดสถานะเริ่มต้นด้วยคํา IF แถลงและ สัญญาณรีเซ็ต เช่น

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;



สําหรับรูปแบบ HDL ทั้งหมด หากคุณไม่ได้กําหนดสถานะเริ่มต้นของ State Machine ให้เป็นศูนย์ทั้งหมด ให้รีเซ็ตเครื่องสถานะอย่างชัดแจ้ง เนื่องจาก State Machine จะเปิดเครื่องต่ํา

ดูส่วน AHDL, VHDL และ Verilog HDL ของความช่วยเหลือ MAX PLUS II สําหรับ ข้อมูลทั้งหมดเกี่ยวกับการปรับใช้เครื่องสถานะใน MAX PLUS II

ผลิตภัณฑ์ที่เกี่ยวข้อง

บทความนี้จะนำไปใช้กับ 1 ผลิตภัณฑ์

อุปกรณ์ที่ตั้งโปรแกรมได้ Intel®

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