1、二、设计结构51、clk时钟秒脉冲发生电路或分频器 62、六十进制计数器63、次态发生器 64、状态寄存器及等待时间输出 65、时间显示电路66、时钟扫描电路6三、原理图6四、程序7五、心得体会 10课程设计任务书课题名称交通信号灯的控制电路设计完成时间12/11/29指导教师陈刚职称教授学生姓名班 级B10231总体设计要求和技术要点设计一个交通信号灯控制电路。要求:1、主干道和支干道交替放行,主干道每次放行30秒,支干道每次放行20秒;2、每次绿灯变红灯时,黄灯先亮5秒钟,此时原红灯不变;3、用十进制数字(递增计数)显示放行和等待时间。技术要点:1、主(支)干道红灯时间等于支(主)干道红绿
2、黄灯时间之和;2、用时钟数据扫描通过视觉暂留来数码管显示等待时间;3、状态寄存器和状态寄存器的结合灵活运用;4、计数时间值要译成七段译码值。工作内容及时间进度安排工作内容:在软件上编辑、编译程序,并仿真到达实验要求。进度安排;周一到周四编写程序,并要求程序能通过编译仿真;周四下午在实验板上下载调试程序;周五周六验收。课程设计成果1与设计内容对应的软件程序2课程设计报告书3成果使用说明书4设计工作量要求交通信号控制器的VHDL的设计一、设计任务模拟十字路口交通信号灯的工作过程,利用实验板上的两组红、黄、绿LED作为交通信号灯,用数码管显示等待时间。设计一个交通信号灯控制器。能达到的要求:(1)交
3、通灯从绿变红时,有5秒黄灯亮的间隔时间;(2)交通灯红变绿是直接进行的,没有间隔时间;(3)主干道上的绿灯时间为30秒,支干道的绿灯时间为20秒;(4)在任意时间,显示等待时间。 支干道 主干道 图1 路口交通管理示意图S0S1S2S3主干道交通灯绿(30秒)黄(5秒)红(20秒)红(5秒)支干道交通灯红绿黄表1 交通信号灯的4种状态 二、设计结构学习EDA开发软件和Quartus的使用方法,熟悉可编程逻辑器件的使用。通过制作来了解交通灯控制系统,交通灯控制系统主要是实现城市十字交叉路口红绿灯的控制。设计说明(1)第一模块:clk时钟秒脉冲发生电路 在红绿灯交通信号系统中,大多数情况是通过自动
4、控制的方式指挥交通的。因此 为了避免意外事件的发生,电路必须给一个稳定的时钟(clock)才能让系统正常运作。 模块说明: 系统输入信号: Clk: 由外接信号发生器提供153的时钟信号;系统输出信号: CLK:产生每秒一个脉冲的信号;(2)第二模块:计数秒数选择电路计数电路最主要的功能就是记数负责显示倒数的计数值,对下一个模块提供状态转换 信号。 系统输入: CLK: 接收由clk电路的提供的1hz的时钟脉冲信号; tm: 产生显示电路状态转换信号 tl:倒计数值 秒数个位变化控制信号 th:倒计数值 秒数十位变化控制信号(3)第三模块:红绿灯状态转换电路 本电路负责红绿灯的转换。模块说明:
5、系统输入信号: tm: 接收计数秒数选择电路状态转换信号; da_out: 负责红绿灯的状态显示。(4)第四模块:时间显示电路本电路负责红绿灯的计数时间的显示。倒计数值 秒数个位变化控制信号;倒计数值 秒数十位变化控制信号; led7s1: 负责红绿灯的显示秒数个位。 led7s2: 负责红绿灯的显示秒数十位。三 、原理图四、实验程序library ieee;use ieee. std_logic_1164.all;use ieee. std_logic_unsigned.all;entity traffic is port (clk_in:in std_logic; selout:out s
6、td_logic_vector(6 downto 0); -定义数码管的七段显示 sel:out std_logic_vector(1 downto 0); -数码管个位十位选择段 out std_logic_vector(5 downto 0);-定义主次干道的红绿灯(主红黄绿支红黄绿) end traffic;architecture one of traffic is type dm is (s0,s1,s2,s3);-自定义状态四种 signal current_state,next_state:dm;-当前状态与次态均在四种状态之间变化 signal clk:std_logic;-一
7、秒时钟信号 signal count:std_logic_vector(1 downto 0);-个十位选择端(sel) signal led7s1: std_logic_vector(6 downto 0);-十位数码管控制端 signal led7s2:-个位数码管控制端 signal time0 : std_logic_vector (6 downto 0);-递增计数 signal tm :-剩余时间 倒计时 signal tl:-个位数码管显示情况控制 signal th: std_logic_vector (1 downto 0);-十位数码管显示情况控制begin sel=cou
8、nt;fen:process(clk_in) variable cnt: std_logic_vector (16 downto 0); if clk_in event and clk_in=1 then-产生153hz分频,上升沿有效产生clk if cnt = 10011000100101101 then cnt:=00000000000000000; clk= else cnt:= cnt+1; clk = 0 end if;end process fen;a:process(clk_in,count) -不断扫描出现count的00和01的选择 begin event and clk_
9、in= if count=01then count00 else countseloutnull; end case;end process a;process (clk) begin if clkevent and clk=then -60秒的循环设计 if time0= 0111100 then time0 0000001 else time0=time0+1;end process;reg:process( clk,current_state) -定义当前状态与次态的关系 begin -产生上升沿时次态把自己的状态赋予当前状态 if clk= and clkevent then current_stateda_out001100tm=30-time0; -主绿和支红状态,当计时到29 if time0=29 then next_state=s1; -秒时将s1状态赋给次态,此时 else next_state010100=35-time0; -态 if time0=34 then next_state100001=55-time0; if time0=54 then next_state100010=60-time0; if time0=59 then next_state
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1