资源描述:
《EDA实验五 状态机》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验五有限状态机0900210204吴韦艳一、实验目的:本次实验通过Verilog硬件语言编写摩尔型有限状态机和米勒型有限状态机,掌握采用有限状态机产生各种控制信号的原理,熟悉如何选用合适的有限状态机进行电路设计,通过实验进一步了解原理图编辑方法和仿真方法。二、实验要求:1、利用Verilog硬件语言,参考提供的源程序,设计一个采用摩尔型有限状态机实现的流水灯控制程序;2、利用Verilog硬件语言,参考提供的源程序,设计一个采用米勒型有限状态机实现的串行口发送程序;3、利用Verilog硬件语言,参
2、考提供的源程序,设计一个采用米勒型有限状态机实现的串行口接收程序;4、利用原理图编辑方法,将串行口发送和接收模块进行连接,实现完整的串行通信电路,并对该电路进行仿真。三、实验内容1、米勒型有限状态机实现的串行口发送源程序modules_tx(clk,en,dain,txd);inputclk,en;input[7:0]dain;outputtxd;reg[7:0]da_temp;regtxd;reg[3:0]state;parameterswait=4'b0000,star=4'b0001,s1=4'
3、b0010,s2=4'b0011,s3=4'b0100,s4=4'b0101,s5=4'b0110,s6=4'b0111,s7=4'b1000,s8=4'b1001,stop=4'b1010;always@(posedgeen)da_temp<=dain;always@(posedgeclk)if(!en)beginstate<=swait;txd<=1;endelsecase(state)swait:beginstate<=star;txd<=1;endstar:beginstate<=s1;txd
4、<=0;end//状态转换s1:beginstate<=s2;txd<=da_temp[7];ends2:beginstate<=s3;txd<=da_temp[6];ends3:beginstate<=s4;txd<=da_temp[5];ends4:beginstate<=s5;txd<=da_temp[4];ends5:beginstate<=s6;txd<=da_temp[3];ends6:beginstate<=s7;txd<=da_temp[2];ends7:beginstate<=s8;
5、txd<=da_temp[1];ends8:beginstate<=stop;txd<=da_temp[0];endstop:beginstate<=stop;txd<=1;endendcaseendmodule2、米勒型有限状态机实现的串行口接收源程序modules_rx(clk,dain,daout);inputclk,dain;output[7:0]daout;reg[7:0]daout;reg[7:0]da_temp;reg[3:0]state;parameterstar=4'b0000,s1
6、=4'b0010,s2=4'b0011,s3=4'b0100,s4=4'b0101,s5=4'b0110,s6=4'b0111,s7=4'b1000,s8=4'b1001,stop=4'b1010;always@(negedgeclk)case(state)star:if(dain)state<=star;elsestate<=s1;//数据开始位为0s1:beginstate<=s2;da_temp[7]<=dain;end//状态转换s2:beginstate<=s3;da_temp[6]<=da
7、in;ends3:beginstate<=s4;da_temp[5]<=dain;ends4:beginstate<=s5;da_temp[4]<=dain;ends5:beginstate<=s6;da_temp[3]<=dain;ends6:beginstate<=s7;da_temp[2]<=dain;ends7:beginstate<=s8;da_temp[1]<=dain;end//8个状态s8:beginstate<=stop;da_temp[0]<=dain;end//数据结束位为1st
8、op:if(!dain)state<=stop;elsebeginstate<=star;daout<=da_temp;endendcaseEndmodule3、由s_tx和s_rx组成的电路4、对以上电路做波形仿真3、状态机6、实验总结通过本次实验我掌握采用有限状态机产生各种控制信号的原理,熟悉如何选用合适的有限状态机进行电路设计,通过实验进一步了解了原理图编辑方法和仿真方法。