欢迎来到天天文库
浏览记录
ID:38706762
大小:615.50 KB
页数:20页
时间:2019-06-18
《交通灯设计(EDA课程设计)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、EDA课程设计报告题目:基于FPGA的十字路口交通灯控制器专业:电子信息工程班级:一班姓名:学号:报告日期:2014/1/520目录EDA课程设计报告1目录2系统设计要求21.系统设计方案3系统设计思路3系统设计方案分析42.交通控制灯各模块电路设计52.1控制模块controller52.2时钟分频模块frequency10Hz和frequency92.3分位电路模块fenwei122.4带闪烁功能的七段数码驱动显示模块display133.交通控制灯顶层电路设计153.1原理说明153.2端口设计说明16
2、3.3Quartusii仿真与结果分析174.仿真结果分析195.心得体会1920系统设计要求(1)在十字路口的两个方向上各设一组红、绿、黄灯,显示顺序为其中一个方向是(东西方向)是绿灯、黄灯、红灯;另一方向(南北方向)是红灯、绿灯、黄灯。(2)设置一组数码管,以倒计时的方式显示允许通行或禁止通行的时间。其中绿灯、黄灯、红灯的持续时间分别是20s、5s和25s。(3)当各条路上任意一条上出现特殊情况时,如当消防车、救护车或其他需要优先放行的车辆通过时,各方向上均是红灯,倒计时停止,且显示数字在闪烁。当特殊运行
3、状态结束时,控制器恢复原来状态,继续正常运行。1.系统设计方案系统设计思路(1)本系统设计中均采用混合设计的方法,将整体方案划分成若干个模块进行设计。采用VHDL硬件描述语言和原理图描述相结合的方式,对多种应用电路进行设计,其中底层电路(即模块电路)采用VHDL硬件描述语言方式实现,顶层电路采用原理图描述方式实现。(2)系统设计流程提出系统设计要求需求分析20模块化方案设计底层电路设计----VHDL模块电路设计顶层电路设计----原理图描述+各模块连接FPGA整体方案设计实现FPGA整体方案编译仿真时序仿真
4、功能仿真硬件搭接和运行FPGA整体方案设计完成图1系统设计流程系统设计方案分析根据任务要求,计数器的值和交通灯亮灭关系如图1所示。显然,此任务设计的核心是一个技术范围为0~50s的计数器和一个根据计数值作出规定反应的控制器。假设现有晶振为20MHz,因此还需要分频电路来得到10Hz和1Hz的时钟,最后要驱动七段数码管,还需要一个译码电路。红灯亮绿灯亮黄灯亮20计数值504525200红灯亮绿灯亮黄灯亮图2计数值和交通灯亮灭关系根据上面的分析,交通控制灯系统框图如图3所示;HoldReset计数器红、黄、绿发光
5、二极管控制器倒计时数字及“闪烁控制信号”Clk1Hz分频电路20MHz分位译码电路Clk10HzCPLD/FPGA七段数码管七段数码管驱动电路图3交通控制等系统框图2.交通控制灯各模块电路设计2.1控制模块controller(1)控制模块的作用是根据计数器的数值控制发光二极管的亮、灭,以及输出倒计时数值给七段数码管的分位译码电路。计数范围为0~50。计数到50后,下一个时钟沿回复到0,开始下一计数。此外当检测到特殊情况(hold=”1”20)发生时,计数器暂停计数,无条件点亮红色的发光二极管。而系统复位信号
6、reset则使计数器异步清零。控制模块controller外部端口如图4所示。图4控制模块controller外部端口(2)控制模块的VHDL程序程序说明:控制模块描述了功能键hold和reset的功能;同时对频率为1Hz的时钟进行计数,通过计数值,对各个时间段内交通灯信号进行描述;此外,模块还给出了下一步用于倒计时的信号numa[4..0]和numb[4..0]。libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;ent
7、itycontrollerisport(clock:instd_logic;reset:instd_logic;hold:instd_logic;flash:outstd_logic;numa,numb:outintegerrange0to25;reda,greena,yellowa:outstd_logic;redb,greenb,yellowb:outstd_logic);end;architecturecontrolofcontrollerissignalcountnum:integerrange0to
8、50;beginprocess(clock)beginifreset='1'thencountnum<=0;elsifrising_edge(clock)thenifhold='1'thenflash<='1';else20flash<='0';ifcountnum=47thencountnum<=0;elsecountnum<=countnum+1;endif;endif;endif;endpro
此文档下载收益归作者所有