EDA课程设计报告-- 交通灯控制器

合集下载

EDA课程设计报告交通灯控制系统

EDA课程设计报告交通灯控制系统

一、课程设计目的和要求目的:掌握基于FPGA 的复杂数字系统的设计和验证方法。

提高学生复杂数字系统的设计能力。

要求:使用实验箱为W48-PK2SOPC 试验开发系统,核心器件为Alatera 公司的EP1C6Q240C8芯片,开发软件为Quartus4.0.本实验环节要求学生以FPGA 器件为目标器件,设计典型的数字系统,如:A/D 、D/A 接口;电子密码锁,交通灯控制系统,数字表等复杂硬件电路,完成设计综合、仿真和硬件测试,并写实验报告。

二、设计方案工作原理:本次设计是针对十字路口,进行南北和东西直行情况下交通灯控制。

设定东西方向为主干道方向,根据交通灯的亮的规则,在初始状态下四个方向的都为红灯亮启,进入正常工作状态后,当主干道上绿灯亮时,支干道上红灯亮,持续40S 后,主干道和支干道上的黄灯都亮启,持续5S 后,主干道上红灯亮启,支干道上绿灯亮启持续40S ,之后主干道和支干道上的黄灯都亮启5s ,一个循环完成。

用LED 灯显示倒计时,并且能实现总体清零功能,计数器由初始状态开始计数,对应状态的显示灯亮。

实现方法:本次采用文本编辑法,即利用Verilog HDL 语言描述交通控制器,通过状态机计数法,实现设计所要求的交通灯控制及时间显示。

设计中用两组红黄绿LED 模拟两个方向上的交通灯,用4个7段数码管分别显示两个方向上的交通灯剩余时间,控制时钟由试验箱上频率信号提供。

状状状状状状状状状状状状00状状10状状11状状01状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状001100010010001010100010图2.交通灯控制状态转化说明:该状态图为交通灯在正常情况下的状态转化图,进入控制后,状态00时主干道绿灯及支干道红灯亮起,进入状态01后两路黄灯亮起,状态11时主干道红灯及支干道绿灯亮起。

进入10状态两路黄灯亮起。

结束一个循环,从00状态重新开始循环。

EDA课程设计报告 交通灯控制器

EDA课程设计报告 交通灯控制器

---------------------考试---------------------------学资学习网---------------------押题------------------------------.EDA课程设计报告交通灯控制器.一、设计任务要求1、控制器按东西、南北两个方向控制两组交通灯(红、绿、黄)2、两组灯亮的顺序满足交通安全的规则要求.3、东西向绿灯每次亮30S,接着黄灯亮2S,红灯亮20S;南北向绿灯每次亮28S,接着黄灯亮2S,红灯亮30S.4、有两组数码管给出灯亮的时间倒计时显示。

二、设计思路及总体结构框图设计思路:1.硬件:由设计任务要求可知,总体输入电路有:(1)在开始计时之前的等待状态,复位键reset接低电位,接通电源后,首先要将它接高电位,表示计时开始。

(2)当按一下(on_off)键,表示紧急情况发生,两个方向均为红灯亮,计时停止,当再次按下(on_off)键时,控制器恢复原来状态,正常工作。

输出电路:(1)由于东西和南北方向都要显示时间,因此需要4个数码管,这样在设计中就需要四条输出线choose4,用来选通指定一个LED七段显示数码管。

(2)显示器的每一位都采用LED七段显示数码管进行显示,每一个LED七段显示数码管都要有七条输出线控制,一共使用4个七段数码管,故输出电路使用四个七位输出信号:showtime1,showtime2,showtime3,showtime4。

(3)东西和南北方向都有交通灯亮的情况,故输出电路中要有两个状态控制信号state1,state2分别控制东西和南北的灯,每个方向上有4个灯(增加了左、右转弯显示控制功能),所以state1,state2的类型应该是4位数组型的。

外部电路图如下:东西方向 clk 4/ State1交通灯 stasreset State2南北方向 on_off 4/ 交通灯7/ Showtime17/ Showtime27/ Showtime37/ Showtime4Choose44/- 2 -2.软件:(1)在VHDL设计描述中,采用自顶向下的设计思路,该思路,首先要描述顶层的接口,上面的描述已经规定了交通灯控制的输入输出信号:输入信号:复位开关信号reset;紧急情况控制信号on_off;外部时钟信号clk。

EDA实验课程大作业报告:设计制作一个用于十字路口的交通灯控制器

EDA实验课程大作业报告:设计制作一个用于十字路口的交通灯控制器

交通灯控制器设计一.系统功能设计要求设计制作一个用于十字路口的交通灯控制器,要求如下:(1)南北和东西方向各有一组红、绿、黄灯来指挥交通,持续时间分别为25S,20S,和5S。

