找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7309|回复: 6
打印 上一主题 下一主题
收起左侧

基于verilog语言的交通信号灯设计分享

[复制链接]
跳转到指定楼层
楼主
一、对一个南北向和东西向十字路口车辆信号灯和人行道信号灯的显示进行控制,车辆信号灯为红黄绿三色,显示顺序为绿黄红循环显示,人行道信号灯为红绿两色。南北向为主干道,车辆信号灯显示时间依次为绿灯90秒,黄灯5秒,红灯40秒,交通灯点亮的同时2LED灯倒计数显示该等剩余秒数,当车辆信号灯点亮绿灯时同时点亮人行道信号灯的绿灯,点亮时间为80秒,接着绿灯闪烁10秒,闪烁频率1Hz,然后点亮红灯45秒,如此依次进行。东西向车辆信号灯显示时间依次为绿灯35秒,黄灯5秒,红灯95秒,交通灯点亮的同时2LED灯倒计数显示该等剩余秒数,当车辆信号灯点亮绿灯时同时点亮人行道信号灯的绿灯,点亮时间为25秒,接着绿灯闪烁10秒,闪烁频率1Hz,然后点亮红灯100秒,如此依次进行。
二、实验环境:
本次实验采用Cyclone IV EP4CE115F29芯片,系统时钟为50MHz实验环境为:1PC机一台。2AlteraQuartus软件一套。3、主芯片为Altera公司的DE2-115EDA开发板一套。



verilog源码:
  1. module traffic_led(clkin,con11,con12,con21,con22,t11,t12,t21,t22);
  2. input clkin;
  3. output con11,con12,con21,con22,t11,t12,t21,t22;
  4. reg [1:0] con11,con12,con21,con22;
  5. reg [3:0] t11,t12,t21,t22;
  6. reg [7:0] tcont,tout1,tout2;                             //剩余时间: t11:高位南北,t12:低位南北,t21:高位东西,t22:低位东西//                                                                                                        //con11:南北车道,con12:南北人行,con21:东西车道,con22:东西人行//
  7. always@(posedge clkin)
  8.         begin
  9.                 tcont<=tcont+1;
  10.                 if(tcont<=80)
  11.                         begin
  12.                                 con11<=0;
  13.                                 con12<=0;
  14.                                 con21<=2;
  15.                                 con22<=2;
  16.                                 t11<=tout1/10;
  17.                                 t12<=tout1-(tout1/10)*10;
  18.                                 t21<=tout2/10;
  19.                                 t22<=tout2-(tout2/10)*10;
  20.                         end
  21.                 else if(tcont<=90)
  22.                         begin
  23.                                 con11<=0;
  24.                                 con12<=1;
  25.                                 con21<=2;
  26.                                 con22<=2;
  27.                                 t11<=tout1/10;
  28.                                 t12<=tout1-(tout1/10)*10;
  29.                                 t21<=tout2/10;
  30.                                 t22<=tout2-(tout2/10)*10;
  31.                         end
  32.                 else if(tcont<=95)
  33.                         begin
  34.                                 con11<=1;
  35.                                 con12<=2;
  36.                                 con21<=2;
  37.                                 con22<=2;
  38.                                 t11<=tout1/10;
  39.                                 t12<=tout1-(tout1/10)*10;
  40.                                 t21<=tout2/10;
  41.                                 t22<=tout2-(tout2/10)*10;
  42.                         end
  43.                 else if(tcont<=120)
  44.                         begin
  45.                                 con11<=2;
  46.                                 con12<=2;
  47.                                 con21<=0;
  48.                                 con22<=0;
  49.                                 t11<=tout1/10;
  50.                                 t12<=tout1-(tout1/10)*10;
  51.                                 t21<=tout2/10;
  52.                                 t22<=tout2-(tout2/10)*10;
  53.                         end
  54.                 else if(tcont<=130)
  55.                         begin
  56.                                 con11<=2;
  57.                                 con12<=2;
  58.                                 con21<=0;
  59.                                 con22<=1;
  60.                                 t11<=tout1/10;
  61.                                 t12<=tout1-(tout1/10)*10;
  62.                                 t21<=tout2/10;
  63.                                 t22<=tout2-(tout2/10)*10;
  64.                         end
  65.                 else if(tcont<=135)
  66.                         begin
  67.                                 con11<=2;
  68.                                 con12<=2;
  69.                                 con21<=1;
  70.                                 con22<=2;
  71.                                 t11<=tout1/10;
  72.                                 t12<=tout1-(tout1/10)*10;
  73.                                 t21<=tout2/10;
  74.                                 t22<=tout2-(tout2/10)*10;
  75.                         end
  76.                 else
  77.                         tcont<=0;
  78.         end
  79.        
  80. always@(posedge clkin)
  81.         begin
  82.                 if(tcont<=90)
  83.                         begin
  84.                                 tout1<=90-tcont;
  85.                                 tout2<=95-tcont;
  86.                         end
  87.                 else if(tcont<=95)
  88.                         begin
  89.                                 tout1<=95-tcont;
  90.                                 tout2<=95-tcont;
  91.                         end
  92.                 else if(tcont<=130)
  93.                         begin
  94.                            tout1<=135-tcont;
  95.                                 tout2<=130-tcont;
  96.                         end
  97.                 else if(tcont<=135)
  98.                         begin
  99.                                 tout1<=135-tcont;
  100.                                 tout2<=135-tcont;
  101.                         end
  102.         end
  103.        
  104. endmodule
复制代码


全部资料51hei下载地址:
traffic_led.zip (3.68 MB, 下载次数: 108)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:582212 发表于 2019-7-16 14:53 | 只看该作者
代码用不了啊
回复

使用道具 举报

板凳
ID:377043 发表于 2019-8-1 22:45 | 只看该作者

一共有3个模块组成,分频,显示,交通时序,朋友是不是没用全?
回复

使用道具 举报

地板
ID:619739 发表于 2019-12-8 00:11 来自手机 | 只看该作者
862422207 发表于 2019-7-16 14:53
代码用不了啊

不能运行吗
回复

使用道具 举报

5#
ID:574789 发表于 2020-4-1 21:12 | 只看该作者
兄弟,能不能进行时序仿真
回复

使用道具 举报

6#
ID:574789 发表于 2020-4-1 21:17 | 只看该作者
这个是没有写testbench吗
回复

使用道具 举报

7#
ID:832470 发表于 2020-12-20 20:48 | 只看该作者
作者看到能会复一下吗

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表