EDA实训Word下载.docx
- 文档编号:21257447
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:13
- 大小:592.97KB
EDA实训Word下载.docx
《EDA实训Word下载.docx》由会员分享,可在线阅读,更多相关《EDA实训Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
④红、绿、黄灯显示的次序应符合实际交通道路控制的要求。
1.2方案比较
方案一:
此方案需要设计分频器clkgen模块和控制contr模块各一块,灯的模块只设计一个模块,没有将黄灯和红绿灯分开。
此方案需要定义一个12位的reg型变量来控制红黄绿三色LED灯,其中实训的技术要求需要黄灯实现倒计时外还要闪烁,加上闪的功能,此模块在编程上比较不容易设计。
方案二:
此方案同样需要设计分频器clkgen模块和控制contr模块各一块,跟方案一的区别是:
灯的模块分了两个子模块,一个子模块专门用来控制红、绿灯的,即为rglight模块,这个子模块通过定义一个8位的reg型变量来控制红、绿LED灯;
另外一个子模块通过定义一个4位的reg型变量来控制黄灯,即为ylight模块。
此方案将黄灯和红绿灯分开设计,方便实现黄灯的闪烁功能。
本次实训我所采取的是方案二。
1.3方案论证
1.3.1总体思路
本次实训所要实现的是交通灯的控制系统的设计,通过分析实训技术要求,得出完成实训需要设计的包括三个部分。
其一,分频器的设计即clkgen模块。
这个模块是把EDA实训仪主板提供的20MHz的主频经20000000分频后,得到电路所需的1秒脉冲。
其二,控制模块即contr模块。
这个模块主要是实现一个99秒倒计时功能,所以设计成一个十进制减法计数器来实现道路东西和南北通行和禁止的倒计时时间。
其三,灯的控制模块部分,分两个子模块实现,rglight模块是红绿灯控制模块,ylight模块是黄灯控制模块,这两个模块都是靠读取contr模块的时间来实现相应的控制功能的。
当contr模块的倒计时减到0时,则数码管输出倒计时的初始化时间,交通灯进入另外一种状态。
我们可以通过改变rglight模块中的初始化时间来调节红绿灯的倒计时来完善各个时间断的交通情况。
1.3.2设计方案
原理图
2.各个模块程序的设计
1)分频器模块:
分频器实现的是将高频脉冲信号转换成低频的脉冲信号,用于触发控制器、计数器和扫描显示电路。
该分频器实现的是二千万分频脉冲信号的产生。
a.设计模块截图
b.设计程序
moduleclkgen(clk,cout);
inputclk;
reg[24:
0]q;
outputregcout;
always@(posedgeclk)
begin
if(q==20000000-1)q=0;
elseq=q+1;
if(q==20000000-1)cout=1;
elsecout=0;
end
endmodule
2)黄绿灯的控制模块
a.设计模块截图
b.程序部分
modulerglight(clk,clrn,yzflag,flag,LED,t1,t2,q1,q2);
inputclk,clrn;
input[7:
0]q1,q2;
outputregyzflag;
outputreg[1:
0]flag;
outputreg[7:
0]LED;
0]t1,t2;
reg[7:
0]rtime,gtime,ytime,rtime1='
h20,gtime1='
h16;
reg[1:
0]z;
initialbeginrtime='
h20;
gtime='
ytime='
h03;
yzflag=0;
z=0;
end
always@(posedgeclkornegedgeclrn)
begin
if(~clrn)yzflag=1;
else
begin
if(q1==0||q2==0)yzflag=1;
else
yzflag=0;
rtime=rtime1;
gtime=gtime1;
end
always@(posedgeyzflagornegedgeclrn)
begin
if(~clrn)
t1=rtime;
t2=gtime;
LED='
b01100110;
flag=2;
z=z+1;
case(z)
0:
begint1=rtime;
1:
begint1=ytime;
t2=ytime;
b00100010;
flag=0;
2:
begint1=gtime;
t2=rtime;
b10011001;
3:
b10001000;
flag=1;
default:
endcase
3)黄灯模块
b.程序部分
moduleylight(flag,clk,clrn,q1,q2,LED_h);
input[7:
input[1:
outputreg[3:
0]LED_h;
if(~clrn)
LED_h='
b0000;
if(flag==0)//用flag来标记黄灯处于那种工作方式
begin
if(q1=='
h03&
&
q2=='
h03)LED_h='
b1010;
if(q1=='
h02&
h02)LED_h='
h01&
h01)LED_h='
h00&
h00)LED_h='
end
if(flag==1)
b0101;
endmodule
4)控制模块
modulecontr(tiaoshi,en,clk,yzflag,t1,t2,q1,q2);
inputclk,yzflag,en,tiaoshi;
always@(posedgeclk^tiaoshiorposedgeyzflagorposedgeen)
if(en)beginq1=q1;
q2=q2;
if(yzflag)beginq1=t1;
q2=t2;
else
begin
if(q1==0)q1='
h99;
elsebeginq1=q1-1;
if(q1[3:
0]>
='
ha)q1[3:
0]=9;
if(q2==0)q2='
elsebeginq2=q2-1;
if(q2[3:
ha)q2[3:
end
3.制作与调试过程
1)首先,在设计之前应该根据要求想好交通灯的整个设计流程图,交通灯分红绿黄,且黄灯还要实现闪烁,这是需要注意的。
2)对各个小模块的程序进行编写和调试
3)各个小模块的程序基本调试完毕之后,接着就要从整个交通灯系统的角度去对一些细节部分进行修改得以完善
4.结论
本次实训我采取的是方案二的设计。
因为方案一在实现黄灯闪这个功能上比较困难,而方案二用两个子模块来实现,一个子模块控制红绿灯,定义一个8位的reg的变量来控制8个LED灯;
一个子模块专门控制黄灯,定义一个4位的reg的变量来控制4个LED灯,就比较容易实现了。
5.实训心得体会
通过这次EDA实训,我学会了如何设计一个交通灯控制电路并且提前成功验收。
其中,实训过程中让我对EDA软件QuartusⅡ有了更好的了解,不仅提高了我的编程能力,同时还让我对交通灯控制系统也进一步认识并加深了学习。
实训当中,我遇到许多问题,首先是在方案上的选择,通过跟同学们的讨论研究,我本来要设计一个三个模块的交通灯电路,但由于在设计灯模块上编程出不得,所以才换了另外一个方案,就是本实训所提的第二方案。
这个方案在灯的模块上分出了两个模块,方便了黄灯闪烁的设计,虽然在连线上比较麻烦,但是最终成功调试出来。
然后就是在准备验收时候出现了一个小问题,我在定义case变量时候忽略了定义为reg型的,导致在第一天下午要提前验收却验收不了。
最后我通过检查整个工程的内容,找出并改正成功验收了。
实训完成了,在此感谢老师的指导和提前帮忙验收。
这次实训很好地完成,期待下一个实训的到来!
6.参考文献
【1】江国强教授,《EDA技术与应用》(第三版);
电子工业出版社
【2】江国强教授,《新编数字逻辑电路》;
北京邮电大学出版社
【3】陈炳权,曾庆辉,《EDA技术实用教程》;
浙江大学出版社。
附录:
仿真波形图(部分模块)
程序清单
c.黄绿灯波形仿真
c黄灯模块波形仿真
控制模块仿真波形
分频器
5)黄绿灯的控制模块
6)黄灯模块
7)控制模块
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 实训