EDA课程设计 交通灯_设计报告.doc_第1页
EDA课程设计 交通灯_设计报告.doc_第2页
EDA课程设计 交通灯_设计报告.doc_第3页
EDA课程设计 交通灯_设计报告.doc_第4页
EDA课程设计 交通灯_设计报告.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

常熟理工学院课程设计报告 课程设计报告课程 EDA课程设计 题目 十字路口交通灯设计 系 别 物理与电子工程学院 年 级 08级 专 业 电子科学与技术 班 级 三 学 号 04 06 10 11 学生姓名 张崇光 张浩 赵峰 章维 指导教师 张惠国 职 称 讲师 设计时间 2011.6.18-7.8 目录前言2第一章 题 目31.1题目名称31.2题目内容及要求31.3 题目设计意义3第二章 分析与设计42.1交通灯硬件电路控制原理42.2交通灯程序设计构想42.3程序设计论证42.4 系统设计框图5第三章 VHDL程序设计63.1系统输入输出端口设计63.2系统整体设计63.2.1系统控制状态机63.2.2 VHDL状态机代码设计73.3 红、黄、绿灯控制设计93.4 数码管显示模块设计11第四章 系统仿真及功能描述134.1 Quartus时序仿真134.2 系统功能描述134.2.1工作模式选择134.2.2 正常工作模式下的运行状况134.2.3 其它工作模式介绍14第五章 总结与体会15参考文献16附录17前言现代电子产品正在以前所未有的革新速度,向着功能多样化、体积最小化、功耗最低化的方向迅速发展。它与传统电子产品在设计上的显著区别之一就是大量使用大规模可编程逻辑器件,以提高产品性能、缩写产品体积、降低产品消耗;区别之二就是广泛运用现代计算机技术,以提高电子设计自动化程度,缩短开发周期,提高产品竞争力。EDA(Electronic Design Automation,电子设计自动化)技术正是为了适应现代电子产品设计的要求,吸收多学科最新成果而形成的一门新技术。EDA技术伴随着计算机、集成电路、电子系统设计的发展,经历了计算机辅助设计(Computer Assist Design,简称CAD)、计算机辅助工程设计(Computer Assist Engineering Design,简称CAE)和电子设计自动化(Electronic Design Automation,简称EDA)三个发展阶段。利用EDA技术进行电子系统的设计,具有以下几个特点:用软件的方式设计硬件;用软件方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的;设计过程中可用有关软件进行各种仿真;系统可现场编程,在线升级;整个系统可集成在一个芯片上,体积小、功耗低、可靠性高。因此,EDA技术是现代电子设计的发展趋势。EDA技术是一门涉及多学科的综合性技术,内容广泛,所谓EDA技术,就是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件方式设计的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直至对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片的一门新技术。可编程逻辑器件(简称PLD)是一种由用户编程以实现某种逻辑功能的新型逻辑器件。FPGA和CPLD分别是现场可编程门阵列和复杂可编程逻辑器件的简称。现在,FPGA和CPLD器件的应用已十分广泛,它们将随着EDA技术的发展而成为电子设计领域的重要角色。国际上生产FPGA/CPLD的主流公司,并且在国内占有市场份额较大的主要是Xilinx,Altera,Lattice三家公司。FPGA在结构上主要分为三个部分,即可编程逻辑单元,可编程输入/输出单元和可编程连线三个部分。CPLD在结构上主要包括三个部分,即可编程逻辑宏单元,可编程输入/输出单元和可编程内部连线。高集成度、高速度和高可靠性是FPGA/CPLD最明显的特点,其时钟延时可小至ns级。结合其并行工作方式,在超高速应用领域和实时测控方面有着非常广阔的应用前景。在高可靠应用领域,如果设计得当,将不会存在类似于MCU的复位不可靠和PC机可能跑飞等问题。FPGA/CPLD的高可靠性还表现在几乎可将整个系统下载于同一芯片中,实现所谓片上系统,从而大大缩小了体积,易于管理和屏蔽。由于FPGA/CPLD的集成规模非常大,因此可利用先进的EDA工具进行电子系统设计和产品开发。由于开发工具的通用性、设计语言的标准化以及设计过程几乎与所用器件的硬件结构无关,因而设计开发成功的各类逻辑功能块软件有很好的兼容性和可移植性。它几乎可用于任何型号和规模的FPGA/CPLD中,从而使得产品设计效率大幅度提高,可以在很短时间内完成十分复杂的系统设计,这正是产品快速进入市场最宝贵的特征。第一章 题 目1.1题目名称十字路口交通灯设计1.2题目内容及要求针对现实生活中的十字路口交通灯,实现基于FPGA的控制设计,并实现以下基本功能:1.显示十字路口东西、南北两个方向的红、黄、绿灯的指示状态。2.用两组红、黄、绿三色灯作为两个方向的红、黄、绿灯。3.用两组数码管作为东西和南北方向的倒计时显示。1.3 题目设计意义 通过“十字路口交通灯设计”,可训练我们综合运用学过的数字电路的基本知识,独立设计比较复杂的数字电路的能力。使我们在设计中熟练掌握VHDL语言的编程,并熟练掌握相关编程、仿真软件的操作等。第二章 分析与设计2.1交通灯硬件电路控制原理一般我们生活中的十字路口在硬件电路设计上,采用“对面镜像”的方法设计。即一个通行道两边的指示灯及倒计时时间相同的。这是因为道路两边路口需要通行的人、车是相向而行的,这样的设计既降低了软件设计架构要求,在硬件上又容易实现且正确可靠。2.2交通灯程序设计构想初步构思设想,整个程序架构可以分为以下几个部分来进行设计:1.时钟分频模块,对输入的时钟进行需要的分频,使系统正确工作;2.数码管倒计时时间显示,分别显示主干道和支道通行的倒计时时间;3.红、绿、黄色交通灯的两灭控制设计;4.外部输入控制部分,即调模式、检修模式的控制等。2.3程序设计论证整个硬件电路以总线输入时钟做为同步信号进行工作,那么针对题目所要求的经过30秒红灯(绿灯)和5秒黄灯的定时时间间隔。我们必须通过对系统时钟进行分频得到一个较低频率的信号作为计时时间的基准信号。那么主干道和支道的计时时间主要以数码管的形式进行显示。每个通道设有两位数码管,共有四位数码管显示当前交通状态的倒计时时间。使用扫描驱动设计,即分时对位码使能操作,利用人眼睛的成像延时来达到“静态”显示的效果。在交通灯的每个状态的控制显示可以使用简单的“米里”型状态机实现。以系统当前状态和系统外部输入的控制信号决定系统的下一个状态。在程序代码设计上也可简单实现。2.4 系统设计框图生成系统工作的时钟信号东西、南北两个方向的红、黄、绿灯显示东西、南北两个方向的倒计时显示系统晶振输入工作模式选择系统运行第三章 VHDL程序设计3.1系统输入输出端口设计对设计课题的总体考虑,在该交通灯控制系统中所涉及的输入有:系统时钟信号CLK,系统复位RST、调试模式KEY_D、检修模式等按键输入。输出端口有:数码管显示段码信号DATAOUT,数码管位选信号LED_BIT以及各路口的红灯、绿灯、黄灯显示。具体定义如下:ENTITY traffic IS PORT ( clk : IN std_logic; -系统输入时钟 rst : IN std_logic; -复位按键输入 key_d : IN std_logic; -调试按键输入 key_m : IN std_logic; -主干道(东西)方向通行紧急按键 key_b : IN std_logic; -支道(南北)方向通行紧急按键 -数码管显示 dataout : OUT std_logic_vector(7 DOWNTO 0); -数码管段数据 led_bit : OUT std_logic_vector(3 DOWNTO 0); -数码管使能 -红绿黄灯显示 lightY_m : OUT std_logic_vector(1 DOWNTO 0); -黄灯_主干道(东西)方向 lightY_b : OUT std_logic_vector(1 DOWNTO 0); -支道 lightG_m : OUT std_logic_vector(1 DOWNTO 0); -绿灯_主干道方向 lightG_b : OUT std_logic_vector(1 DOWNTO 0); -支道 lightR_m : OUT std_logic_vector(1 DOWNTO 0); -红灯_主干道方向 lightR_b : OUT std_logic_vector(1 DOWNTO 0) ); -支道 END traffic;3.2系统整体设计3.2.1系统控制状态机在整体控制上,考虑到该系统具有有限个状态,且在各状态机进行转换。那么可以是用“有限状态机”(FSM)进行设计。1.系统状态可描述为:.当主干道绿灯通行时,显示倒计时(30S)并支道红灯亮;.当计时时间到后主干道黄灯亮(5S),支道依然红灯亮;.主干道红灯亮,支道绿灯亮(30S);.支道黄灯等待,主干道仍然保持红灯亮(5S).转状态2.系统状态图:主干道绿灯亮支道红灯亮(30S)主干道黄灯灯亮支道红灯亮(5S)主干道红灯亮支道绿灯亮(30S)主干道红灯亮支道黄灯亮(5S)按键输入3.2.2 VHDL状态机代码设计PROCESS(div_cnt(20),rst,key_m,key_b,key_d) BEGIN -判断是否为调试模式 IF (NOT key_d =1) THEN -调试按键按下,调试模式计时 time_s = 0001; -红灯10秒 time_y = 0010; -黄灯2秒 ELSE -正常模式运行 time_s = 0011; -红灯30秒 time_y = 0101; -黄灯5秒 END IF; -正常进程开始 IF (NOT rst = 1) THEN -复位亮红灯 state = red_m; second_m =0011; -三十秒倒计时初值 second_b =0011; first_m = 0000; first_b = 0000; ELSIF(NOT key_m = 1) THEN -主干道紧急通行 state = green_m; ELSIF(NOT key_b = 1) THEN -支道紧急通行 state -主干道红灯状态,支道绿灯 IF (first_m /= 0000 or first_b /=0000) THEN first_m = first_m - 0001; -计时秒位减1 first_b = first_b - 0001; ELSE IF (second_m /= 0000 or second_b /=0000) THEN second_m = second_m - 0001; -计时十位减1 second_b = second_b - 0001; first_m = 1001; -计时个位复位9 first_b = 1001; ELSE state = yellow_b; -红灯计时结束,准备绿灯 -first_b =0101; -支道黄灯5秒 first_b = time_y; -支道黄灯5秒 second_b =0000; first_m =0000; -主干道为0等待 second_m -主干道绿灯状态,支道红灯 IF (first_m /= 0000 or first_b /=0000) THEN first_m = first_m - 0001; first_b = first_b - 0001; ELSE IF (second_m /= 0000 or second_b /=0000) THEN first_m = 1001; first_b = 1001; second_m = second_m - 0001; second_b = second_b - 0001; ELSE state = yellow_m; -主干道绿灯计时结束,转为黄灯过渡 -first_m = 0101; -黄灯计时初值5秒 first_m = time_y; -黄灯计时初值5秒 second_m = 0000; first_b = 0000; second_b -支道黄灯状态 IF (first_b /= 0000 OR second_b /= 0000) THEN IF (second_b /= 0000) THEN -此步正常不执行 first_b = 1001; second_b = second_b - 0001; ELSE first_b = first_b - 0001; -支道黄灯计时减1 END IF; ELSE state = green_m; -转为主干道绿灯,支道红灯 -second_m = 0011; -复位红灯计时初值 second_m = time_s; -复位红灯计时初值 first_m = 0000; -second_b = 0011; second_b = time_s; first_b -主干道黄灯状态 IF (first_m /= 0000 OR second_m /= 0000) THEN IF (second_m /= 0000) THEN -此步正常不执行 first_m = 1001; second_m = second_m - 0001; ELSE first_m = first_m - 0001; -支道黄灯计时减1 END IF; ELSE state = red_m; -转为主干道红灯,支道绿灯 -second_m = 0011; -复位红灯计时初值 second_m = time_s; -复位红灯计时初值 first_m = 0000; -second_b = 0011; second_b = time_s; first_b first_m = 0000; second_m = 0000; first_b = 0000;second_b lightR_m=00;-主干道红灯亮 lightG_b=00;-支道绿灯亮 -支道等待黄灯 lightR_b=11;-关闭其它交通灯 lightG_m=11; lightY_m=11; lightY_b lightG_m=00;-主干道绿灯亮 lightR_b=00;-支道红灯亮 -主干道等待黄灯 lightG_b=11;-关闭其它交通灯 lightR_m=11; lightY_m=11; lightY_b lightY_m=00;-主干道黄灯亮 lightR_b=00;-支道红灯继续点亮 lightY_b=11;-关闭其它交通灯 lightR_m=11; lightG_m=11; lightG_b lightY_b=00;-支道黄灯亮 lightR_m=00;-主干道红灯继续点亮 lightY_m=11;-关闭其它交通灯 lightR_b=11; lightG_m=11; lightG_b lightR_m=00; lightR_b=00; lightG_m=11; lightG_b=11; lightY_m=11; lightY_b=11; END CASE; END PROCESS;3.4 数码管显示模块设计设计要求使用两组数码管作为南北、东西方向的倒计时显示。为了节省I/O端口,采用动态扫描方式实现数码管的显示。即等间隔的对每一个数码管进行扫描显示,获得“同时”显示的效果。在日常生活中可知,南北、东西方向的计时时间并不是相同的,例如当南北方向红灯亮,东西方向绿灯亮时,南北倒计时时间为35S,而东西方向绿灯倒计时为30S,之后东西方向进入黄灯过渡阶段,即5S的倒计时。综合以上设计要求,代码如下:PROCESS(div_cnt(15),rst)等时扫描 Begin if(rst=0)then en_bit =1110; elsif(div_cnt(15)event and div_cnt(15)=1)then en_count en_bit en_bit en_bit en_bit data4 data4 data4 data4 data4 dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout =11000000; -0 END CASE; END PROCESS;第四章 系统仿真及功能描述4.1 Quartus时序仿真 对所编写的代码进行时序仿真,Quartus时序仿真图如下:图4.1 Quartus时序仿真4.2 系统功能描述4.2.1工作模式选择系统工作模式可通过按键输入控制为正常工作模式,测试工作模式等,可在系统运行的任意时刻实现人文干预的模式转换。若出现意外情况,比如道路交通由交警现场指挥则可以通过手动控制交通灯模式,分别为主干道通行模式和支道通行模式。4.2.2 正常工作模式下的运行状况在系统正常工作模式下,实现以标准的30S红绿灯倒计时和5S的黄灯过渡。即当任一通道为红灯时,该通道倒计时时间总计为35S,另一通道则为绿灯,倒计时时间为30S,当30S的倒计时时间到后,绿灯熄灭,黄灯打开,数码管显示5S等待时间后,实现主干道和支道的红绿灯交替。4.2.3 其它工作模式介绍当系统工作于测试模式时,与正常工作模式相比,仅交通控制计时时间有所变化,用于维修人员测试。即由正常模式的30S减为10S,原来的5S减为2S,其它控制信息和正常工作模式相同。强制通行模式分为主干道通行和支道通行模式,即为南北方向通行和东西方向通行。次模式仅在某些特殊情况特殊场合中可能会使用,比如紧急状况下交警的现场指挥等。第五章 总结与体会EDA技术是目前较为热门的技术,这一次的EDA课程设计,无疑是对我们整个学期所学到的知识的掌握和运用能力的一个很好的锻炼和提高。在设计过程中,我们不仅熟悉了生活中常见的交通灯的控制原理,更重要的是通过该设计题目的综合设计过程,进一步对VHDL这种和我们以往学过的一些软件程序语言所不同的硬件描述语言有了更深刻的认识。在代码设计之初,对以前学过的C等程序语言较为熟悉的我怎么也弄不明白为什么VHDL语言在代码设计中不能存在较多的函数或过程调用,因为每一次的子程序调用在综合后都将生成一个硬件电路模块。老师的一句话对我犹如醍醐灌顶,他告诉我,“首先观念要转变一下,VHDL语言不是在写代码而是在搭电路”。于是,我才深刻地认识到,所谓VHDL语言,名如其意,即为国际标准硬件描述语言。首先是编译器对我们编写的代码进行综合,然后我们下载到目标芯片上后是生成一个硬件逻辑电路。我想这也是为什么VHDL中除了进程和子程序中的代码都被称为“并发代码”的原因吧,因为所有的原代码设计在系统综合后都将被描述成相应的硬件电路,系统所有的模块在统一的系统时钟下进行工作。这一次的EDA技术课程设计让我们有了一个在设计中学习的机会,可以将老师课堂上讲授的知识真正地运用到实践中。在实际应用中发现问题,发现课本上掌握的知识的不足,然后再回到书本并查阅相关书籍获得问题的答案,并解决问题。在这循环的学习实践,实践学习过程中,我们在这次课程设计中所学到的知识是课堂中通过书本和老师的讲课中很难学习到的。最后,在此感谢在这次课程设计中老师的指导和同学的鼓励,你们永远是我人生路上前行的动力。参考文献1 谭会生,张昌凡.EDA技术及应用M.西安电子科技大学出版社,20042 (巴西)佩德罗尼|译者:乔庐峰,王志功. VHDL数字电路设计教程M.电子工业出版社, 2005-09-013 吴厚航.深入浅出玩转FPGAM.北京:北京航空航天大学出版社,2010 4 潘松,王国栋.VHDL实用教程(第二版)M. 北京:电子科技大学出版社,2000 5 赫建国,倪德克,郑燕.基于NiosII内核的FPGA电路系统设计. 北京:电子工业出版社,2010 附录程序代码:- 交通灯控制系统 EDA课程设计library IEEE;-打开程序库use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;-实体定义ENTITY traffic IS PORT ( clk : IN std_logic; -系统输入时钟 rst : IN std_logic; -复位按键输入 key_d : IN std_logic; -调试按键输入 key_m : IN std_logic; -主干道(东西)方向通行紧急按键 key_b : IN std_logic; -支道(南北)方向通行紧急按键 -数码管倒计时显示 dataout : OUT std_logic_vector(7 DOWNTO 0); -数码管段数据 led_bit : OUT std_logic_vector(3 DOWNTO 0); -数码管使能 -红绿灯显示 lightY_m : OUT std_logic_vector(1 DOWNTO 0); -黄灯_主干道(东西)方向 lightY_b : OUT std_logic_vector(1 DOWNTO 0); -支道 lightG_m : OUT std_logic_vector(1 DOWNTO 0); -绿灯_主干道方向 lightG_b : OUT std_logic_vector(1 DOWNTO 0); -支道 lightR_m : OUT std_logic_vector(1 DOWNTO 0); -红灯_主干道方向 lightR_b : OUT std_logic_vector(1 DOWNTO 0) ); -支道 END traffic;ARCHITECTURE arch OF traffic IS SIGNAL div_cnt : std_logic_vector(24 DOWNTO 0); -时钟分频系数 SIGNAL data4 : std_logic_vector(3 DOWNTO 0); -数码管转换数据 SIGNAL first_m : std_logic_vector(3 DOWNTO 0); -时间的个位 SIGNAL second_m : std_logic_vector(3 DOWNTO 0); -时间的十位 SIGNAL first_b : std_logic_vector(3 DOWNTO 0); -对应支道个位 SIGNAL second_b : std_logic_vector(3 DOWNTO 0); -对应支道十位 SIGNAL state : std_logic_vector(1 DOWNTO 0); -红绿灯状态 SIGNAL en_bit : std_logic_vector(3 DOWNTO 0) := 1110; -数码管使能位 SIGNAL time_s : std_logic_vector(3 DOWNTO 0) := 0011;-倒计时的十位 SIGNAL time_y : std_logic_vector(3 DOWNTO 0) := 0101;-黄灯计时变量 CONSTANT red_m : std_logic_vector(1 DOWNTO 0) := 00; CONSTANT green_m : std_logic_vector(1 DOWNTO 0) := 01; CONSTANT yellow_m : std_logic_vector(1 DOWNTO 0) := 10; CONSTANT yellow_b : std_logic_vector(1 DOWNTO 0) := 11; BEGIN-时钟分频 PROCESS(clk,rst) BEGIN IF (NOT rst = 1) THEN -复位键按下 div_cnt = 0000000000000000000000000; ELSIF(clkEVENT AND clk = 1)THEN div_cnt = div_cnt + 1; END IF; END PROCESS;-*倒计时控制部分*- PROCESS(div_cnt(20),rst,key_m,key_b,key_d) BEGIN -判断是否为调试模式 IF (NOT key_d =1) THEN -调试按键按下,调试模式计时 time_s = 0001; -红灯10秒 time_y = 0010; -黄灯2秒 ELSE -正常模式运行 time_s = 0011; -红灯30秒 time_y = 0101; -黄灯5秒 END IF; -正常进程开始 IF (NOT rst = 1) THEN -复位亮红灯 state = red_m; second_m =0011; -三十秒倒计时初值 second_b =0011; first_m = 0000; first_b = 0000; ELSIF(NOT key_m = 1) THEN -主干道紧急通行 state = green_m; ELSIF(NOT key_b = 1) THEN -支道紧急通行 state -主干道红灯状态,支道绿灯 IF (first_m /= 0000 or first_b /=0000) THEN first_m = first_m - 0001; -计时秒位减1 first_b = first_b - 0001; ELSE IF (second_m /= 0000 or second_b /=0000) THEN second_m = second_m - 0001; -计时十位减1 second_b = second_b - 0001; first_m = 1001; -计时个位复位9 first_b = 1001; ELSE state =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论