名称:简单交通灯状态机模块设计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
1199