verilog经典三段式状态机设计实例

上传人:re****.1 文档编号:476224284 上传时间:2023-06-29 格式:DOCX 页数:7 大小:120.95KB
返回 下载 相关 举报
verilog经典三段式状态机设计实例_第1页
第1页 / 共7页
verilog经典三段式状态机设计实例_第2页
第2页 / 共7页
verilog经典三段式状态机设计实例_第3页
第3页 / 共7页
verilog经典三段式状态机设计实例_第4页
第4页 / 共7页
verilog经典三段式状态机设计实例_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《verilog经典三段式状态机设计实例》由会员分享,可在线阅读,更多相关《verilog经典三段式状态机设计实例(7页珍藏版)》请在金锄头文库上搜索。

1、Moore型verilog源代码:FSM实现10010串的检测Moore状态转移图module moorefsm(clk,rst,a,z); input clk,rst; input a; output z; reg z; reg 3:0 currentstate,nextstate; parameter S0 = 4b0000; parameter S1 = 4b0001; parameter S2 = 4b0010; parameter S3 = 4b0011; parameter S4 = 4b0100; parameter S5 = 4b0101; always(posedge clk

2、 or negedge rst) begin if(!rst) currentstate = S0; else currentstate = nextstate; endalways(currentstate or a or rst) begin if(!rst) nextstate = S0; else case(currentstate) S0: nextstate = (a=1)?S1:S0; S1: nextstate = (a=0)?S2:S1; S2: nextstate = (a=0)?S3:S1; S3: nextstate = (a=1)?S4:S0; S4: nextsta

3、te = (a=0)?S5:S1; S5: nextstate = (a=0)?S3:S1; default: nextstate = S0; endcase endalways(rst or currentstate) begin if(!rst) z = 0; else case(currentstate) S0: z = 0;S1: z = 0;S2: z = 0; S3: z = 0;S4: z = 0;S5: z = 1; default: z = 0; endcase endendmodule moorefsm测试模块testbench module tb_fsm; reg clk

4、,rst; reg a; wire z; moorefsm fsm(.clk(clk),.rst(rst),.a(a),.z(z); initial begin clk = 0; rst = 1; #5 rst = 0; #3 rst = 1; #20 a = 1; #100 a = 1; #100 a = 0; #100 a = 0; #100 a = 1; #100 a = 0; #100 a = 0; #100 a = 1; #100 a = 0; #100 a = 0; #100 a = 0; #100 a = 0; #100 a = 1; #100 a = 0; #100 a = 0

5、; #100 a = 1; #100 a = 0; #100 a = 1; #100 a = 0; end always #50 clk = clk;endmodule Mealy型verilog源代码:FSM实现10010串的检测Mealy状态转移图module mealyfsm(clk,rst,a,z); input clk; input rst; input a; output z; reg z; reg 3:0 temp_z; reg 3:0 currentstate,nextstate; parameter S0 = 4b0000; parameter S1 = 4b0001; pa

6、rameter S2 = 4b0010; parameter S3 = 4b0011; parameter S4 = 4b0100;always(posedge clk or negedge rst) if(!rst) currentstate = S0; else currentstate = nextstate;always(currentstate or a or rst) if(!rst) nextstate = S0; else case(currentstate) S0: nextstate = (a = 1)? S1 : S0; S1: nextstate = (a = 0)?

7、S2 : S1; S2: nextstate = (a = 0)? S3 : S1; S3: nextstate = (a = 1)? S4 : S0; S4: nextstate = (a = 0)? S2 : S0; default:nextstate = S0; endcase always(rst or currentstate or a) if(!rst) temp_z = 0; else case(currentstate) S0: temp_z = 0; S1: temp_z = 0; S2: temp_z = 0; S3: temp_z = 0; S4: temp_z = (a

8、 = 0)? 1 : 0; default:temp_z = 0; endcase always(posedge clk or negedge rst) if(!rst) z = 0; else begin if(temp_z = 1)&(nextstate = S2) z = 1; else z = 0; endendmodule mealyfsm测试模块testbench module tb_fsm; reg clk,rst; reg a; wire z; mealyfsm fsm(.clk(clk),.rst(rst),.a(a),.z(z); initial begin clk = 0; rst = 1; #5 rst = 0; #3 rst = 1; #20 a = 1; #100 a = 1; #100 a = 0; #100 a = 0; #100 a = 1; #100 a = 0; #100 a = 0; #100 a = 1; #100 a = 0; #100 a = 0; #100 a = 0; #100 a = 0; #100 a = 1; #100 a = 0; #100 a = 0; #100 a = 1; #100 a = 0; #100 a = 1; #100 a = 0; end always #50 clk = clk;endmodule

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号