交通灯实验报告.docx

上传人:b****4 文档编号:3503575 上传时间:2022-11-23 格式:DOCX 页数:12 大小:64.77KB
下载 相关 举报
交通灯实验报告.docx_第1页
第1页 / 共12页
交通灯实验报告.docx_第2页
第2页 / 共12页
交通灯实验报告.docx_第3页
第3页 / 共12页
交通灯实验报告.docx_第4页
第4页 / 共12页
交通灯实验报告.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

交通灯实验报告.docx

《交通灯实验报告.docx》由会员分享,可在线阅读,更多相关《交通灯实验报告.docx(12页珍藏版)》请在冰豆网上搜索。

交通灯实验报告.docx

交通灯实验报告

实验报告

 

 

名称:

十字路口交通管理信号灯

姓名:

岳成

学号:

5100309669

班级:

F1003021

日期:

2012.4.4

 

一、实验目的

1、了解交通灯的状态转换规律,学会用硬件描述语言来建立交通灯的模块。

2、利用该软件进行可编程逻辑器件设计,完成交通灯的逻辑仿真功能。

3、使用编译器将设计实现,下载到JDEE-10实验箱上进行调试和验证所设计的十字路口交通管理信号灯的功能。

二、实验要求

1、用两组点阵分别表示主干道上和支干道上的红绿灯。

红色点阵点亮时,表示红灯;绿色点阵点亮时,表示绿灯;红色和绿色点阵同时点亮时,表示黄灯。

2、用2组数码管(共计4位)显示主、支路交通信号灯的倒计时。

3、主干道上绿灯亮的时间为8秒,闪烁3秒,黄灯亮的时间为2秒,红灯亮的时间为11秒。

支干道上绿灯亮的时间为6秒,闪烁3秒,黄灯亮的时间为2秒,红灯亮的时间为13秒。

4、主干道上绿灯亮和闪烁、黄灯亮共13秒,这时支干道上的红灯一直亮着。

支干道上的绿灯亮6秒、闪烁3秒及黄灯亮2秒,主干道上的红灯亮11秒。

5、主干道上绿灯亮的时间为8秒,数码管显示起始时间7秒,然后依次递减至0,绿灯闪烁3秒,黄灯亮的时间为2秒(这段时间数码管不显示)。

支干道红灯亮的时间为13秒,数码管显示起始时间为12秒,然后依次递减至0。

6、支干道上绿灯亮的时间为6秒,数码管显示起始时间5秒,然后依次递减至0,绿灯闪烁3秒,黄灯亮的时间为2秒(这段时间数码管不显示),主干道红灯亮的时间为11秒,数码管显示起始时间为10秒,然后依次递减至0。

三、设计方案

1、对频率输入的考虑

交通灯等所需的频率只有两种:

1Hz和2Hz。

利用4M频率经过20、21次分频后可得到。

2、对交通灯控制部分的考虑

利用24个状态作为一个周期,可采用真值表法进行列写。

3、建一个七段译码的模块益以及一个点阵显示模块,根据真值表,确立24个状态。

四、程序设计

1、设计思路:

首先,建一个24进制的计数器,每一次计数间隔均为一秒。

对每一秒确立主干道以及支干道上点阵的状态(红灯亮、绿灯亮、绿灯闪烁、黄灯亮)、以及两组数码管上的显示时数(具体数字或熄灭)。

其次进行分步实现:

对于点阵部分,以主干道交通灯为例,输入有时钟信号、二十四进制计数器的输出、红灯信号、绿灯信号、闪烁信号以及发光信号(常亮),输出有红灯显示和绿灯显示两部分。

建立if语句的逻辑关系,根据输入产生相应的输出。

如果输入信号表明此时为红灯显示时间,则输出部分红灯亮而绿灯灭;如果输入信号表明此时为黄灯显示时间,则输出部分红等绿灯都需要点亮;如果输入信号表明此时为红灯闪烁,则还需借助2Hz的时钟信号,当时钟为高电平,绿灯灭;反之则绿灯亮。

