当前位置: 首页 > article >正文

基于Verilog的十字路口交通灯控制电路设计

基于Verilog的十字路口交通灯控制电路设计

  • 一、设计要求
  • 二、设计方案
  • 三、电路原理图
  • 四、代码实现
      • 1. Verilog代码:
      • 2. Testbench代码
  • 五、仿真结果


一、设计要求

设计并实现一个简单的十字路口交通灯控制电路。以4个红色指示灯、4个绿色指示灯和4个黄色指示灯模拟路口东西南北4个方向的红绿黄交通灯。控制这些灯,使它们安下列规律亮灭。
1、东西方向绿灯亮,南北方向红灯亮。东西方向通车,时间30秒;
2、东西方向黄灯闪烁,南北方向红灯亮,时间2秒。
3、东西方向红灯亮,南北方向绿灯亮。南北方向通车,时间30秒;
4、东西方向红灯亮,南北方向黄灯闪烁,时间2秒。
5、返回1,继续运行。


二、设计方案

设计一个有五个状态的状态机,其中一个为初始状态。如下图:
在这里插入图片描述
在状态S1~S4中,计数器在每个时钟上升沿加一。

在这里插入图片描述


三、电路原理图

在这里插入图片描述

  • 对上图局部放大处理:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

四、代码实现

1. Verilog代码:

module traffic_light(clk,rst_n,light_east,light_west,light_north,light_south);
input clk,rst_n;
output [2:0]light_east,light_north,light_south,light_west;
reg[2:0] light_east,light_north,light_south,light_west;
parameterS0=0,S1=1,S2=2,S3=3,S4=4;		
reg [2:0]state;
reg [5:0]cnt;
always @(posedge clk or negedge rst_n )begin  if(!rst_n) begin{light_east,light_north,light_south,light_west}=12'b0;cnt <= 0;state <= S0;endelsebegincase (state)S0: begin            {light_east,light_north,light_south,light_west}=12'b1;state  <= S1;endS1:                   if(cnt==30) beginstate  <= S2;cnt    <= 0;endelse  begin cnt    <= cnt + 1'b1;{light_east,light_west,light_north,light_south}=12'b100_100_001_001;state  <= S1;endS2:               if(cnt==2) beginstate  <= S3;cnt    <= 0;endelse  begin cnt    <= cnt + 1'b1;{light_east,light_west,light_north,light_south}=12'b010_010_001_001;state  <= S2;endS3:                 if(cnt==30) beginstate  <= S4;cnt    <= 0;endelse  begin cnt    <= cnt + 1'b1;{light_east,light_west,light_north,light_south}=12'b001_001_100_100;state  <= S3;end   S4:               if(cnt==2) beginstate  <= S1;cnt    <= 0;endelse  begin cnt   <= cnt + 1'b1;{light_east,light_west,light_north,light_south}=12'b001_001_010_010;state  <= S4;end   endcaseend
end
endmodule              

2. Testbench代码

`timescale 1 ps/ 1 ps
module traffic_light_vlg_tst();
// constants                                           
// general purpose registers
reg eachvec;
// test vector input registers
reg clk;
reg rst_n;
// wires                                               
wire [2:0]  light_east;
wire [2:0]  light_north;
wire [2:0]  light_south;
wire [2:0]  light_west;// assign statements (if any)                          
traffic_light i1 (
// port map - connection between master ports and signals/registers   .clk(clk),.light_east(light_east),.light_north(light_north),.light_south(light_south),.light_west(light_west),.rst_n(rst_n)
);
initial                                                
begin                                                  
clk=0;
rst_n=0;
#20 rst_n=1;
#1000 $stop;                                       
$display("Running testbench");                       
end                                                    
always                                                                   
begin                                                  
#1 clk=~clk;                                                                                                                        
// --> end                                             
end                                                    
endmodule

五、仿真结果

light_east, light_south, light_west, light_north分别为东、南、西、北的信号灯,高位至低位依次为绿灯、黄灯、红灯。
左边下面四个对应的变量名分别为light_east, light_north, light_south, light_west。
在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/2418863.html

相关文章:

  • 诺基亚n1平板电脑刷机教程_诺基亚N1 完整包线刷升级或救砖教程(不分台版;国行)...
  • UWB的定位算法(简单详细易懂)
  • java 文件锁 文件序列化 多进程并发处理 工具类
  • 为什么我的xp系统在有进程cidaemon.exe启动时,内存的使用量就一直上升?
  • J2ME开发教程(转)
  • Java:接口和抽象类,傻傻分不清楚?
  • Visual C++ 2011-4-8
  • 韶关IBM 联想服务器维修 X3650 M5
  • 灰鸽子使用教程(图文教程)
  • 10月28日 迅雷白金会员vip账号分享 91freevip 22:00更新
  • Fedora12下安装NCTUns6.0
  • 2015年全国谷歌卫星地图离线数据存储方案
  • ASP.NET 博客网站系统的设计与实现(论文+源码)_Nueve
  • Ultra RM Converter v1.2.7
  • 乐嘉的经典语录
  • 彻底禁用Autorun.inf, 杜绝U盘病毒
  • TD三国赤壁通关攻略与录像下载
  • TestDirector安装部署的前提
  • 解密QQ盗号诈骗APP:逆向溯源,探寻幕后黑色操作
  • java队徽_求实况足球10PC版(PES6)存档修改器 PESFan Editor 6所需的Java程序(必须是能够下载的链接,死链接免扰!...
  • 完美的Ubuntu 7.10,恐惧吧,微软!
  • DLL注入之消息钩子
  • ghttp数据结构
  • 分享几个免费的开源邮件服务器软件
  • 白帽子技术分析会话劫持实战讲解
  • 15名程序员界的高富帅+白富美
  • 软件测试项目实战案例分解,跟着我一步一步操作【人力资源管理系统】
  • Red Flag Linux 红旗Linux桌面6.0系列
  • 【VB超简单入门】三、开始编程
  • Android设置透明、半透明等效果