(2)当有特殊情况(如消防车、救护车等)时,两个方向均为红灯亮,计时停止。

(3)当特殊情况结束后,控制器恢复原来状态,继续正常运行。

(4)用两组数码管,以倒计时方式显示两个方向允许通行或禁止通行的时间。

二.设计原理1.交通灯控制器的状态转换根据题目要求将将红绿灯的状态转换列成如下表:2.设计方案1)由于交通灯需要使用2位7段LED数码管指示通行剩余时间,故采用LED动态扫描方式显示当前时间。

频率设定CLK1k对应的频率为50MHZ。

2)控制模块是交通灯的核心,主要控制交通灯按工作顺序自动变换,同时控制倒计时模块工作,每当倒计时回零时,控制模块接收到一个计时信号,从而控制交通灯进入下一个工作状态。

3)每个方向有一组2位倒计时器模块,用以显示该方向交通灯剩余的点亮时间。

4)显示模块由两部分组成,一是由七段数码管组成的倒计时显示器,每个方向两个七段数码管;二是由发光二极管代替的交通灯,每个方向3个发光二极管。

三.变量符号说明其中,CLK1K为系统时钟信号输入端,SN为禁止通行信号输入通行信号输入端,light0为东西红灯信号输出端,light1为东西黄灯信号输出端,light2为东西绿灯信号输出端,light3为南北红灯信号输出端,light4为南北黄灯信号输出端,light5为南北绿灯信号输出端,led1、led2、led3、led4为数码管地址选择信号输出端。

四.代码说明library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity Hongld ISport (clk1k,SN:in std_logic; --SN紧急情况led1, led2, led3, led4 :out std_logic_vector (6 downto 0);--显示管显示时间用light:out std_logic_vector (5 downto 0)); --红绿黄灯end Hongld;architecture traffic1 of Hongld ISsignal S:std_logic_vector (1 downto 0); --状态signal DXT:std_logic_vector(7 downto 0):=X"01"; --东西方向时间signal NBX:std_logic_vector(7 downto 0):=X"01"; --南北方向时间signal ART,AGT,AYT,BRT,BGT,BYT: std_logic_vector(7 downto 0); --红绿黄灯信号signal temp: integer range 0 to 49999999; --产生1s计数器时计数signal clk: std_logic;beginART<="00100101";AGT<="00100000";AYT<="00000100";BRT<="00100101";BGT<="00100000";BYT<="00000100";process(clk1k) -- 选频率为50MHZ beginif (clk1k'event and clk1k='1') thenif temp=49999999 thentemp<=0;clk<='1';elsetemp<=temp+1;clk<='0';end if;end if;end process;process(clk,DXT,NBX) --状态转换进程beginif clk'event and clk ='1' thenif(DXT ="00000001")OR (NBX = "00000001") then S<=S+1;else S<=S;end if; --状态转换结束end if;end process;process (clk,SN,S) --倒计时模块beginif SN = '1' then DXT<=DXT; NBX<=NBX;elseif clk'event and clk='1' thenif (DXT="0000000") OR (NBX="00000000") thencase S ISwhen "00"=>DXT<=ART; NBX<=BGT; --南北红灯、东西绿灯when "01"=>NBX<=BYT; --南北红灯、东西黄灯when "10"=>DXT<=AGT; NBX<=BRT; --南北绿灯、东西红灯when "11"=>DXT<=AYT; --南北黄灯、东西红灯when others=>NULL;end case;end if;if DXT/="00000000" thenif DXT(3 downto 0)= "0000" thenDXT(3 downto 0)<="1001";DXT(7 downto 4)<=DXT(7 downto 4)-1;else DXT(3 downto 0)<=DXT(3 downto 0)-1;DXT(7 downto 4)<=DXT(7 downto 4);end if;end if;if NBX/="00000000" thenif NBX(3 downto 0)="0000" thenNBX(3 downto 0)<="1001";NBX(7 downto 4)<=NBX(7 downto 4)-1;else NBX(3 downto 0)<=NBX(3 downto 0)-1;NBX(7 downto 4)<=NBX(7 downto 4);end if;end if;end if;end if;end process; --倒计时模块结束process(DXT,NBX,S,SN) --显示模块begincase NBX(3 downto 0) iswhen "0000"=>led1<="1000000";when "0010"=>led1<="0100100"; when "0011"=>led1<="0110000"; when "0100"=>led1<="0011001"; when "0101"=>led1<="0010010"; when "0110"=>led1<="0000010"; when "0111"=>led1<="1111000"; when "1000"=>led1<="0000000"; when "1001"=>led1<="0010000"; when others=>led1<="1111111"; end case;case NBX(7 downto 4) iswhen "0000"=>led2<="1000000"; when "0001"=>led2<="1111001"; when "0010"=>led2<="0100100"; when "0011"=>led2<="0110000"; when "0100"=>led2<="0011001"; when "0101"=>led2<="0010010"; when "0110"=>led2<="0000010"; when "0111"=>led2<="1111000"; when "1000"=>led2<="0000000"; when "1001"=>led2<="0010000"; when others=>led2<="1111111"; end case;case DXT(3 downto 0) iswhen "0000"=>led3<="1000000"; when "0001"=>led3<="1111001"; when "0010"=>led3<="0100100"; when "0011"=>led3<="0110000"; when "0100"=>led3<="0011001"; when "0101"=>led3<="0010010"; when "0110"=>led3<="0000010"; when "0111"=>led3<="1111000"; when "1000"=>led3<="0000000"; when "1001"=>led3<="0010000"; when others=>led3<="1111111"; end case;case DXT(7 downto 4) iswhen "0000"=>led4<="1000000"; when "0001"=>led4<="1111001"; when "0010"=>led4<="0100100";when "0100"=>led4<="0011001";when "0101"=>led4<="0010010";when "0110"=>led4<="0000010";when "0111"=>led4<="1111000";when "1000"=>led4<="0000000";when "1001"=>led4<="0010000";when others=>led4<="1111111";end case;if SN ='1' then light<="001001";elsecase S ISwhen "00"=>light<="010001";when "01"=> light <="100001";when "10"=> light <="001010";when "11"=> light <="001100";when others=>NULL;end case;end if;end process;end traffic1;五.仿真波形图仿真时序波形图。

毕业设计-EDA技术交通灯控制器(课程设计)

毕业设计-EDA技术交通灯控制器(课程设计)

课程设计报告课程设计:交通灯控制器一:实验目的:实现高速公路与乡间小路的交叉路口红绿灯的控制二:功能要求:1.只有在小路上发现汽车时,高速公路上的交通灯才可能变为红灯。

2.当汽车行驶在小路上时、小路的交通灯保持为绿灯,但不能超过给定的延迟时间.〔注;这段时间定义为20S时间)。

