ID bài viết: 000080719 Loại nội dung: Xử lý sự cố Lần duyệt cuối: 11/09/2012

Trạng thái ban đầu của một máy trạng thái đang bật nguồn là gì?

Môi Trường

BUILT IN - ARTICLE INTRO SECOND COMPONENT
Mô tả Khi tổng hợp một máy trạng thái cho Altera® thiết bị khác, bạn phải đảm bảo máy trạng thái được đặt lại đúng cách. Tất cả các thanh ghi trong Altera sẽ bật nguồn ở trạng thái thấp, trừ khi Not-Gate-Push-Back được sử dụng hoặc các tùy chọn bật nguồn cao được đặt trên thanh ghi. Tất cả Altera thiết bị đều hỗ trợ Not-Gate-Push-Back.

Nếu máy trạng thái được định nghĩa sao cho một hoặc nhiều bit trạng thái không bằng 0 ở trạng thái đặt lại, thì bạn nên đặt lại dứt khoát máy trạng thái bằng tín hiệu đặt lại (xem bên dưới). Nếu máy trạng thái không được đặt lại rõ ràng trong trường hợp này, máy trạng thái có thể bật nguồn vào trạng thái không xác định và MAX PLUS® II sẽ gửi thông báo sau:

Thông tin: Máy trạng thái '>' phải được đặt lại để đảm bảo hoạt động bình thường

Để khắc phục vấn đề này, máy trạng thái phải được thiết lập lại rõ ràng. Ví dụ về định dạng mục nhập thiết kế AHDL, VHDL và Verilog HDL được hiển thị bên dưới.

Đối với AHDL, tín hiệu đặt lại phải được khai báo và khẳng định.

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



Đối với VHDL, trạng thái ban đầu có thể được xác định bằng một IF tuyên bố và tín hiệu đặt lại.

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 





Đối với Verilog HDL, trạng thái ban đầu phải được xác định bởi IF một tuyên bố và một tín hiệu đặt lại, ví dụ:

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;



Đối với tất cả các định dạng HDL, nếu bạn không xác định trạng thái ban đầu của máy trạng thái là tất cả các số không, hãy đặt lại dứt khoát máy trạng thái vì máy trạng thái sẽ tiết kiệm điện.

Xem các phần AHDL, VHDL và Verilog HDL của Trợ giúp MAX PLUS II cho thông tin đầy đủ về việc triển khai máy trạng thái MAX PLUS II.

Các sản phẩm liên quan

Bài viết này áp dụng cho 1 sản phẩm

Thiết bị có thể lập trình Intel®

Nội dung gốc bằng tiếng Anh trên trang này vừa do con người vừa do máy dịch. Nội dung này chỉ để cung cấp thông tin chung và giúp quý vị thuận tiện. Quý vị không nên tin đây là thông tin hoàn chỉnh hoặc chính xác. Nếu có bất kỳ mâu thuẫn nào giữa bản tiếng Anh và bản dịch của trang này, thì bản tiếng Anh sẽ chi phối và kiểm soát. Xem phiên bản tiếng Anh của trang này.