名称:简单交通灯状态机模块设计Verilog代码modelsim仿真
软件:modelsim
语言:Verilog
代码功能:
简单交通灯状态机模块
要求:设计一个简单交通灯状态机模块,包含一个计数器与一个状态转换模块。
当reset为1时,状态为S0,此时计数器为0
当reset为0时,状态变为S1(绿灯状态),每次当时钟clk上跳沿来临的时候,则计数器加1。
绿灯状态当计数器计到30(过了30个时钟周期)时,状态变为S2(黄灯状态),每次当时钟clk上跳沿来临的时候,则计数器加1。
在黄灯当状态计数器计到5(过了5个时钟周期)时,状态变为S3(红灯状态),每次当时钟clk上跳沿来临的时候,则计数器加1。
在红灯状态当状态计数器计到20(过了20个时钟周期)时,状态变为S1(绿灯状态)。
以此循环反复
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1.?思路
使用状态机进行设计,分为S0,S1,S2,S3共4个状态,S0为复位后的起始状态,S1表示绿灯,S2表示黄灯,S3表示红灯。在S1状态下进行计数,计数到30后跳转到S2状态。在S2状态下进行计数,计数到5后跳转到S3状态。在S3状态下进行计数,计数到20后跳转到S1状态。最终当状态为S1时控制绿灯亮,当状态为S2时控制黄灯亮,当状态为S3时控制红灯亮。
2.?状态图
3.?verilog文件
4.?testbench文件
5.?程序编译
6.?仿真图
部分代码展示:
//testbench module?testbench(); reg?clock;//时钟 reg?reset;//复位 wire?green;//绿灯 wire?yellow;//黄灯 wire?red;//红灯 //交通灯 traffic_light?i_traffic_light( .?clock(clock),//时钟 .?reset(reset),//复位 .?green(green),//绿灯 .?yellow(yellow),//黄灯 .?red(red)//红灯 ); initial?begin reset=1;//复位 #20; reset=0; end
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1134