3.高速公路灯转为绿灯后,即使小路上有汽车出现,而高速公路上并无汽车,也将在给定的时间内保持高速公路绿灯(注:这段时间定义为60S)。

三:设计思路:五:VHDL源程序:LIBRARY ieee;USE ieee.std_logic_1164.all;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TrafficLight ISPORT (Clk : IN STD_LOGIC;S,Reset : IN STD_LOGIC;mg,my,mr,cg,cy,cr : OUT STD_LOGIC );END TrafficLight ;ARCHITECTURE rtl OF TrafficLight ISTYPE TrafficState IS (mgcr, mycr, mrcg, mrcy);SIGNAL current_state,next_state : TrafficState ;SIGNAL Count : STD_LOGIC_VECTOR(5 DOWNTO 0);SIGNAL Clrn : STD_LOGIC ;BEGINCounter : PROCESS(clk)BEGINIF Reset = '1' OR (Clrn = '1' AND NOT(Count = "000000")) THEN Count <= "000000";ELSIF clk'EVENT AND clk = '1' THENIF NOT(s='0' AND current_state = mgcr) THEN Count <= Count + 1;END IF;END IF;END PROCESS Counter;StateTransition : PROCESS(clk,Count, current_state)BEGINIF Reset = '1' THEN next_state <= mgcr;Clrn <= '0';ELSIF clk'EVENT AND clk = '1' THENCASE current_state ISWHEN mgcr => mr<='0';mg<='1';my<='0';cr<='1';cg<='0';cy<='0';IF Count >= "111011" AND S = '1' THEN next_state <= mycr;Clrn <= '1';ELSE Clrn <= '0';END IF;WHEN mycr => mr<='0';mg<='0';my<='1';cr<='1';cg<='0';cy<='0';IF Count >= "000100" THEN next_state <= mrcg;Clrn <= '1';ELSE Clrn <= '0';END IF;WHEN mrcg => mr<='1';mg<='0';my<='0';cr<='0';cg<='1';cy<='0';IF Count >= "010011" OR S = '0' THEN next_state <= mrcy;Clrn <= '1';ELSE Clrn <= '0';END IF;WHEN mrcy => mr<='1';mg<='0';my<='0';cr<='0';cg<='0';cy<='1';IF Count >= "000100" THEN next_state <= mgcr;Clrn <= '1';ELSE Clrn <= '0';END IF;WHEN OTHERS => NULL;END CASE;END IF;END PROCESS StateTransition;PROCESS(clk)BEGINIF clk'EVENT AND clk='1' THENcurrent_state <= next_state;END IF;END PROCESS;END rtl;仿真图如下:六:实验心得:通过本次课程设计,使用进一步熟悉了MAX-PLUSLL这种EDA软件工具。

