用三段式寫10010的序列檢測

2021-09-25 17:15:49 字數 2639 閱讀 8164

原始碼:

module xljc(

input clk,

input rst,

input code,

output reg code_out,

output reg code_mealy_out

);parameter idle=6』b000001;

parameter s1=6』b000010;

parameter s2=5』b000100;

parameter s3=5』b001000;

parameter s4=5』b010000;

parameter s5=5』b100000;

reg [5:0] current_state,next_state;

always@(posedge clk or negedge rst)

begin

if(~rst)

current_state<=idle;

else

current_state<=next_state;

endalways@(*)

begin

next_state=idle;

case(current_state)

idle: if(code0) next_state=idle; else next_state=s1;

s1: if(code0) next_state=s2; else next_state=s1;

s2: if(code0) next_state=s3; else next_state=s1;

s3: if(code0) next_state=idle; else next_state=s4;

s4: if(code0) next_state=s5; else next_state=s1;

s5: if(code0) next_state=s3; else next_state=s1;

default:next_state=idle;

endcase

end//more 狀態

always@(posedge clk or negedge rst)

begin

if(~rst)

code_out<=0;

else

case(current_state)

idle: code_out<=0;

s1: code_out<=0;

s2: code_out<=0;

s3: code_out<=0;

s4: code_out<=0;

s5: code_out<=1;

default:code_out<=0;

endcase

end//mealy 狀態

always@(posedge clk or negedge rst)

begin

if(~rst)

code_mealy_out<=0;

else

begin

code_mealy_out<=(current_states4&&code0)?1』b1:1』b0;

endend

endmodule

激勵:`timescale 1ns/1ns

module xljc_tb();

reg clk;

reg rst;

reg code;

initial

begin

rst=0;

#100 rst=1;

#10000 $stop;

endinitial

begin

clk=0;

endalways #10 clk<=~clk;

always@(posedge clk or negedge rst)

begin

if(~rst)

code<=0;

else

code<=%2;

endxljc xljc_inist(

.clk(clk),

.rst(rst),

.code(code),

.code_out(),

.code_mealy_out()

);endmodule

原理思想:先將這個任務的狀態提煉出來,我們把這個任務分為6個狀態,然後寫出狀態機。在運用三段式狀態將它寫出來。

三段式的寫法:

****always@(posedge clk)

begin

if(~rst)

current-state<=idle;

else

current-state<=next_state;

end

always@(*)

begin

case(current_state)

狀態轉移條件:next_state=***;

end

always@(posedge clk)

begin

給各個狀態賦值;

end****

隨機數的寫法: code<=%2;

moore:輸出只與當前狀態有關。

mealy:輸出與當前狀態和輸入有關。

三段式過流保護

三段式過流保護是把速斷 限時速斷及過流三種過電流保護綜合在一起的電流保護,其區別為 1.速斷保護 電流定值很大,一般為額定電流8 10倍 我廠經驗 無延時出口跳閘 2.限時速斷 電流定值較大,一般為額定電流5 7倍,短延時出口跳閘 3.過流 電流定值較小,一般為額定電流2 3倍,較長延時出口跳閘 電...

Moor Mealy FMS及三段式狀態機寫法

示例有限狀態機 finite state machine,fsm 包含幾個要素 輸入 狀態 狀態轉移條件 輸出。這裡討論的兩種狀態機區別在於輸出的產生 二段式 有兩個always block 狀態切換用時序邏輯描述 次態判斷和輸出用組合邏輯描述。這種寫法條理清晰,但輸出由組合邏輯描述因此可能存在競爭...

「三段式」程式設計結構(最初版)

一 結構圖釋 二 結構實現建議 1.命名空間命名規則 性質 公司 作者 專案名稱 所屬 段 名稱 業務 operation 模組 module 基礎 base 例如 personal.ygl.mycodesource.module 2.針對 基礎段 的編寫說明 從設計角度來說,完全可以將所有的 基礎...