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

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

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

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

軟件:Quartus

語(yǔ)言:Verilog

代碼功能:

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

實(shí)驗(yàn)原理(Experimental principle )

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

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

信號(hào)不是‘1’時(shí),輸出信號(hào)為“0000”。

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

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

1.工程文件

2.程序文件

3.程序編譯

4.RTL圖

5.仿真圖

部分代碼展示:

//狀態(tài)機(jī) module mealy_state( input clk,//時(shí)鐘 input rst_n,//復(fù)位 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

 

【來(lái)源:www.hdlcode.com

相關(guān)推薦