资源描述:
《verilog课程设计—交通灯》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、成绩评卷人姓名学号课程论文论文题目基于DE2的交通灯设计完成时间课程名称Verilog语言设计任课老师专业年级101.交通信号控制器设计要求与思路1.1设计背景FPGA是一种用户根据各自需要而自行构造逻辑功能的数字集成电路,其种类很多,内部结构也不同,但共同的特点是体积小、使用方便。本文介绍了用VerilogHDL语言设计交通灯控制器的方法,并在QuartusII系统对FPGA芯片进行编译下载,由于生成的是集成化的数字电路,没有传统设计中的接线问题,所以故障率低、可靠性高,而且体积非常小。本文通过EDA设计,利用Veri
2、logHDL语言模拟仿真交通灯控制电路。1.2设计要求根据交通灯控制器要实现的功能,考虑用两个并行执行的always语句来分别控制A方向和B方向的3盏灯。这两个always语句使用同一个时钟信号,以进行同步,也就是说,两个进程的敏感信号是同一个。每个always语句控制一个方向的3种灯按如下顺序点亮,并往复循环:绿灯----黄灯----红灯,每种灯亮的时间采用一个减法计数器进行计数,计数器用同步预置数法设计,这样只需改变预置数据,就能改变计数器的模,因此每个方向只要一个计数器进行预置数就可以。为便于显示灯亮的时间,计数器
3、的输出均采用BCD码,显示由4个数码管来完成,A方向和B方向各用两个数码管。设定A方向红灯、黄灯、绿灯亮的时间分别为:35s、5s、35s,B方向的红灯、黄灯、绿灯亮的时间分别为:35s、5s、35s。假如要改变这些时间,只需要改变计数器的预置数即可。1.3设计思路两个方向各种灯亮的时间能够进行设置和修改,此外,假设B方向是主干道,车流量大,因此B方向通行的时间应该比A方向长。交通灯控制器的状态转换表见下表。表中,1表示灯亮,0表示灯不亮。A方向和B方向的红黄绿分别用R1、Y1、G1、R2、Y2、G2来表示。10交通灯控
4、制器状态转换表从状态表中可以看出,每个方向3盏灯依次按如下顺序点亮,并不断循环:绿灯----黄灯----红灯,并且每个方向红灯亮的时间应该与另一个方向绿灯、黄灯亮的时间相等。黄灯所起的作用是用来在绿灯后进行缓冲,以提醒行人该方向马上要禁行了。在使能控制信号(EN)控制时系统工作,并且要求有两个控制输入信号:即复位信号(Reset)和备用模式设置信号(Standby),在复位信号控制时,两个方向均为红灯,在备用模式设置信号控制时,两个方向均为黄灯。1.4系统设计框图ALARAYAG系统采用的时钟频率为10KHZ,经分频为1
5、HZ后送入控制计时电路,同时送入控制计时电路的还有控制信号M2M1M0以及复位信号RST,控制交通灯的运行状态。经处理后输出LED灯以及数码管显示电路的控制信号,从而完成整个电路的控制与实现。A组信号灯控制计时电路分频clk1时钟CLK10K分频CLK1复位RSTM2M1M0BLBRBYBGB组信号灯复位RST数码管显示电路复位RST时钟CLK10K10图1系统设计示意图2.交通信号控制器具体模块设计2.1时钟分频模块设计系统的时钟输入为10KHZ的脉冲,而系统时钟计时模块需要1HZ的脉冲。分频模块主要为系统提供所需的时
6、钟计时脉冲。该模块将10KHZ的脉冲信号进行分频,产生1S的方波(占空比为50%),作为系统时钟计时信号。计时模块用来设定路口计时器的初值,并为扫描显示译码模块提供倒计时时间。表1I/O管脚描述名称方向位宽功能Clk10Kinput1系统时钟(10KHZ)RSTinput1复位信号(高电平有效)Clk1output1分频后时钟信号(1HZ)VerilogHDL源代码如下:modulefenpin(clk10k,rst,clk1);//将10K的频率分频为1inputclk10k,rst;outputclk1;reg[7:
7、0]j;regclk1;always@(posedgeclk10korposedgerst)if(rst)beginclk1<=0;j<=0;endelseif(j==9999)beginj<=0;clk1<=~clk1;endelsej<=j+1;Endmodule2.2控制模块设计VerilogHDL源代码如下:modulecontrol(EN_in,SW1,RST,Red1,Red2,Yellow1,Yellow2,Green1,Green2);outputRed1;outputRed2;10outputYello
8、w1;outputYellow2;outputGreen1;outputGreen2;input[1:0]EN_in;inputSW1;inputRST;regRed1,Red2,Yellow1,Yellow2,Green1,Green2,D_out;always@(EN_in,RST,SW1)beginif(SW1