EDA技术与VHDL语言设计.docVIP

  • 14
  • 0
  • 约4.47千字
  • 约 5页
  • 2017-01-30 发布于重庆
  • 举报
EDA技术与VHDL语言设计

成 绩 指导教师: 《EDA技术与VHDL语言设计》课程设计 题 目: 交通灯控制器 姓 名: ***** 院 系: 电子信息工程系 专 业: 电子信息工程 班 级: 电信112班 学 号: ****** 指导教师: ****** 2013年月 1.1设计要求 设计一个十字路口交通控制器,器示意图如图1.1所示,A方向和B方向歌设红(R)、黄(Y)、 绿(G)、和左拐(L)四盏灯,四种灯按合理的顺序亮灭,并能将灯亮的时间以倒计时的形式显示出来。A方向红、绿、黄、左拐灯亮的时间分别为65s、40s、5s、和15s,B方向红、绿、黄、左拐灯亮的时间分别为55s、30s、5s、和15s。 1.2功能要求 两个方向各种灯亮的时间能够进行设置和修改,此外假设A方向是主干路,车流大,因此在A方向通行的时间应比B方向长。交通灯控制器的状态转换如表1.2 A方向 B方向 绿(G1) 黄(Y1) 左拐(L1) 红(R1) 绿(G1 黄(Y1) 左拐(L1) 红(R1) 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 表1.2 交通灯控制器的状态 1.3设计思路和原理 根据交通灯控制器要求实现的功能,考虑用两个并行执行的always模块来分别控制A和B两个方向的四盏灯,这两个always模块使用同一个时钟信号,以进行同步。也就是说,两个always模块的敏感信号是同一个,每个模块控制一个方向的四种灯按如下顺序点亮,并往复循环:绿灯→黄灯→左拐灯→黄灯→红灯。 每种灯亮的时间采用一个减法计数器进行计数,计数器用同步预置法设计,这样只需改变计数器的模,因此每个方向只要一个计数器进行计时即可。为便于显示灯亮的时间,计数器的输出均采用BCD码,显示由四个数码管来完成,A方向和B方向各用两个数码管。 Verilog HDL程序设计 根据整体设计要求,编写各个功能部分Verilog HDL程序,设置各输入输出变量说明如下: LAMPA:控制A方向四盏灯的亮灭,其中,LAMPA0~LAMPA3,分别控制A方向的左拐灯、绿灯、黄灯和红灯; LAMPB:控制B方向四盏灯的亮灭,其中,LAMPB0~LAMPB3,分别控制B方向的左拐灯、绿灯、黄灯和红灯; ACOUNT:用于A方向灯的时间显示,8位,可驱动两个数码管; BCOUNT:用于B方向灯的时间显示,8位,可驱动两个数码管。 程序清单如下: module traffic(CLK,EN,LAMPA,LAMPB,ACOUNT,BCOUNT); input CLK,EN; //输入同步时钟和使能信号 output[3:0] LAMPA,LAMPB; output[7:0] ACOUNT,BCOUNT; reg tempa,tempb; reg[2:0] counta,countb; reg[3:0] LAMPA,LAMPB; reg[7:0] ared,ayellow,agreen,aleft,bred,byellow,bgreen,bleft; reg[7:0] numa,numb; always @(EN) if(!EN) begin //设置各种灯的计数器的预置数 ared =8d30; ayellow =8d5; //设置各种灯的计数器的预置数A方向红 agreen =8d45; aleft =8d15; bred =8d50; byellow =8d5; //设置各种灯的计数器的预置数B方向红 bleft =8d10; bgreen =8d30; end assign ACOUNT=numa; assign BCOUNT=numb; always @(posedge CLK) //

文档评论(0)

1亿VIP精品文档

相关文档