EDA课程设计交通灯文档格式.docx
《EDA课程设计交通灯文档格式.docx》由会员分享,可在线阅读,更多相关《EDA课程设计交通灯文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
![EDA课程设计交通灯文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/28/e81f1a6c-aa70-4ab3-9604-456d0530f882/e81f1a6c-aa70-4ab3-9604-456d0530f8821.gif)
architectureoneoffenpingqiis
signalcounter:
integerrange0to4999999;
Begin
process(CLR,CLK)
if(CLK='
1'
andCLK'
event)then
ifCLR='
then
counter<
=0;
elsifcounter=4999999then
q<
=notq;
else
=counter+1;
endif;
endif;
endprocess;
endone;
2、开关控制部分的ASM图
i、j、k、分别代表开关状态;
1表示开关闭合,为高电平;
0表示开关断开为低电平。
当开关处于不同的状态时,分别给变量G不同的值,用来实现控制通行时间。
x<
=i&
j&
k;
cnt:
process(clk)
variables:
integerrange0to49;
variableg:
variablenclr,en:
bit;
ifx<
="
001"
theng:
=29;
elsifx<
010"
=39;
100"
=49;
elseg:
3、信号灯转换控制部分的ASM图
Rm、Ym、Gm分别表示主干道红、黄、绿;
Rf、Yf、Gf分别表示支道红、黄、绿;
S表示灯亮的时间;
nclr是计时器的清零端,低电平有清零;
en是计时器的使能端,高电平使能。
if(clk'
eventandclk='
)then
ifnclr='
0'
thens:
elsifen='
=s;
elses:
=s+1;
casestateis
whena=>
rm<
='
;
ym<
gm<
rf<
yf<
gf<
ifs=gthen
state<
=b;
nclr:
en:
Else
state<
=a;
3、状态装换
(1)开始设置为支路为绿灯、主路为红灯,持续时间为30秒;
(2)30秒后,支路由绿灯变为黄灯,主路红灯不变,持续时间为4秒;
(3)4秒后,支路由黄灯变为红灯,主路由红灯变为绿灯,持续时间30秒;
(4)30秒后,支路红灯不变,主路由绿灯变为黄灯,持续时间为4秒;
(5)4秒后,支路由红灯变为绿灯,主路由黄灯变为绿灯,持续时间为30秒;
随时间,主、支系统依次循环,可以自动切换,红绿灯时间间隔可以手动设置,以适应不同需求。
whenb=>
ifs=3then
=c;
whenc=>
=d;
whend=>
endcase;
4、总原理图
1、电路连接图
2、分频器模块
3、交通灯控制器模块
4、波形仿真
仿真图一
仿真图二
5、硬件仿真:
为了能对所设计的红绿灯交通灯控制器电路进行硬件测试,应将其输入输出信号锁定在开发系统的目标芯片引脚上,并重新编译,然后对目标芯片进行编程下载,完成红绿灯交通灯控制器的最终开发,其硬件测试示意图如图6-62。
不失一般性,本设计选用的EDA开发平台为GW48电路模式为,选择目标器件为Cylone系列EP1C3T144C8芯片。
锁定引脚时将CLK接至clock2(接受1kHz的时钟频率);
内部自复位信号同键3(PIO8)相连;
手动、自动切换钮(1:
自动、0手动)接键4(PIO9);
:
红绿灯状态切换键(每按一次就切换一个状态)接键5(PIO13);
R1接发光二级管D8(PIO23)用于指示南北路口红灯;
G1接发光二级管D7(PIO22)用于指示南北路口绿灯;
Y1接发光二级管D6(PIO21)用于指示南北路口黄灯;
R0接发光二级管D5(PIO20)用于指示东西路口红灯;
G0接发光二级管D4(PIO19)用于指示东西路口绿灯;
Y0接发光二级管D3(PIO18)用于指示东西路口红灯;
NEXT_S接发光二级管D1(PIO16)用于转态指示。
引脚锁定完成后,重新对该工程进行编译,综合适配后将配置数据下载入GW48实验平台的FPGA中(有关CLK等引脚在FPGA芯片EP1C6Q240C8引脚中的序号,请参见EDA书后的附录的附表)。
选模式5,情况一(红绿灯间隔30秒,黄绿间隔5秒),设定最右边三个灯(从右到左)为支路灯:
红灯、绿灯、黄灯;
紧接着为主路:
红灯、绿灯、黄灯(6号灯已坏顺延到7号灯);
仿真图片如下:
图一:
支路绿灯,主路红灯
图二:
支路黄灯,主路红灯
图三:
支路红灯,主路绿灯
图四:
支路红灯,主路黄灯
图五:
五、实验目的
1.熟练掌握VHDL语言和MAX+PLUSII软件的使用;
2.理解状态机的工作原理和设计方法;
3.掌握利用EDA工具进行自顶向下的电子系统设计方法
六、实验步骤
1.将实验系统上RS232接口与计算机串行口相连。
2.用VHDL将两个方案的源程序输入MAX+PLUSII软件中。
3.编译程序并进行引脚分配,最后将程序下载到器件中去。
七、结果分析
本次课程设计基本上满足了任务的设计要求,可以通过开关手动设置主干道和支道每次通行的时间分别为为30s、40s、50s,从而控制通行时间长短的转换;
各个状态之间的转化及各个状态的通行时间也可以满足“主干道和支干道自动循环。
主干道和支道每次通行的时间为30s,而在两个状态交换过程出现的"
主黄,支红"
和"
主红,支黄"
状态,持续时间都为4s”的设计要求。
但是设计也存在一定的缺陷,设计只能完成当开关i,j,k只有一个为高电平时使交通灯正常工作,,其他状态时定义G=0,这时交通灯不能正常工作。
例如当X=I&
J&
K=’101’,时,其波形仿真各个状态时间通行时间长短会出现差错,如下图
然而,这种状况在实际生活中是不允许出现的。
其解决方法是:
在各个when语句后增加一条if判断语句,判断如果g等于0,则保持原状态,如果g不等于0,则执行原来方案中的状态转换语句。
八、硬件要求
主芯片EPF10K10LC84-4;
6个LED灯(红、黄、绿各两个);
四个开关。
九、心得体会
通过课程设计能提高学生对所学知识的综合应用能力,能全面检查并掌握所学内容,在这学期的课程设计中,在收获知识的同时,还收获了阅历,收获了成熟,在此过程中,我们通过查找资料,请教老师,以及不懈的努力,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。
更重要的是,我们学会了很多学习的方法。
通过本学期的这次的课程设计与几次实验,我学会了VHDL语言的一些基本用法,应用了原来不会或者不熟练的句型,如process进程,也学会了一些基本功能的实现方法,如分频,状态控制等。
虽然这次实验遇到的问题不少,但是在老师以及同学的帮助下,我都顺利地解决了,并为将来的实践积累了宝贵的经验和教训。
通过经常和老师、同学交流,以便及时发现自己在实验中的纰漏和不足,促进进步。
EDA设计中程序调试最为重要,我在编完各模块程序之后,编译查错最初有很多错误,有输入错误,语法错误,通过反复的修改最终通过了编译。
必须注意工程名和实体名的一致,在仿真无误的情况下把程序下载到是芯片中,进行硬件的调试。
逻辑正确和仿真真确并不代表着实际实验的正确,通常情况下,要适当地调整逻辑以适应硬件。
要特别注意仿真时出现的毛刺和偏差,到底是由于仿真设置不合理还是仿真结果确实有问题。
这次课程设计虽然结束了,也留下了很多遗憾,因为由于时间的紧缺和许多课业的繁忙,并没有做到最好,但是,最起码我们没有放弃,它是我们的骄傲!
相信以后我们会以更加积极地态度对待我们的学习、对待我们的生活。
实验的顺利完成,与老师的热心指导是分不开的,最后十分感谢胡辉老师的认真负责的工作,让我受益匪浅!
十、参考文献
《EDA技术与实验》机械工业出版社李国洪、胡辉、沈明山
《EDA技术实验与课程设计》清华大学出版社曹新燕、周凤臣、聂春燕
《EDA技术综合应用实例与分析》西安电子科技大学出版社谭会生、翟遂春
附件
1、顶层设计代码
libraryieee;
useJiaoTongDengis
port(clr,clk,i,j,k:
instd_logic;
rm,ym,gm,rf,yf,gf:
outstd_logic;
recount:
NEXT_S:
outstd_logic);
endentityJiaoTongDeng;
architectureJTDofJiaoTongDengis
componentfenpingqi
port(CLR,CLK:
q:
bufferstd_logic);
endcomponent;
componentkongzhi
port(clk,i,j,k:
componentcount_down
port(clk,reset,ena_1Hz,recount:
instd_logic;
load:
instd_logic_vector(7downto0);
seg7:
outstd_logic_vector(15downto0);
next_state:
outstd_logic);
signalQ,signalrecount_1,signalnext_state_1:
std_logic;
begin
u1:
fenpingqiportmap(CLR=>
clr,CLK=>
clk,q=>
Q);
u2:
kongzhiport
map(i=>
i,j=>
j,k=>
k,clk=>
Q,rm=>
rm,ym=>
ym,gm=>
gm1,rf=>
rf,
yf=>
yf,gf=>
gf);
u3:
count_down
portmap(RE,CLK,ena_1Hz_1,recount_1,load,S,next_state_1);
NEXT_S<
=next_state_1;
endarchitectureJTD;
分频器代码
usefenpingqiis
port(CLR,CLK:
instd_logic;
endfenpingqi;
3、交通灯控制器代码
usekongzhiis
port(clk,i,j,k:
endkongzhi;
architecturearcofkongzhiis
typestate_typeis(a,b,c,d);
signalstate:
state_type;
signalx:
std_logic_vector(2downto0);
if(clk'
ifnclr='
ifs=gthen
endprocesscnt;
endarc;
4、两位七段译码输出显示代码
LIBRAYRIEEE;
USEcount_downIS
port(reset,clk,ena_1Hz,recount:
end;
ARCHITECTUREBEHAVIORofcount_downIS
signalcnt_ff:
std_logic_vector(7downto0);
count:
process(clk,reset)
begin
if(reset='
)then
cnt_ff<
00000000"
seg7<
0000000000000000"
elsif(clk'
ifena_1Hz='
if(recount='
=load-1;
else
=cnt_ff-1;
caseconv_integer(cnt_ff)is
--dtgfedcba(十位)dtgfedcba(个位)
endcase;
next_state<
='
whencnt_ff=1else'
endBEHAVIOR;