• 正文
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

mealy型狀態(tài)機設(shè)計Verilog代碼Quartus仿真

6小時前
197
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

名稱:mealy型狀態(tài)機設(shè)計Verilog代碼Quartus仿真

軟件:Quartus

語言:Verilog

代碼功能:

對于圖7-1所示的狀態(tài)圖和狀態(tài)機框圖,將其實現(xiàn)為Mealy型狀態(tài)機(Mealy type state machine),輸出信號是否存在“毛刺(burr)”沒有要求,寫出其VERILOG HDL源代碼(包括entity和architecture)并畫出結(jié)果電路圖,要求調(diào)試通過。

實驗原理(Experimental principle )

Mealy型狀態(tài)機和其等價的Moore型狀態(tài)機相比,其輸出變化要領(lǐng)先一個時鐘周期(Clock cycle)。Mealy機的輸出既和當前狀態(tài)有關(guān),又和所有輸入信號有關(guān)。也就是說,一旦輸入信號發(fā)生變化或狀態(tài)發(fā)生變化,輸出信號立即發(fā)

生變化,因此在狀態(tài)圖中,一般把輸出信號值畫在狀態(tài)變遷(changes)處。例如:假定當前狀態(tài)為S0,當輸入信號為‘1’時,輸出信號為“1001”;當輸入

信號不是‘1’時,輸出信號為“0000”。

構(gòu)造 Mealy機的方法和Moore機相同,唯一的區(qū)別是:組合進程中的輸

出信號是當前狀態(tài)和當前輸入的函數(shù)。

1.工程文件

2.程序文件

3.程序編譯

4.RTL圖

5.仿真圖

部分代碼展示:

//狀態(tài)機 module mealy_state( input clk,//時鐘 input rst_n,//復位 input data_in, output reg[3:0] data_out ); parameter S0=2'b00; parameter S1=2'b01; parameter S2=2'b10; parameter S3=2'b11; reg [1:0] curr_state; reg [1:0] next_state; always@(posedge clk or negedge rst_n) if(~rst_n) curr_state<=S0; else ?curr_state<=next_state; //狀態(tài)跳轉(zhuǎn) always@(*) case(curr_state) S0: if(data_in==1) next_state=S1; else next_state=S0; S1: if(data_in==0) next_state=S2; else next_state=S1; S2: if(data_in==1) next_state=S3; else next_state=S2; S3: if(data_in==0) next_state=S0; else next_state=S3; endcase

 

【來源:www.hdlcode.com

相關(guān)推薦