当前位置:文档之家› 基于FPGA的交通灯设计报告

基于FPGA的交通灯设计报告

合肥学院综合课程设计报告题目:基于FPGA的交通灯设计专业:电子信息工程班级:09电子(2)班姓名:周峰导师:成绩:2012年12月11日基于FPGA的交通灯设计一:题目要求1:主干道绿灯时,支干道红灯亮,反之亦然,两者交替允许通行。

主干道每次放行40秒,支干道每次放行30秒。

每次路灯亮,前10秒为左转灯亮,后5秒为黄灯亮。

余下为直行灯亮、2:能实现正常的倒计时显示功能。

3:能实现总体清零功能;计数器由初始状态开始计数,对应状态的指示灯亮。

二:题目分析1:在十字路口东西方向和南北方向各设一组左转灯、;显示的顺序为:左转灯绿灯黄灯红灯。

2:设计一个倒计时显示器。

倒计时只显示总体时间。

主干道左转灯、红灯、绿灯和黄灯亮的时间分别是10秒、30秒、25秒、5秒。

支干道左转灯、红灯、绿灯和黄灯亮的时间分别是10秒、40秒、15秒、5秒状态表如表3-1所示:3三:选择方案1:方案一在VHDL设计描述中,采用自顶向下的设计思路,该思路在自顶向下的VHDL 设计描述中,通常把整个设计的系统划分为几个模块,然后采用结构描述方式对整个系统进行描述。

根据实验设计的结构功能,来确定使用哪些模块以及这些模块之间的关系。

通过上面的分析,不难得知可以把交通灯控制系统划分为3个模块:时钟模块、控制模块、分频模块。

2:方案二不采用方案一的分模块设计,直接用进程写程序。

该程序由7个进程组成,进程P1将CLK信号分频后产生1秒信号,P2形成0-49的计数器,进程P3、P4用来控制的信号灯亮灭的,其中P5、P6产生数码管显示的倒数的十进制形式。

进程P7实现状态转换和产生状态转换的控制信号,进而控制数码管显示。

由于方案一中使用进程会使程序变得很复杂,不易理解,所以我采用了方案二。

四:方案二ASM图设计开关控制部分ASM图ASM图说明:i、j、k、分别代表开关状态;1表示开关闭合,为高电平;0表示开关断开为低电平。

当开关处于不同的状态时,分别给变量G不同的值,用来实现控制通行时间。

五:模块设计模块图说明:Clk:1HZ时钟信号Urgency:复位信号,高电平有效Led[7..0]:分别表示主干道和支干道的左拐黄红绿灯E_W[7..0]:表示主干道的倒计时显示时间S_N[7..0]: 表示支干道的倒计时显示时间六:模块仿真模块仿真图模块仿真说明:Clk:1HZ时钟信号Urgency:复位信号,高电平有效Led[7..0]:分别表示主干道和支干道的左拐黄红绿灯E_W[7..0]:表示主干道的倒计时显示时间S_N[7..0]: 表示支干道的倒计时显示时间七:硬件测试及说明将程序编写好并仿真完成后,选择需要下载的芯片型号并分配引脚,分配好后再次进行编译,之后下载到硬件中,有如下现象:实物图如上图:从左起:第一和第二个数码管表示主干道的倒计时时间。

第三和第四个数码管表示支干道的倒计时时间。

八个二极管分别表示主干道的左拐、红灯、黄灯、绿灯和支干道的左拐、红灯、黄灯、绿灯。

具体运行状态说明:倒计时显示主干道和支干道的倒计时时间。

主干道左转灯、红灯、绿灯和黄灯亮的时间分别是10秒、30秒、25秒、5秒。

支干道左转灯、红灯、绿灯和黄灯亮的时间分别是10秒、40秒、15秒、5秒状态表如表支干道5秒倒计时结束后,又继续返回到第一条循环进行。

验证了设计完成了预定功能。

八:结论在本设计中出现的问题有很多,比如程序的组合,一开始我只是简单的将编好的控制模块,分频模块组合在一起,进行编译的时候并没有报错,而仿真结果也是看似正确,因为只有主程序得到编译。

最后一步是硬件的仿真,程序下载之后,数码管不亮,二极管也不亮,我检查程序,也没有错误,接入引脚也是正确的(虽然之前有几次是因为引脚接错位和芯片的错误使用,以及功能仿真与时序仿真的不同),启动之后就是不亮,经过反复检查,复位键和保持键有些失灵,按下几次之后即恢复正常工作,和之前期望的完全相同。

本设计中出现的错误以及查找和改正错误的过程是最大的收获,这不仅是对我知识的考察,也是一种实际应用能力的证明,经过两天不间断的检查和纠正,程序才算初步成功可编译,然而对已仿真的结果常常又不能尽人意,还要时不时的修改程序已达到期望的目标,最后下载硬件的时候更是麻烦,本来仿真是完美的,可就是硬件实现出问题,这足足花了一下午的时间检查错误,程序基本没错,就是硬件失灵,按了好几次复位与保持才使程序正确运行,这是对硬件了解太少所导致的后果,以后学习检查硬件也是我学习的重点!至此,本设计圆满成功!九:参考文献[1] 潘松,黄继业.EDA技术使用教程. 北京:科学出版社,2006[2] 黄任.VHDL入门.解惑.经典实例.经验总结.北京:北京航空航天大学出版社[3] 徐志军,徐光辉.CPLD/FPGA的开发与应用.北京:电子工业出版社,2002[4] 李洪伟,袁斯华基于quartus 2的FPGA/CPLD的设计电子工业出版[5]VHDL数字电路设计教程乔庐峰王志功等译电子工业出版[6]EDA技术实验讲义杭州康芯电子有限公司附录:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY traffic ISPORT (clk,urgency:IN STD_LOGIC;led:BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0);E_W,S_N:BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0));END traffic;ARCHITECTURE rtl OF traffic ISBEGINPROCESS(clk)BEGINIF urgency ='0' THEN --清零,东西南北红灯亮;led<="10000001";E_W<="00000000";S_N<="00000000";ELSIF clk'event AND clk='1' THENIF E_W="00000000" AND S_N="00000000" THEN -- 10,40E_W<="00010000"; -- 主干道左拐灯亮、支干道红灯亮S_N<="01000000";led<="10000100";ELSIF E_W="00000000" AND S_N="00110000" THEN --00,30E_W<="00100100";S_N<="00110000";led<="00010100";ELSIF E_W="00000000" AND S_N="00000101" THEN --00,05,E_W<="00000101";S_N<="00000101";led<="00100100";ELSIF E_W="00000001" AND S_N="00000001" THEN --00,00E_W<="00110000";S_N<="00010000";led<="01001000";ELSIF E_W="00100000" AND S_N="00000000" THEN --20,00E_W<="00100000";S_N<="00010101";led<="01000001";ELSIF E_W="00000100" AND S_N="00000000" THEN --05,00E_W<="00000101";S_N<="00000101";led<="10000010";ELSIF E_W="00000100" AND S_N="00000000" THEN --04,00E_W<="00000101";S_N<="00000101";led<="10000010";--ELSIF E_W<="00000001" AND S_N="00000001" THEN--led<="01000010";ELSIF E_W(3 DOWNTO 0)=0 THEN -- 防止时间跑偏E_W<=E_W-7;--S_N<=S_N-7;ELSIF S_N(3 DOWNTO 0)=0 THEN--E_W<=E_W-7;S_N<=S_N-7;ELSEE_W<=E_W-1; --秒表倒计时S_N<=S_N-1;END IF;END IF;END PROCESS;END rtl;。

相关主题