有限状态机的设计.ppt
《有限状态机的设计.ppt》由会员分享,可在线阅读,更多相关《有限状态机的设计.ppt(57页珍藏版)》请在三一办公上搜索。
1、第8章 有限状态机的设计,Verilog HDL数字系统设计及仿真,2,本章内容,有限状态机的类型一段式、两段式和三段式状态机写法状态编码,3,有限状态机的类型,moore型,也称为摩尔型mealy型,也称为米利型,4,moore型红绿灯,状态转换图,5,模型代码,module trafficlight1(clock,reset,red,yellow,green);input clock,reset;/输入时钟和复位信号output red,yellow,green;/输出红黄绿的驱动信号reg red,yellow,green;reg 1:0 current_state,next_state
2、;/保存当前状态和下一状态parameter red_state=2b00,yellow_state=2b01,green_state=2b10,delay_r2y=4d8,delay_y2g=4d3,delay_g2r=4d11;/参数声明,6,/第一段always,用于把下一状态赋值给当前状态always(posedge clock or posedge reset)begin if(reset)current_state=red_state;else current_state=next_state;end,7,/第二段always,用于根据当前状态判断下一状态,并产生输出always(
3、current_state)begin case(current_state)red_state:begin red=1;yellow=0;green=0;repeat(delay_r2y)(posedge clock);next_state=yellow_state;end,8,完成状态描述,yellow_state:begin red=0;yellow=1;green=0;repeat(delay_y2g)(posedge clock);next_state=green_state;end green_state:begin red=0;yellow=0;green=1;repeat(de
4、lay_g2r)(posedge clock);next_state=red_state;end default:begin red=1;yellow=0;green=0;next_state=red_state;end endcaseendendmodule,9,测试信号,initial clock=0;always#10 clock=clock;initialbegin reset=1;#1 reset=0;/产生一个复位信号沿#10000 reset=1;/主要工作时间#20$stop;end,10,功能仿真时序仿真,11,增加一个可变计数器,always(posedge clock o
5、r posedge reset)begin if(reset)light_count=0;else if(light_count=light_delay)/达到规定的计数值light_delay时置1 light_count=1;else light_count=light_count+1;end,12,case(current_state)red_state:begin red=1;yellow=0;green=0;light_delay=red_delay;if(light_count=light_delay)next_state=yellow_state;end yellow_state
6、:begin red=0;yellow=1;green=0;light_delay=yellow_delay;if(light_count=light_delay)next_state=green_state;end,13,green_state:begin red=0;yellow=0;green=1;light_delay=green_delay;/延迟时间被赋值为green时的延迟 if(light_count=light_delay)/达到延迟时间变为下一状态 next_state=red_state;end,14,mealy型红绿灯,状态转换图,15,设计模块,module traf
7、ficlight3(clock,reset,x,red,yellow,green);input clock,reset;input x;/多添加了一个输入端xoutput red,yellow,green;reg red,yellow,green;reg 1:0 current_state,next_state;parameter red_state=2b00,yellow_state=2b01,green_state=2b10,delay_r2y=4d8,delay_y2g=4d3,delay_g2r=4d11;,16,always(posedge clock or posedge rese
8、t)/原态和新态的转换begin if(reset)current_state=red_state;else current_state=next_state;end,17,always(current_state or x)begin case(current_state)red_state:begin red=1;yellow=0;green=0;if(x=1)/红灯时若x为1,则把下一状态指向黄灯 begin repeat(delay_r2y)(posedge clock);next_state=yellow_state;end end,18,yellow_state:begin red
9、=0;yellow=1;green=0;repeat(delay_y2g)(posedge clock);next_state=green_state;end green_state:begin red=0;yellow=0;green=1;repeat(delay_g2r)(posedge clock);next_state=red_state;end,19,default:begin red=1;yellow=0;green=0;next_state=red_state;end endcaseendendmodule,20,仿真波形,21,一段式状态机,检测输入信号0110 状态转换图,2
10、2,状态转换表,23,声明部分,module fsm_seq1(x,z,clk,reset);input x,clk,reset;output z;reg z;reg2:0state;parameter s0=d0,s1=d1,s2=d2,s3=d3,s4=d4;,24,一段always,always(posedge clk or posedge reset)/仅有一段always begin if(reset)/复位信号有效 begin state=s0;/回到初始状态 z=0;/z输出0 end,25,S0状态,S1状态,else casex(state)s0:begin if(x=1)b
11、egin state=s0;z=0;end else begin state=s1;z=0;end end,s1:begin if(x=0)begin state=s1;z=0;end else begin state=s2;z=0;end end,26,S2状态,S3状态,s2:begin if(x=0)begin state=s1;z=0;end else begin state=s3;z=0;end end,s3:begin if(x=0)begin state=s4;z=1;end else begin state=s0;z=0;end end,27,S4状态,结束,s4:begin
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 有限状态机 设计

链接地址:https://www.31ppt.com/p-6300363.html