EDA课程设计(交通灯控制器)

EDA课程设计(交通灯控制器)

课程设计年月日大课程设计任务书课程EDA技术课程设计题目交通灯控制器专业姓名学号主要内容、基本要求、主要参考资料等主要内容:设计一个交通信号灯控制器,由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。

基本要求:1、红、绿、黄发光二极管作信号灯,用传感器或逻辑开关作检测车辆是否到来的信号,实验电路用逻辑开关代替。

2、主干道处于常允许通行的状态,支干道有车来时才允许通行。

主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。

3、主、支干道均有车时,两者交替允许通行,主干道每次放行45秒,支干道每次放行25秒,设立45秒、25秒计时、显示电路,选择1HZ时钟脉冲作为系统时钟。

4、在每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡,使行驶中的车辆有时间停到禁行线外,设立5秒计时、显示电路。

主要参考资料:[1] 潘松著.EDA技术实用教程(第二版). 北京:科学出版社,2005.[2] 康华光主编.电子技术基础模拟部分. 北京:高教出版社,2006.[3] 阎石主编.数字电子技术基础. 北京:高教出版社,2003.完成期限2010.3.12指导教师专业负责人2010年3月8日一、总体设计思想1.基本原理计数模块、置数模块、主控制器模块和译码器模块。

置数模块将交通灯的点亮时间预置到置数电路中,计数模块以秒为单位倒计时,当计数值减为零时,主控电路改变输出状态,电路进入下一个状态的倒计时。

其中,核心部分是主控2.设计框图图一.交通灯控制系统的原理框图图二.交通灯控制器的流程图脉冲发生器 控制器 译码器甲车信号灯乙车信号灯定时器1.设计思路:在某一十字路口交叉地带,可设计东西走向的道路为甲车道,南北走向的道路为乙车道。

甲乙车道的交通灯需按交通法则来依次交替运行。

则可设计一个状态循环的逻辑电路。

2.分析系统的逻辑功能:交通灯控制系统的原理框图如图一所示。

交通灯控制器 EDA课程设计实验报告

交通灯控制器   EDA课程设计实验报告

目录1课程设计要求 (3)2 电路功能描述 (3)3 设计方案 (3)4设计原理图 (4)5 VHDL语言 (4)6仿真截图 (6)7心得体会 (11)8参考文献 (11)1. 课程设计要求1.1.红、黄、绿灯分别控制显示;1.2.每一个状态分别分配一个时间显示(两位十进制,倒计时);1.3.符合实际交通规律。

2.电路功能描述本设计是实现交通灯的控制,模拟实现了红、绿、黄灯指挥交通的功能。

本设计适用东西和南北方向的车流量大致相同的路口,红灯显示时间30S,绿灯显示时间25S,黄灯显示时间5S,同时用数码管指示当前的状态(红、绿、黄灯)的剩余时间。

当有紧急状况发生时,两个方向都禁止通行,并且显示红灯,当紧急状况解除后,重新计时并且指示时间。

3.设计方案根据设计要求,需要控制显示红、黄、绿三个灯的亮灭状态及显示的时间。

这个设计主要由两部分组成,红黄绿灯的显示模块,显示时间模块。

由实际的交通情况可知,东西方向的显示情况是一致的,南北方向的显示情况也是一致,故在设计的时候就只考虑两种状态,将东西方向合成一种,南北方向合成一种。

红黄绿灯的显示模块用两组共6个灯显示,时间显示模块用LED数码管显示。

此外,本交通灯控制器设置的红黄绿显示方式是参照一些城市的显示规律,红灯30S,绿灯25S,黄灯5S,同时用数码管指示当前状(红、绿、黄灯)的剩余时间。

另外还设有一个紧急状态,当特殊情况发生时,两个方向都禁止通行,指示红灯,紧急状态解除后,重新计时并指示时间。

时间采用倒计时的方式显示。

本设计采用VHDL语言编程,描述各个硬件模块实现的功能,使红、黄、绿灯的转换有一个准确的转换顺序和时间间隔,并进行仿真,通过仿真的结果,得出实验的结果。

在正常情况下的一个完整周期内,交通灯控制器系统一共有四种状态,分别是东西红、南北绿,东西红、南北黄,东西绿、南北红,东西黄、南北红。

其运行方式为东西红、南北绿→东西红、南北黄→东西绿、南北红→东西黄、南北绿,东西黄、南北绿结束后再回到东西红、南北绿的状态,整个周期持续60s。

eda交通灯控制器课程设计

eda交通灯控制器课程设计

eda交通灯控制器课程设计课程设计:EDA交通灯控制器1. 课程背景和目标:EDA交通灯控制器是使用EDA(电子设计自动化)工具进行交通灯控制系统设计的课程。

学习该课程的目标是使学生能够熟练运用EDA工具进行交通灯控制系统设计,并能够理解交通灯控制系统的原理和设计方法。

2. 课程内容和安排:(1) 交通灯控制系统原理介绍:介绍交通灯控制系统的基本原理,包括信号机、信号控制方法和交通流量检测等。

(2) EDA工具介绍:介绍常用的EDA工具,如Verilog、VHDL等,并讲解其基本使用方法。

(3) 交通灯控制器设计流程:介绍交通灯控制器的设计流程,包括需求分析、功能设计、模块设计和系统集成等。

(4) 交通灯控制器设计实践:学生通过实践项目,使用EDA工具设计交通灯控制器。

项目涵盖设计、仿真、验证和生成等环节,学生需要独立完成设计并提交设计报告。

3. 课程教学方法:(1) 理论讲解:通过课堂讲解,介绍交通灯控制系统的原理和设计方法,以及EDA工具的使用方法。

(2) 实践项目:学生通过实践项目,运用所学知识设计交通灯控制器,并进行仿真、验证和生成等环节。

(3) 讨论和案例分析:通过课堂讨论和案例分析,加深学生对交通灯控制系统的理解和应用能力。

(4) 指导和批评:教师对学生的设计进行指导和批评,帮助学生不断提高设计能力。

4. 评估方式:(1) 实践项目报告:学生独立完成实践项目,并提交设计报告,包括设计过程、仿真结果和验证结果等。

(2) 课堂测试:通过课堂测试检验学生对交通灯控制系统原理和EDA工具的理解程度。

(3) 课堂表现:评估学生的课堂出勤情况、学习态度和参与度等。

5. 参考教材:(1) 《交通信号控制原理与技术》高新泽(2) 《EDA与数字电路设计》陈骏等(3) 《数字电路与系统设计》刘敏衡等(4) 《系统设计自动化技术与EDA工具应用》杨学庆等以上是对EDA交通灯控制器课程设计的简要介绍。

课程内容涵盖了交通灯控制系统的原理和设计方法,以及EDA工具的使用方法。

EDA交通灯控制器课程设计报告书

EDA交通灯控制器课程设计报告书

交通灯控制器课程设计该交通信号控制器控制十字路甲、乙两条道路的红、黄和绿三色灯,指挥车辆和行人安全通行。

功能要求如下:1.只有在小路上发现汽车时,高速公路上的交通灯才可能变成红灯。

2.当汽车行驶在小路上时,小路的交通灯保持为绿灯,但不能超过给定的时间。

(20s)3.高速公路灯转为绿色后,即使小路上有汽车出现,而高速公路上并无汽车,也将在给定的时间内保持绿灯。

(60s)。

