Tải bản đầy đủ (.pdf) (2 trang)

Code FSM Mẫu Verilog HDL

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (105.5 KB, 2 trang )

Moore machine – String 1011 Detector

module Moore_FSM(x, clk, rst, w);
input x, clk, rst;
output w;
reg w;
parameter [2:0] A = 3'b 000, B = 3'b 001, C = 3'b 010, D = 3'b 011, E = 3'b 100;
reg [2:0] p_state, n_state; // present and next states, respectively.
always @(x or p_state) begin: Transitions
n_state = A; //Reset state
case (p_state)
A:
if (x == 1'b 1) n_state =
else n_state = A;
B:
if (x == 1'b 1) n_state =
else n_state = C;
C:
if (x == 1'b 1) n_state =
else n_state = A;
D:
if (x == 1'b 1) n_state =
else n_state = C;
E:
if (x == 1'b 1) n_state =
else n_state = C;

B;

B;


D;

E;

B;

default:
n_state = A; // reset state
endcase
end
always @(x or p_state) begin: Outputing
w = 1'b 0;
w = (p_state == E);
end
always @(posedge clk) begin: Registering //Synchronous
if (rst) p_state = A; //reset state
else p_state = n_state;
end
endmodule


Mealy machine– String 1011 Detector

module Mealy_FSM(x, clk, rst, w);
input x, clk, rst;
output w;
reg w;
parameter [1:0] A = 2'b 00, B = 2'b 01, C = 2'b 10, D = 2'b 11;
reg [1:0] p_state, n_state; // present and next states, respectively.
always @(x or p_state) begin: Transitions

n_state = A; //Reset state
case (p_state)
A:
if (x == 1'b 1) n_state =
else n_state = A;
B:
if (x == 1'b 1) n_state =
else n_state = C;
C:
if (x == 1'b 1) n_state =
else n_state = A;
D:
if (x == 1'b 1) n_state =
else n_state = C;

B;

B;

D;

B;

default:
n_state = A; // reset state
endcase
end
always @(x or p_state) begin: Outputing
w = 1'b 0;
w = (p_state == D)&(x == 1'b 1);

end
always @(posedge clk) begin: Registering //Synchronous
if (rst) p_state = A; //reset state
else p_state = n_state;
end
endmodule



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×