对于数码管部分,以主干道交通灯为例,输入有二十四进制计数器的输出和2位时钟信号,因为主干道交通灯倒计时的状态仅仅与当前处在24个状态的哪一个相关。

数码管采用扫描方式,因为最多需要同时显示四位,则需要2位不同频率的高频的时钟信号。

举例来说,当2种信号都为高电平是,则显示个位数据,同时选定第一个数码管,以此类推。

最后对于本次实验暂不使用的二极管接上高电平使其熄灭。

2、程序清单:

24进制计数器count3.tdf

subdesign count3

clk:

input;

q[4..0]:

output;

variable

count[4..0]:

dff;

begin

count[].clk=clk;

if count[].q==23 then count[].d=0;

else count[].d=count[].q+1;

end if;

q[]=count[];

end;

中央处理模块 main.tdf

subdesign main

incount[4..0]:

input;

state[2..0]:

output;

out1[3..0]:

output;

out2[3..0]:

output;

out3[3..0]:

output;

out4[3..0]:

output;

tringle:

output;

digselect1:

output;%总共要点亮四个数码管,两个作为主干道,两个作为支干道%

digselect2:

output;

begin 

table

incount[4..0]=>state[2..0],out1[3..0],out2[3..0],out3[3..0],out4[3..0],tringle,digselect1,digselect2;

h"0"=>1,h"0",h"7",h"1",h"2",0,1,1;

h"1"=>1,h"0",h"6",h"1",h"1",0,1,1;

h"2"=>1,h"0",h"5",h"1",h"0",0,1,1;

h"3"=>1,h"0",h"4",h"0",h"9",0,1,1;

h"4"=>1,h"0",h"3",h"0",h"8",0,1,1;

h"5"=>1,h"0",h"2",h"0",h"7",0,1,1;

h"6"=>1,h"0",h"1",h"0",h"6",0,1,1;

h"7"=>1,h"0",h"0",h"0",h"5",0,1,1;

h"8"=>2,h"0",h"0",h"0",h"4",1,0,1;%主干道绿灯开始闪烁%

h"9"=>2,h"0",h"0",h"0",h"3",1,0,1;

h"A"=>2,h"0",h"0",h"0",h"2",1,0,1;

h"B"=>3,h"0",h"0",h"0",h"1",0,0,1;%黄灯亮%

h"C"=>3,h"0",h"0",h"0",h"0",0,0,1;

h"D"=>4,h"1",h"0",h"0",h"5",0,1,1;%主干道红灯亮%

h"E"=>4,h"0",h"9",h"0",h"4",0,1,1;

h"f"=>4,h"0",h"8",h"0",h"3",0,1,1;

h"10"=>4,h"0",h"7",h"0",h"2",0,1,1;

h"11"=>4,h"0",h"6",h"0",h"1",0,1,1;

h"12"=>4,h"0",h"5",h"0",h"0",0,1,1;

h"13"=>5,h"0",h"4",h"0",h"0",1,1,0;

h"14"=>5,h"0",h"3",h"0",h"0",1,1,0;

h"15"=>5,h"0",h"2",h"0",h"0",1,1,0;

h"16"=>6,h"0",h"1",h"0",h"0",0,1,0;

h"17"=>6,h"0",h"0",h"0",h"0",0,1,0;

end table;

end;

数码管编码模块 digselector.tdf

subdesign digselector

digselect1:

input;%主干道交通灯显示使能信号%

digselect2:

input;%支干道交通灯显示使能信号%

clk:

input;%时钟输入%

    clk1:

input;

digin1[3..0]:

input;%主干道十位数字%

digin2[3..0]:

input;%主干道各位数字%

digin3[3..0]:

input;%支干道十位数字%

digin4[3..0]:

input;%支干道个位数字%

out[3..0]:

output;%四个数码管的使能输入%

digout1[3..0]:

output;%主干道的数字输入%

begin

if !

clk and !

clk1 and digselect1 then 

   out[0]=vcc;digout1[3..0] = digin1[3..0];

elsif !