设计如下:——1hz分频器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity fen_pin1 isport(clk100hz:in std_logic;clk1hz:out std_logic);end fen_pin1;architecture bhv of fen_pin1 issignal qan:std_logic_vector(3 downto 0);signal qbn:std_logic_vector(3 downto 0);signal cin:std_logic;beginprocess(clk100hz)beginif(clk100hz'event and clk100hz='1')thenif qan="1001"then qan<="0000";cin<='1';else qan<=qan+1;cin<='0';end if;end if;end process;process(clk100hz,cin)beginif(clk100hz'event and clk100hz='1')thenif cin='1' thenif qbn="1001" then qbn<="0000";else qbn<=qbn+1;end if ;end if ;end if ;end process;process(qan,qbn)beginif (qan="1001"and qbn="1001")then clk1hz<='1'; else clk1hz<='0';end if;end process;end bhv;——2hz分频器library ieee;use ieee.std_logic_1164.all;entity fen_pin2 isport (clk100hz:in std_logic;clk2hz:out std_logic);end fen_pin2;architecture bhv of fen_pin2 isbeginprocess(clk100hz)variable cnt:integer range 0 to 24;variable tmp:std_logic;beginif(clk100hz'event and clk100hz='1')thenif cnt=24 thencnt:=0;tmp:=not tmp;elsecnt:=cnt+1;end if;end if;clk2hz<=tmp;end process;end bhv;——主干道控制library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity contralz isport(clk:in std_logic;ra,ga,ya:out std_logic;timeah,timeal:out std_logic_vector(3 downto 0)); end contralz;architecture bhv of contralz istype rg is(green,red,yellow2);beginprocess(clk)variable a:std_logic;variable th,tl:std_logic_vector(3 downto 0);variable state:rg;beginif clk'event and clk='1'thencase state iswhen green=>if a='0'thenth:="0101";tl:="1001";a:='1';ga<='1';ra<='0';ya<='0';elseif not(th="0000"and tl="0001")thenif tl="0000"thentl:="1001";th:=th-1;elsetl:=tl-1;elseth:="0000";tl:="0000";a:='0';state:=red;end if;end if;when red=>if a='0'thenth:="0001";tl:="1001";a:='1';ra<='1';ya<='0';ga<='0';elseif not(th="0000"and tl="0001")then if tl="0000"thentl:="1001";th:=th-1;elsetl:=tl-1;end if;elseth:="0000";tl:="0000";a:='0';ra<='0';ga<='0';state:=yellow2;end if;end if;when yellow2=>if a='0'thenth:="0000";tl:="1001";a:='1';ya<='1';ga<='0';ra<='0';elseif not(th="0000"and tl="0001")then if tl="0000"thentl:="1001";th:=th-1;tl:=tl-1;end if;elseth:="0000";tl:="0000";ga<='0';ra<='0';ya<='0';a:='0';state:=green;end if;end if;end case;end if;timeah<=th;timeal<=tl;end process;end bhv;——支路控制library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity contralx isport(clk:in std_logic;rb,gb,yb,chu:out std_logic;timeah,timeal:out std_logic_vector(3 downto 0)); end contralx;architecture bhv of contralx istype rgy is(red,yellow1,green,yellow2);beginprocess(clk)variable a:std_logic;variable th,tl:std_logic_vector(3 downto 0);variable state:rgy;beginif clk'event and clk='1'thencase state iswhen yellow1=>if a='0'thenth:="0000";tl:="0100";a:='1';yb<='1';gb<='0';chu<='1';elseif not(th="0000"and tl="0001")then if tl="0000"thentl:="1001";th:=th-1;elsetl:=tl-1;end if;elseth:="0000";tl:="0000";a:='0';state:=green;end if;end if;when green=>if a='0'thenth:="0001";tl:="1001";a:='1';gb<='1';rb<='0';yb<='0';chu<='1';elseif not(th="0000"and tl="0001")then if tl="0000"thentl:="1001";th:=th-1;elsetl:=tl-1;end if;elseth:="0000";tl:="0000";a:='0';state:=yellow2;end if;end if;when red=>if a='0'thenth:="0101";tl:="0100";a:='1';yb<='0';chu<='1';elseif not(th="0000"and tl="0001")then if tl="0000"thentl:="1001";th:=th-1;elsetl:=tl-1;end if;elseth:="0000";tl:="0000";a:='0';state:=yellow1;end if;end if;when yellow2=>if a='0'thenth:="0000";tl:="0100";a:='1';yb<='1';gb<='0';rb<='0';chu<='1';elseif not(th="0000"and tl="0001")then if tl="0000"thentl:="1001";th:=th-1;elsetl:=tl-1;end if;elseth:="0000";tl:="0000";a:='0';chu<='0';state:=red;end if;end if;end case;end if;timeah<=th;timeal<=tl;end process;end bhv;——反馈器library ieee;use ieee.std_logic_1164.all;entity smen isport( sm ,re,gr,ye:in std_logic;jinji:out std_logic);end smen;architecture se of smen isbeginprocess isbeginif(sm='1' and re='0' and gr='0' and ye='0') then jinji<='1'; elsejinji<='0';end if;end process;end se;——消抖电路library ieee;use ieee.std_logic_1164.all;entity xiaodou isport(jinji,clk1hz:in std_logic;b:out std_logic);end xiaodou;architecture bhv of xiaodou issignal temp1:std_logic;beginprocess(clk1hz,jinji)variable temp2:std_logic;beginif(clk1hz'event and clk1hz='0')thentemp1<=jinji;temp2:=not temp1;end if;b<=temp1 and temp2 and clk1hz;end process;end bhv;——状态转换library ieee;use ieee.std_logic_1164.all;entity no isport(a:in std_logic;en:out std_logic);end no;architecture no_arc of no isbeginprocess(a)variable tmp:std_logic;beginif(a'event and a='1')thentmp:=not tmp;end if;en<=tmp;end process;end no_arc;——mux4llibrary ieee;use ieee.std_logic_1164.all;entity mux41 isport(sel:in std_logic_vector(2 downto 0);d0,d1,d2,d3:in std_logic_vector(3 downto 0); q:out std_logic_vector(3 downto 0);so:out std_logic_vector(1 downto 0));end mux41;architecture bhv of mux41 isbeginprocess(sel)begincase sel iswhen"100"=>q<=d2;so<="00"; when"101"=>q<=d3;so<="01"; when"000"=>q<=d0;so<="10";when others=>q<=d1;so<="11";end case;end process;end bhv;——译码器library ieee;use ieee.std_logic_1164.all;entity dec7s isport(d:in std_logic_vector(3 downto 0);q0,q1,q2,q3,q4,q5,q6:out std_logic);end dec7s;architecture bhv of dec7s isbeginprocess(d)variable q:std_logic_vector(6 downto 0); begincase d iswhen"0000"=>q:="0111111"; when"0001"=>q:="0000110"; when"0010"=>q:="1011011"; when"0011"=>q:="1001111"; when"0100"=>q:="1100110"; when"0101"=>q:="1101101"; when"0110"=>q:="1111101"; when"0111"=>q:="0100111"; when"1000"=>q:="1111111"; when"1001"=>q:="1101111";when others=>q:="1111001";end case;q0<=q(0);q1<=q(1);q2<=q(2);q3<=q(3);q4<=q(4);q5<=q(5);q6<=q(6);end process;end bhv;下载可编辑.专业.整理. 仿真图如下:Ya,ra,ga 表示主干道黄红绿灯;yb,rb,gb 表示乡村小路黄红绿灯。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

EDA课程设计报告-- 交通灯控制器郑州航空工业管理学院电子通信工程系EDA技术及应用课程设计报告题目:交通灯控制器姓名:学号:同组成员:指导老师:年月日目录一、设计任务书二、硬件系统设计1、电路原理图1.1 CPLD核心电路1.2 数码管显示电路1.3电源电路1.4 LED指示灯电路2、管脚分配3、设计方案三、Verilog HDL代码设计四、系统调试1、逻辑功能模块RTL级描述2、仿真图五、总结1、对本次课程设计的总结六、参考文献一、设计任务书设计要求(1)主干道通行(绿灯):支干道有车24秒;支路红灯,数码管实时显示倒计时的秒,秒计时的频率为1Hz 。

(2)主干道缓冲(黄灯):6秒,(不显示计数),秒计时的频率为1Hz 。

(3)支路通行(绿灯):20秒,主干道红灯,数码管实时显示倒计时的秒,秒计时的频率为1Hz 。

(4)支路缓冲(黄灯):6秒,不显示,秒计时的频率为1Hz 。

数码管采用动态显示。

其他要求:(1)晶振为12 MHz(2)采用CPLD 器件,为ALTERA 的EPM7064SL-44(3)采用数码管显示二、硬件系统设计1、电路原理图:1.1 CPLD核心电路1.2 数码管显示电路1.3电源电路1.4 LED指示灯电路2、管脚分配管脚分配:CPLD型号:FAMILY:MAX7000AE DEVICE:EPM7064AELC44-10sys_clk : pin 43 // 12Mhz4个LED灯:led0 ~ led3 : pin 14 16 17 188个数码管:8个位线:com0~com3(dig0~dig3):pin 34, 33,31, 29, com4~com7 (dig4~dig7):pin 28 , 27,26 , 25 8个数据线:seg0~seg 3: pin 36, 37 ,39, 40seg4~seg 7: pin 41, 4 , 5, 64个按键:sw0~sw3: pin 19, 20, 21, 243、设计方案三、Verilog HDL代码设计module ds(clk,led,dig,seg);//输入input clk;//输出output[3:0] dig;output[7:0] seg;output[4:0] led;//定义变量reg[24:0] count;reg[15:0] miao;reg[4:0] leden;reg[7:0] seg_r;reg[3:0] dig_r;reg[3:0] disp_dat;reg sec;reg num;reg[1:0] flag; //计数变量reg[1:0]f2; //计数变量assign dig=dig_r;assign seg=seg_r;assign led=leden;//秒产生信号always@(posedge clk)begincount=count+1'b1;if(count==25'd2*******)begincount=25'b0;sec=~sec;endend//数码管动态扫描always@(posedge clk)begincase(count[16:15])0:disp_dat=miao[3:0];1:disp_dat=miao[7:4];2:disp_dat=miao[11:8];3:disp_dat=miao[15:12];endcasecase(count[16:15]) //选择数码管显示位0:dig_r=4'b1110;1:dig_r=4'b1101;2:dig_r=4'b1011;3:dig_r=4'b0111;endcaseendalways@(posedge clk)begincase(disp_dat)4'h0:seg_r=8'hc0;4'h1:seg_r=8'hf9;4'h2:seg_r=8'ha4;4'h3:seg_r=8'hb0;4'h4:seg_r=8'h99;4'h5:seg_r=8'h92;4'h6:seg_r=8'h82;4'h7:seg_r=8'hf8;4'h8:seg_r=8'h80;4'h9:seg_r=8'h90;default:seg_r=8'hff;endcaseendalways@(negedge sec) //数码管倒计时及指示灯显示倒计时模块beginif(flag==0)beginmiao[3:0]=miao[3:0]-1;if(miao[3:0]==4'hf)beginmiao[7:0]=8'h18; 主干道绿灯倒计时leden=5'b01101; 主绿支红flag[1:0]=4'h1; 计数转向第二步endendelse if(flag[1:0]==4'h1)beginmiao[3:0]=miao[3:0]-1'b1;if(miao[3:0]==4'hf)beginmiao[7:4]=miao[7:4]-1'b1;if(miao[7:4]==4'hf)beginleden[4:2]=3'b110; 主干道黄灯flag[1:0]=4'h2;miao[7:0]=8'h06; 黄灯倒计时endelse miao[3:0]=4'h9;endendelse if(flag[1:0]==4'h2)beginmiao[3:0]=miao[3:0]-1'b1;if(miao[3:0]==4'hf)beginmiao[7:4]=miao[7:4]-1'b1;if(miao[7:4]==4'hf)beginleden[4:2]=3'b101; 主干道红灯flag[1:0]=4'h3;miao[7:0]=8'h20;endelse miao[3:0]=4'h9;endendelse if(flag[1:0]==4'h3)beginmiao[3:0]=miao[3:0]-1'b1;if(miao[3:0]==4'hf)beginmiao[7:4]=miao[7:4]-1'b1;if(miao[7:4]==4'hf)beginleden[4:2]=3'b011; 主干道绿灯返回flag==1flag[1:0]=4'h1;miao[7:0]=8'h18;endelse miao[3:0]=4'h9;endendelse flag[1:0]=4'h0;if(f2==0)beginmiao[11:8]=miao[11:8]-1;if(miao[11:8]==4'hf)beginmiao[15:8]=8'h24;//leden=6'b011110;f2[1:0]=4'h1;endendelse if(f2[1:0]==4'h1)beginmiao[11:8]=miao[11:8]-1'b1;if(miao[11:8]==4'hf)beginmiao[15:12]=miao[15:12]-1'b1;if(miao[15:12]==4'hf)beginleden[2:0]=3'b110;f2[1:0]=4'h2;miao[15:8]=8'h14;endelse miao[11:8]=4'h9;endendelse if(f2[1:0]==4'h2)beginmiao[11:8]=miao[11:8]-1'b1;if(miao[11:8]==4'hf)beginmiao[15:12]=miao[15:12]-1'b1;if(miao[15:12]==4'hf)beginleden[2:0]=3'b011;f2[1:0]=4'h3;miao[15:8]=8'h06;endelse miao[11:8]=4'h9;endendelse if(f2[1:0]==4'h3)beginmiao[11:8]=miao[11:8]-1'b1;if(miao[11:8]==4'hf)beginmiao[15:12]=miao[15:12]-1'b1;if(miao[15:12]==4'hf)beginleden[2:0]=3'b101;f2[1:0]=4'h1;miao[15:8]=8'h24;endelse miao[11:8]=4'h9;endendelse f2[1:0]=4'h0;endendmodule四、系统调试1、逻辑功能模块RTL级描述仿真图五、总结在做本课程设计的过程中,从程序编写到硬件实现,我们遇到了许多问题。

开始的时候,在编写程序中无法实现赋初值,使程序无法初始化,led灯与数码管不能同步。

查询资料后,设定两个变量对程序进行初始化,解决了出现的问题。

由于对软件使用不熟悉,软件编译频频出错,通过对辅导资料的仔细研究,我们逐渐掌握它的使用方法,最终程序顺利的进行了编译,在硬件联机调试时依然是问题重重。

在这次的课程设计中我们遇到的最大问题是将我们的原程序的下载到电路板上时,发现提示说寄存器不够的现象。

在进行焊接电路板的过程中,有些元器件安装有些不容易,经过练习熟悉后,进一步熟练焊接工艺。

经过对程序的一些删选,问题也得到了解决,最终通过我们不断地努力,作品还是顺利完成了。

看到历时近一周多的交通灯控制终于在我们的期待与苦恼中正常工作,我们都非常高兴。

在实验中出现问题很正常,重要的是要努力克服,不为困难丧失信心,总能找到方法解决的。

通过自己亲手完成实验并亲自焊接电路板,经测试后能够实现功能,心中喜悦之极,增强了实践能力,以后要多多动手,提高自己的实践能力。

经过这次实践,我感到我要学习的还有很多,深层次的知识非常缺乏,更加坚定了我多学专业知道的态度。

同时,在同组合作伙伴的帮助下,解决了很多困难,充分表明了团队协作的重要性。

六、参考文献《EDA技术实用教程——VerilogHDL版》第四版潘松《Verilog数字系统设计教程》第二版夏宇闻《Verilog HDL实用教程》电子科技大学出版社张明《Verilog HDL硬件描述语言》机械工业出版社徐振林。

相关文档
最新文档