原始碼:
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.針對 基礎段 的編寫說明 從設計角度來說,完全可以將所有的 基礎...