clk and clk1 and digselect1 then 

   out[1]=vcc;digout1[3..0] = digin2[3..0];

elsif clk and !

clk1 and digselect2 then 

   out[2]=vcc;digout1[3..0] = digin3[3..0];

elsif clk and clk1 and digselect2 then

   out[3]=vcc;digout1[3..0] = digin4[3..0];    

end if;

end;

8段译码器:

7segment.tdf

subdesign 7segment

i[3..0]:

input;

a,b,c,d,e,f,g,h:

output;

begin

table

i[3..0]=>a,b,c,d,e,f,g,h;

h"0"=>0,0,0,0,0,0,1,1;

h"1"=>1,0,0,1,1,1,1,1;

h"2"=>0,0,1,0,0,1,0,1;

h"3"=>0,0,0,0,1,1,0,1;

h"4"=>1,0,0,1,1,0,0,1;

h"5"=>0,1,0,0,1,0,0,1;

h"6"=>0,1,0,0,0,0,0,1;

h"7"=>0,0,0,1,1,1,1,1;

h"8"=>0,0,0,0,0,0,0,1;

h"9"=>0,0,0,0,1,0,0,1;

end table;

end;

点阵显示编码模块 state.tdf

subdesign state

instate[2..0]:

input;

inputclk[2..0]:

input;

row[8..1]:

output;

outstate[16..1]:

output;

green:

output;

red:

output;

begin

case instate[] is

when 1 =>

table

inputclk[2..0]=>row[8..1],outstate[16..1],green,red;%第一个状态,主干道绿灯亮,支干道红灯亮%

h"0"=>h"1",h"ffff",0,0;

h"1"=>h"2",h"fffb",0,1;

h"2"=>h"4",h"ffff",0,0;

h"3"=>h"8",h"ffdd",1,0;

h"4"=>h"10",h"ffff",0,0;

h"5"=>h"20",h"fffb",0,1;

h"6"=>h"40",h"ffff",0,0;

h"7"=>h"80",h"ffff",0,0;

end table;

when 2 =>

table

inputclk[2..0]=>row[8..1],outstate[16..1],green,red;%第二个状态,主干道绿灯闪烁,支干道红灯亮%

h"0"=>h"1",h"ffff",0,0;

h"1"=>h"2",h"fffb",0,1;

h"2"=>h"4",h"ffff",0,0;

h"3"=>h"8",h"ffdd",1,0;

h"4"=>h"10",h"ffff",0,0;

h"5"=>h"20",h"fffb",0,1;

h"6"=>h"40",h"ffff",0,0;

h"7"=>h"80",h"ffff",0,0;

end table;

when 3 =>

table

inputclk[2..0]=>row[8..1],outstate[16..1],green,red;%第三个状态,主干道黄灯亮,支干道红灯亮%

h"0"=>h"1",h"ffff",0,0;

h"1"=>h"2",h"fffb",0,1;

h"2"=>h"4",h"ffdd",1,1;

h"3"=>h"8",h"ffff",0,0;

h"4"=>h"10",h"ffff",0,0;

h"5"=>h"20",h"fffb",0,1;

h"6"=>h"40",h"ffff",0,0;

h"7"=>h"80",h"ffff",0,0;

end table;

when 4=>

table

inputclk[2..0]=>row[8..1],outstate[16..1],green,red;%第四个状态,主干道红灯亮,支干道绿灯亮%

h"0"=>h"1",h"ffff",0,0;

h"1"=>h"2",h"fff7",1,0;

h"2"=>h"4",h"ffff",0,0;

h"3"=>h"8",h"ffff",0,0;

h"4"=>h"10",h"ffdd",0,1;

h"5"=>h"20",h"fff7",1,0;

h"6"=>h"40",h"ffff",0,0;

h"7"=>h"80",h"ffff",0,0;

end table;

when 5=>

table

inputclk[2..0]=>row[8..1],outstate[16..1],green,red;%第五个状态,主干道红灯亮,支干道绿灯闪烁.%

h"0"=>h"1",h"ffff",0,0;

h"1"=>h"2",h"fff7",1,0;

h"2"=>h"4",h"ffff",0,0;

h"3"=>h"8",h"ffff",0,0;

h"4"=>h"10",h"ffdd",0,1;

h"5"=>h"20",h"fff7",1,0;

h"6"=>h"40",h"ffff",0,0;

h"7"=>h"80",h"ffff",0,0;

end table;

when 6=>

table

inputclk[2..0]=>row[8..1],outstate[16..1],green,red;%第六个状态,主干道红灯亮,支干道黄灯亮%

h"0"=>h"1",h"ffff",0,0;

h"1"=>h"2",h"ffef",1,1;

h"2"=>h"4",h"ffff",0,0;

h"3"=>h"8",h"ffff",0,0;

h"4"=>h"10",h"ffdd",0,1;

h"5"=>h"20",h"ffef",1,1;

h"6"=>h"40",h"ffff",0,0;

h"7"=>h"80",h"ffff",0,0;

end table;

end case;

end;

输出模块 expand.tdf

subdesign expand

instate[16..1]:

input;

green:

input;

red:

input;

tringle:

input;

inputclk:

input;   %用来闪烁%

dataout1[16..1]:

output;%输出红色%

dataout2[16..1]:

output;%输出绿色%

begin

if tringle and green and !

red and inputclk then  dataout1[16..1]=h"ffff";

      dataout2[16..1]=instate[16..1];

elsif tringle and green and !

red and !

inputclk then dataout1[16..1]=h"ffff";

                            dataout2[16..1]=h"ffff";

elsif tringle and !

green and red then dataout1[16..1]=instate[16..1];

 dataout2[16..1]=h"ffff";

elsif tringle and !

green and !

red then dataout1[16..1]=h"ffff";

dataout2[16..1]=h"ffff";

elsif !

tringle and green and !

red then dataout1[16..1]=h"ffff";

                           dataout2[16..1]=instate[16..1];

elsif !

tringle and !

green and red then dataout1[16..1]=instate[16..1];

  dataout2[16..1]=h"ffff";

elsif !

tringle and green and red then dataout1[16..1]=instate[16..1];

 dataout2[16..1]=instate[16..1];

elsif !

tringle and!

green and !

red then dataout1[16..1]=h"ffff";

   dataout2[16..1]=h"ffff";

end if;

end;3、顶层逻辑设计图(管脚未锁定)

 

五、调试过程

应该说调试过程中遇到的最大困难就是让四位数码管正常显示了。

虽然在之前的实验二中有遇到过数码管,但当时只是随着教材依样画葫芦,一知半解,范例也相对简单,只要显示两位即可。

当时自己第一遍做的数码管也只能简单显示两位数字,一用上四位,立刻就乱套了,只有在主/支干道上亮黄灯即单独显示两位数字才正确。

通过一遍又一遍翻阅教材,在了解数码管扫描显示方式后,我明白了只有一位高频时钟信号对于显示4位数字是不够的。

所以我加了频率相近的高频时钟信号,使得在短时期内能顺利扫描4位。

之后的调试结果十分顺利,包括点阵的显示。

虽然在编译过程中,遇到错误,但基本能按照系统提示及时找到错误的根源并改正。

六、实验心得

在数字电路实验课上,我们学习了运用AHDL语言进行简单的逻辑器件编程,并对其语法、功能、应用范围以及其与软件之间的关系有了初步的了解。

俗话说,师傅领进门,修行在自身。

相比实验教材上的三个验证性实验,大作业要求的设计部分有一定难度。

考虑到想进一步提升对LED、点阵以及数码管的运用,我选择了实验四——十字路口交通管理信号灯的控制。

实验的基本要求与增强功能在此不在赘述。

虽然在实践中碰了不少壁,走了许多弯路,但回过头来,觉得收益颇多,不论是纠错能力还是思维的严密性。

是实践出真知,对于工科学生,在求学阶段多动手,多思考,哪怕是多遇到点困难也是非常重要的。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1