【设计要求】
用VHDL语言设计一个由一条主干道和一条支干道的汇合点形成的十字交叉路口的交通灯控制器,要求如下:
(1)主、支干道各设一个红、绿、黄指示灯,LED显示
(2)主干道处于常允许通行状态,支干道有车来的时候才允许通行;主干道允许通行时亮绿灯,支干道红灯。支干道允许通行时亮绿灯,主干道亮红灯;
(3)主、支干道均有车时,两者交替通行,主干道每次放行45秒,支干道每次放行25秒,在每次由亮绿灯变成亮红灯时,都有5秒的黄灯过渡。
【系统方案设计】
根据交通信号灯控制的要求,我们可用状态机来实现交通灯控制器。控制器由定时器和控制器两部分组成,其原理方框图如图-1所示。main、branch分别为主干道和支干道来车信号检测,main_red、main_yellow、main_green为主干道红、黄、绿灯驱动信号输出,branch_red、branch_yellow、branch_green为支干道红、黄、绿灯驱动信号输出。
图-1 交通信号灯控制原理方框图
图-2 交通信号灯控制系统整体电路图
【源代码实现】
1.分频器模块(图-3):
采用verilog语言,实现功能为将50MHz系统时钟分频为1KHz。
其实现代码如下:
2.控制器模块(图-4):
采用VHDL语言,由定时器和控制器两部分组成,定时器用于计时LED显示。
其实现代码如下:
3.LED显示模块(图-5):
采用VHDL语言,其实现代码如下: