当前位置:   article > 正文

交通灯_在vivado 中,用iic 协议写交通灯

在vivado 中,用iic 协议写交通灯

公众号:FPGA技术小开发

一、主要仪器设备及软

硬件:FPGA核心板(xc7a35tftg256_1)

软件:vivado2018.3

二、实验任务

十字路口的交通灯管理系统。在主干道和小道的十字交叉路口,设置交通灯管理系统,管理车辆运行。小道路口设有传感器C(此处以按键key代替),当小道有车要求通行时,传感器输出key=1,否则key=0。主干道通车时绿灯亮,小道不通车时红灯亮,主干道通车至少10S。超过10S时,若小道有车要求通行,即C=1,主干道绿灯灭黄灯亮3S,之后改为主干道红灯亮,小道绿灯亮。小道通车最长时间被限定为10S,在10S内,只要小道无车,即C=0,小道交通灯由绿灯亮变为黄灯亮持续3S后变为红灯亮,主干道由红灯亮变为绿灯亮。

三、基本组成

(1)管脚定义
module jiaotongdeng(
input clk,
input clr,
input key0,
output reg clk_1hz,
output reg [5:0] LED,
output reg [3:0] data,
output reg [1:0] wei
);
(2)中间变量定义
//使用每态一个触发器定义五个状态
parameter s0=5’b00001;
parameter s1=5’b00010;
parameter s2=5’b00100;
parameter s3=5’b01000;
parameter s4=5’b10000;

reg [4:0] now_state; //现态
reg [4:0] next_state; //下一个状态

reg [9:0] count; //分频计数

reg flag1; //当flag1=1进入s2
reg flag2; //当flag2=1进入s3
reg flag3; //当flag3=1进入s4
reg flag4; //当flag4=1进入s0

parameter flag11=1’b0;
parameter flag22=1’b0;
parameter flag33=1’b0;
parameter flag44=1’b0;

reg [5:0] count_g1; //主干道绿灯亮的时间计数
reg [1:0] count_y1; //黄灯亮的时间的计数
reg [5:0] count_g2; //次干道绿灯亮的时间计数
reg [1:0] count_y2; //黄灯亮的时间的计数

//显示数据
//主干道
reg [3:0] data_g1_ge; //绿灯计数的个位
reg [3:0] data_g1_shi; //十位数字
reg [3:0] data_y1_ge; //黄灯计数的个位
reg [3:0] data_y1_shi; //十位数字
//次干道
reg [3:0] data_g2_ge; //绿灯计数的个位
reg [3:0] data_g2_shi; //十位数字
reg [3:0] data_y2_ge; //黄灯计数的个位
reg [3:0] data_y2_shi; //十位数字

reg cnt; //控制位选信号

四、设计过程

1、时钟分频

always @ (posedge clk or negedge clr )

begin

if(!clr)

begin

    count<=1'b0;

    clk_1hz<=1'b0;

end
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

else if(count==10’d1000)

    begin

        count<=1'b0;

        clk_1hz<=~clk_1hz;

    end

    else

        count<=count+
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/702152
推荐阅读
相关标签
  

闽ICP备14008679号