数字电子技术实验报告之交通灯设计.doc

上传人:飞****2 文档编号:51987905 上传时间:2022-10-20 格式:DOC 页数:25 大小:670.50KB
返回 下载 相关 举报
数字电子技术实验报告之交通灯设计.doc_第1页
第1页 / 共25页
数字电子技术实验报告之交通灯设计.doc_第2页
第2页 / 共25页
点击查看更多>>
资源描述

《数字电子技术实验报告之交通灯设计.doc》由会员分享,可在线阅读,更多相关《数字电子技术实验报告之交通灯设计.doc(25页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、数 字 电 子 技 术 实 验 报 告交通灯的设计姓名:学号:学院:专业:班级:指导老师: 目录一、 实验目的与要求二、 实验设计三、 调试及实验结果四、 附页一、 实验目的及要求实验目的:1. 熟练掌握verilog语言及Quartus软件的使用。2. 考验和培养学生独立自主综合设计的能力。实验要求:1. 设计一个十字路口的四个交通灯的设计。2. 注意红灯时间23秒、黄灯时间3秒、绿灯时间17秒。3. 时间倒计时功能需在数码管中显示出来。实验扩展:1. 分频:因为实验要求秒数的倒计时及控制,故要将高频率进行分频得到1khz和1hz的频率。分频的实现2. 数码管动态扫描: 倒计时的显示要求有四

2、位同时显示,而以前只进行过一位显示。所以该实验需要数码管的动态扫描。二、 实验设计总体思路:先实现由高频率分频得到1khz和1hz的频率,然后实现在1hz的频率下交通灯状态的转换,同时倒计时功能也开始运行。然后在1khz的频率下进行动态扫描,再加上数码管的七段显示即可。高频的分频得到1khz频率得到1hz的频率数码管的动态扫描进行交通灯状态的转换和倒计时的实验倒计时的显示、灯的颜色转变交通灯的状态设计:每个灯有三种状态:红、绿、黄。又因为每个灯由2个开关来控制,所以四个灯设定四个变量 sn1:0、ns1:0、ew1:0、we1:0分别代表南北、东西方向的灯。其中01代表绿灯,10代表红灯,11

3、代表黄灯。灯状态的循环设计:第一个状态(state0): 绿 红 红 :该状态维持17s,we红灯23s倒计时到 绿 6s,sn绿灯17s倒计时到0s。 第二个状态(state1):黄 红 红 :该状态维持3s,we红灯倒计时6s到 黄 3s,sn黄灯倒计时3s到0s。第三个状态(state2):红 红 红:该状态维持3s,we红灯倒计时3s到红 0s,sn红灯23s倒计时到20s。 第四个状态(state3):红 绿 绿:该状态维持17s,we绿灯17s倒计时到红 0s,sn红灯20s倒计时到3s。 第五个状态(state4):红 黄 黄: 该状态维持3s,we黄灯3s倒计时到0s,红 sn

4、红灯3s倒计时到0s。 回到原始状态(state0):绿 红 红:回到原始状态,构成一个循环。绿 状态设计代码:state0:begin/设定初状态:南北方向为绿灯,东西方向为红灯(下面同理) sn=2b01; ns=2b01; we=2b10; ew=2b10;if(gl=3d0&gh=3d0&rl=3d0&rh=3d0) begin/设定红绿灯计时起点红灯23s绿灯17s(下面同理) gl=3d7;gh=3d1;rl=3d3;rh=3d2; endelse begin if(gl=0) /十进制的减法设定(下面同理) begin gl=9;gh=gh-1;end else begin gl

5、=gl-1;end if(rl=0) begin rl=9;rh=rh-1;end else begin rl=rl-1;end/判定状态是否结束(看绿灯倒计时是否到达0)(下面同理) if(gl=3d0&gh=3d0) begin next_state=state1;end end endstate1: begin sn=2b11; ns=2b11; we=2b10; ew=2b10;if(yl=3d0) begin yl=3d3;rl=3d6;rh=3d0; endelse begin begin yl=yl-1;end begin rl=rl-1;end if(yl=0) begin n

6、ext_state=state2;end end endstate2:begin sn=2b10; ns=2b10; we=2b10; ew=2b10;if(yl=3d0&yh=3d0) begin rl=3d3;rh=3d2;yl=3d3; endelse begin begin rl=rl-1;yl=yl-1;endif(yl=0) begin next_state=state3; end end endstate3: begin sn=2b10; ns=2b10; we=2b01; ew=2b01;if(yl=3d0&yh=3d0) begin rl=3d0;rh=3d2;yl=3d7;

7、yh=3d1; endelse begin if(rl=0) begin rl=9;rh=rh-1;end else begin rl=rl-1;endif(yl=0) begin yl=9;yh=yh-1;endelse begin yl=yl-1;endif(yl=3d0&yh=3d0) begin next_state=state4;end end endstate4: begin sn=2b10; ns=2b10; we=2b11; ew=2b11;if(yl=3d0&yh=3d0) begin rl=3d3;yl=3d3; endelsebegin begin rl=rl-1;yl=

8、yl-1;endif(rl=3d0&yl=3d0) begin next_state=state0;endend end 分频技术的实现:接入6M的频率,先分成1khz的频率,在由1khz的频率分出1hz的频率。分频代码:/1khz always(posedge clk)/注:接入6M的频率 begin if(count1=d3000) begin clk1khz=clk1khz; count1=4d0; end else count1=count1+4d1; end/1hz always(posedge clk1khz) begin if(count2=d500) begin clk1hz=

9、clk1hz; count2=4d0; end else count2=count2+1d1;数码管的显示:数码管的显示,因为需要同时显示两位数字,故要用到数码管扫描;其次要进行显示,要七段显示译码器。数码管的扫描代码:wei3:0代表八位数码管的八位,在此因为只需显示4位故只将wei只用4位。/该部分作用是让数码管在1hkz下不断的快速扫描,照成它们同时显示的错觉。always(posedge clk1khz)if(wei=3d3) begin wei=3d0; end else wei=wei+3d1;/该部分的num3:0是提供给七段显示器的,而weiscan7:0是用于决定数码管哪一位

10、亮的。always (wei)begin case(wei)3b000:begin num3:0=l3:0;weiscan7:0=8b; end3b001:begin num3:0=h3:0;weiscan7:0=8b; end3b010:begin num3:0=l13:0;weiscan7:0=8b;end3b011:begin num3:0=h13:0;weiscan7:0=8b; endendcaseend倒计时的显示设计: 每一个状态显示的时间和亮的灯的颜色都不一样。所以每个状态时,计时的变量都应改变,才能使得数码管正常显示。代码如下:case(state) state0:begin

11、 l=gl;h=gh;l1=rl;h1=rh;end state1:begin l=yl;h=yh;l1=rl;h1=rh;end state2:begin l=rl;h=rh;l1=yl;h1=yh;end state3:begin l=rl;h=rh;l1=yl;h1=yh;end state4:begin l=rl;h=rh;l1=yl;h1=yh;end endcaseend调试与实验结果 调试: 将代码中always部分中的常来clk1hkz和常来clk1hz都改为clk,然后进行编译,并建立一个vector waveform file文件,找到所有的节点,就可以运行了。仿真波形如下

12、:整体仿真图形:weiscan7:0的仿真图:counter7:0的仿真图:引脚锁定:下载到实验箱后,用导线将clk与p16接起,后接入6M频率即可。实验结果:实验交通灯变化正常,倒计时显示正常。本次实验的心得;本次实验经历了3个礼拜,完全由学生自主学习和实验,我对于这个实验一开始以为比较简单,可是动起手却没有思路。经过查阅图书馆的资料才有那么一点思路,开始动手。经过这次实验我学到了很多,学会数码管的扫描和状态的设定和转换。附页(附总代码):module d(clk,sn,we,ns,ew,counter,weiscan);output 7:0weiscan;reg 7:0weiscan;in

13、put clk;output 1:0sn,we,ns,ew;output 6:0counter;reg 6:0counter;reg 1:0sn,we,ns,ew;reg 3:0rl,rh,yl,yh,gl,gh;reg 3:0wei,num;reg clk1khz,clk1hz;reg 12:0count1;reg 8:0count2;reg 3:0l,h,l1,h1;reg 2:0state,next_state;parameter state0=0,state1=1,state2=2,state3=3,state4=4;/1khz always(posedge clk) begin if

14、(count1=d3000) begin clk1khz=clk1khz; count1=4d0; end else count1=count1+4d1; end/1hz always(posedge clk1khz) begin if(count2=d500) begin clk1hz=clk1hz; count2=4d0; end else count2=count2+1d1; if(wei=3d3) begin wei=3d0; end else wei=wei+3d1;case(state) state0:begin l=gl;h=gh;l1=rl;h1=rh;end state1:b

15、egin l=yl;h=yh;l1=rl;h1=rh;end state2:begin l=rl;h=rh;l1=yl;h1=yh;end state3:begin l=rl;h=rh;l1=yl;h1=yh;end state4:begin l=rl;h=rh;l1=yl;h1=yh;end endcaseendalways (posedge clk1hz)beginstate=next_state;case(state)state0: begin sn=2b01; ns=2b01; we=2b10; ew=2b10;if(gl=3d0&gh=3d0&rl=3d0&rh=3d0) begin

16、 gl=3d7;gh=3d1;rl=3d3;rh=3d2; endelse begin if(gl=0) begin gl=9;gh=gh-1;end else begin gl=gl-1;end if(rl=0) begin rl=9;rh=rh-1;end else begin rl=rl-1;end if(gl=3d0&gh=3d0)begin next_state=state1;end end endstate1: begin sn=2b11; ns=2b11; we=2b10; ew=2b10;if(yl=3d0) begin yl=3d3;rl=3d6;rh=3d0; endels

17、e begin begin yl=yl-1;end begin rl=rl-1;end if(yl=0) begin next_state=state2;end end endstate2:begin sn=2b10; ns=2b10; we=2b10; ew=2b10;if(yl=3d0&yh=3d0) begin rl=3d3;rh=3d2;yl=3d3; endelse begin begin rl=rl-1;yl=yl-1;end if(yl=0) begin next_state=state3; endend endstate3: begin sn=2b10; ns=2b10; we

18、=2b01; ew=2b01;if(yl=3d0&yh=3d0) begin rl=3d0;rh=3d2;yl=3d7;yh=3d1; endelse begin if(rl=0) begin rl=9;rh=rh-1;end else begin rl=rl-1;end if(yl=0) begin yl=9;yh=yh-1;end else begin yl=yl-1;end if(yl=3d0&yh=3d0)begin next_state=state4;end end endstate4:begin sn=2b10; ns=2b10; we=2b11; ew=2b11;if(yl=3d

19、0&yh=3d0) begin rl=3d3;yl=3d3; endelse beginbegin rl=rl-1;yl=yl-1;end if(rl=3d0&yl=3d0) begin next_state=state0;end end endendcaseendalways (wei)begin case(wei)3b000:begin num3:0=l3:0;weiscan7:0=8b; end3b001:begin num3:0=h3:0;weiscan7:0=8b; end3b010:begin num3:0=l13:0;weiscan7:0=8b; end3b011:begin n

20、um3:0=h13:0;weiscan7:0=8b; end endcaseend always (num)begin case(num)4b0000: counter=7b; /04b0001: counter=7b; /14b0010: counter=7b; /24b0011: counter=7b; /34b0100: counter=7b; /44b0101: counter=7b; /54b0110: counter=7b; /64b0111: counter=7b; /74b1000: counter=7b; /84b1001: counter=7b; /9default: co

21、unter=7b; /0 endcase endendmoduleRTL viewer: SEL3.0DATA15.0OUTMUXSEL3.0DATA15.0OUTMUXSEL3.0DATA15.0OUTMUXSEL3.0DATA15.0OUTMUXSEL2.0DATA2.0OUTSELECTORSEL2.0DATA2.0OUTSELECTORSEL2.0DATA2.0OUTSELECTORSEL2.0DATA2.0OUTSELECTORSELDATAADATABOUT0MUX21wei_OUT0Mux8_OUTMux7_OUTMux5_OUTMux6_OUTstate_state0state_state1WideOr0_OUT0gl_OUT0yl_OUT0rl_OUT0Selector0_OUTSelector1_OUTSelector2_OUTSelector3_OUTnext_state_state0next_state_state1sn0_OUT0next_state_state3next_state_state4we0_OUT0h13_OUT0l1_OUT0Mux816 h0001 -Selector0Selector1sn0we0l13.0Selector2Selector3Mux616 h0004 -Mux716 h0002 -Mux516 h0008 -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com