数字系统设计课程设计刘云飞.docx
- 文档编号:16400652
- 上传时间:2023-07-13
- 格式:DOCX
- 页数:9
- 大小:28.40KB
数字系统设计课程设计刘云飞.docx
《数字系统设计课程设计刘云飞.docx》由会员分享,可在线阅读,更多相关《数字系统设计课程设计刘云飞.docx(9页珍藏版)》请在冰点文库上搜索。
数字系统设计课程设计刘云飞
西安工业大学北方信息工程学院
课程设计报告
课程数字系统设计
题目十字路口交通灯控制器的设计
专业电子信息工程
班级B110301
学号B11030114
姓名刘云飞
2014年6月11日
一、设计目的
利用MaxplussII平台的VHDL语言设计一个十字交叉路口的交通灯控制器,要求主干道和支道持续的时间各不相同,并能够用倒计时的形式显示。
二、设计要求和任务
设计任务:
有一条主干道和一条支干道的汇合点形成十字交叉路口,主干道为东西向,支干道为南北向。
为确保车辆安全,迅速地通行,在交叉道口的每个入口处设置了红、黄、绿3种信号灯(可利用实验板上的LED显示灯表示交通状态,其中O1、O2、O3分别表示主干道红、黄、绿灯,O6、O7、O8分别表示支干道红、黄、绿灯)。
要求:
(1)主干道绿灯亮时,支干道红灯亮,反之亦然,两者交替允许通行,主干道每次放行30s,支干道每次放行20s。
每次由绿灯变为红灯的过程中,亮光的黄灯作为过渡,时间为5s。
(2)利用七段数码显示器,实现正常的倒计时显示功能(用数码管1和数码管2显示主干道倒计时时间,用数码管4和数码管5显示支干道倒计时时间)。
(3)能实现总体清零功能:
计数器由初始状态开始计数,对应状态的指示灯亮。
三、方案论证
图1交通灯控制器原理图
交通灯控制器原理框图如图1所示,包括置数模块、计数模块、主控制器模块和译码器模块。
置数模块将交通灯的点亮时间预置到置数电路中,计数模块以秒为单位倒计时,当计数值减为零时,主控电路改变输出状态,电路进入下一个状态的倒计时。
其中,核心部分是主控制模块,他负责整个交通灯的运行状态。
表1交通灯控制器的状态转换表
状态
主干道
直干道
时间
1(00)
绿灯亮
红灯亮
30s
2(01)
黄灯亮
红灯亮
5s
3(10)
红灯亮
绿灯亮
20s
4(11)
红灯亮
黄灯亮
5s
(1)控制器模块设计依设计要求,可画出交通灯点亮规律的状态转换表,如表1所示。
根据状态图进行主控制器的设计。
(2)译码模块由于系统要进行30s,5s,20s三种定时,可以采用一个置数模块由主控模块输出的信号控制定时时间的选择。
(3)定时计数器采用倒序计时的方式,由主控模块输出的信号控制定时的开始,定时时间结束时输出定时时间结束信号到主控模块,通过主控模块控制交通灯的亮、灭。
(4)译码模块把计数器输出的信号分别进行译码,由数码管显示当前计数值。
四、程序及注释
LIBRARYIEEE;
USEIEEE.std_logic_1164.all;
USEIEEE.std_logic_unsigned.all;
entityjiaotongdengis
port(clk_in:
instd_logic;
rst:
instd_logic;
light:
outstd_logic_vector(7downto0);
LED7S0:
outSTD_LOGIC_VECTOR(6downto0);
LED7S1:
outSTD_LOGIC_VECTOR(6downto0);
LED7S2:
outSTD_LOGIC_VECTOR(6downto0);
LED7S3:
outSTD_LOGIC_VECTOR(6downto0)
);
ENDjiaotongdeng;
ARCHITECTUREBEHAVEofjiaotongdengIS
typestatesis(green_red,yellow_red,red_green,red_yellow);
signalstate:
states;
signalnextstate:
states:
=green_red;
signaldata0:
integerrange0to3;
signaldata1:
integerrange0to9;
signaldata2:
integerrange0to3;
signaldata3:
integerrange0to9;
signalclock_buffer:
std_logic;
signalcount_time:
integerrange0to1999999;
signalclk:
std_logic;
signalsec0:
integerrange0to3;
signalsec1:
integerrange0to9;
signalsec2:
integerrange0to3;
signalsec3:
integerrange0to9;
BEGIN
frequent:
process(clk_in)
begin
ifclk_in'eventandclk_in='1'then
ifcount_time=1999999then
count_time<=0;
clock_buffer<=notclock_buffer;
else
count_time<=count_time+1;
endif;
endif;
clk<=clock_buffer;
endprocess;
light_statment:
process(rst,state)
begin
ifrst='0'thenlight<="11011011";
ELSE
casestateis
whengreen_red=>light<="11011011";
nextstate<=yellow_red;
data2<=0;
data3<=4;
data0<=0;
data1<=4;
whenyellow_red=>light<="10111011";
nextstate<=red_green;
data2<=2;
data3<=4;
data0<=1;
data1<=9;
whenred_green=>light<="01111110";
nextstate<=red_yellow;
data2<=0;
data3<=4;
data0<=0;
data1<=4;
whenred_yellow=>light<="01111101";
nextstate<=green_red;
data2<=2;
data3<=9;
data0<=3;
data1<=4;
endcase;
endif;
endprocess;
time:
process(rst,clk)
begin
ifrst='0'then
sec0<=3;sec1<=4;sec2<=2;sec3<=9;state<=green_red;
elsif(rising_edge(clk))then
if(((sec0=0)and(sec1=0))or((sec2=0)and(sec3=0)))then
state<=nextstate;
sec2<=data2;sec3<=data3;
sec0<=data0;sec1<=data1;
else
sec1<=sec1-1;
sec3<=sec3-1;
if((sec2/=0)and(sec3=0))then
sec2<=sec2-1;
sec3<=9;
endif;
if((sec0/=0)and(sec1=0))then
sec0<=sec0-1;
sec1<=9;
endif;
endif;
endif;
endprocess;
process(sec0)
begin
casesec0is
WHEN0=>LED7S0<="1000000";
WHEN1=>LED7S0<="1111001";
WHEN2=>LED7S0<="0100100";
WHEN3=>LED7S0<="0110000";
WHENothers=>LED7S0<="1111111";
ENDcase;
ENDprocess;
process(sec1)
begin
casesec1is
WHEN0=>LED7S1<="1000000";
WHEN1=>LED7S1<="1111001";
WHEN2=>LED7S1<="0100100";
WHEN3=>LED7S1<="0110000";
WHEN4=>LED7S1<="0011001";
WHEN5=>LED7S1<="0010010";
WHEN6=>LED7S1<="0000010";
WHEN7=>LED7S1<="1111000";
WHEN8=>LED7S1<="0000000";
WHEN9=>LED7S1<="0010000";
ENDcase;
ENDprocess;
process(sec2)
begin
casesec2is
WHEN0=>LED7S2<="1000000";
WHEN1=>LED7S2<="1111001";
WHEN2=>LED7S2<="0100100";
WHEN3=>LED7S2<="0110000";
WHENothers=>LED7S2<="1111111";
ENDcase;
ENDprocess;
process(sec3)
begin
casesec3is
WHEN0=>LED7S3<="1000000";
WHEN1=>LED7S3<="1111001";
WHEN2=>LED7S3<="0100100";
WHEN3=>LED7S3<="0110000";
WHEN4=>LED7S3<="0011001";
WHEN5=>LED7S3<="0010010";
WHEN6=>LED7S3<="0000010";
WHEN7=>LED7S3<="1111000";
WHEN8=>LED7S3<="0000000";
WHEN9=>LED7S3<="0010000";
ENDcase;
ENDprocess;
ENDBEHAVE;
五、引脚锁定
CLK_in为4MHz,接芯片引脚83脚,RST为复位端,接芯片引脚1脚;
Light0连接芯片引脚56;Light1连接芯片引脚57;Light2连接芯片引脚58;
Light4连接芯片引脚54;Light5连接芯片引脚55;Light6连接芯片引脚50;
Light7连接芯片引脚51;Light8连接芯片引脚52。
LED7S01~LED7S06分别接芯片引脚69、70、73、74、75、76、77;
LED7S10~LED7S16分别接芯片引脚60、61、63、64、65、67、68;
LED7S20~LED7S26分别接芯片引脚18、20、21、22、24、25、27;
LED7S30~LED7S36分别接芯片引脚9、10、11、12、15、16、17。
6、结果及分析
当按下复位键时,程序开始运行初值为主干道30秒绿灯亮,支干道35秒红灯亮,当主干道30秒绿灯亮完时下一个状态为主干道黄灯亮5秒,支干道任然为红灯亮。
下一个状态为支干道变成绿灯亮20秒,主干道红灯亮25秒,当支干道绿灯亮完时下一状态为黄灯亮5秒,主干道任为红灯亮。
接下来就是返回到上面的主干道30秒绿灯亮,支干道35秒红灯亮,反复运行着。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 系统 设计 课程设计 刘云飞